[jenkins]Jenkins安装及使用教程
文章目录
Jenkins安装及使用教程
一、jenkins是什么?
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
二、jenkins安装
1.源码安装jenkins(推荐)
1) 安装java
2) war安装
-
1 2
mkdir -p /root/jenkins-data && cd /root/jenkins-data wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/latest/jenkins.war
-
配置
1 2 3 4 5 6
vim /etc/profile [添加内容] export JENKINS_HOME=/root/jenkins-data export JENKINS_LOGFILE=/root/jenkins-data/jenkins.log source /etc/profile
-
运行命令jenkins
1 2 3
java -Xms128m -Xmx256m -jar /root/jenkins-data/jenkins.war --httpPort=9090 nohup java -Xms128m -Xmx256m -jar /root/jenkins-data/jenkins.war --httpPort=9090 > /root/jenkins-data/jenkins.log 2>&1 &
-
提供一个jenkins启动脚本,可以自行修改
脚本保存至/root/jenkins.sh,使用方法:
1 2 3
vim /root/jenkins.sh #新建文件保存脚本内容 chmod 777 /root/jenkins.sh sh jenkins.sh start|stop|restart
脚本内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
#!/bin/bash # 在执行过程中若遇到使用了未定义的变量或命令返回值为非零,将直接报错退出 set -eu # 检查参数个数 if [ "${#}" -lt 1 ]; then echo " 脚本使用示例: sh jenkins.sh start|stop|restart " exit fi # 获取脚本第一个参数 APP_OPT=${1} # 端口 APP_PORT=9090 # 名称 APP_NAME=jenkins # jar名 | war名 APP_JAR=${APP_NAME}.war # 程序根目录 APP_JAR_HOME=/root/jenkins-data # 日志名 APP_LOG_NAME=jenkins-run # 日志根目录 APP_LOG_HOME=/root/jenkins-data # 程序运行参数 JAVA_OPTS="--httpPort=${APP_PORT}" echo "本次操作服务名:[${APP_NAME}]" echo "本次操作选择:[${APP_OPT}]" # 停止 function stop(){ echo "<-------------------------------------->" echo "[${APP_NAME}] ... stop ..." # 查看该jar进程 pid=`ps -ef | grep ${APP_NAME} | grep -v 'grep' | awk '{print $2}'` echo "[${APP_NAME}] pid="${pid} # 存在则kill,不存在打印一下吧 if [ "${pid}" ]; then kill -9 ${pid} # 检查kill是否成功 if [ "$?" -eq 0 ]; then echo "[${APP_NAME}] stop success" else echo "[${APP_NAME}] stop fail" fi else echo "[${APP_NAME}] 进程不存在" fi } # 运行 function start(){ echo "<-------------------------------------->" echo "[${APP_NAME}] ... start ..." cd ${APP_JAR_HOME} echo "当前路径:`pwd`" # 赋予可读可写可执行权限 chmod 777 ${APP_JAR} echo "启动命令: nohup java -jar ${APP_JAR} ${JAVA_OPTS} >> ${APP_LOG_HOME}/${APP_LOG_NAME}.log 2>&1 &" nohup java -jar ${APP_JAR} ${JAVA_OPTS} >> ${APP_LOG_HOME}/${APP_LOG_NAME}.log 2>&1 & if [ "$?" -eq 0 ]; then echo "[${APP_NAME}] start success" else echo "[${APP_NAME}] start fail" fi } # 重启 function restart(){ echo "<-------------------------------------->" echo "[${APP_NAME}] ... restart ..." stop start } # 多分支条件判断执行参数 case "${APP_OPT}" in "stop") stop ;; "start") start ;; "restart") restart ;; *) echo " 提示:不支持参数 命令 -> ${APP_OPT}" ;; esac
3) rpm安装
-
下载安装
1 2 3
cd /data/tools wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.332.1-1.1.noarch.rpm rpm -ivh jenkins-2.332.1-1.1.noarch.rpm
-
默认配置文件位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
JENKINS_WAR="/usr/share/java/jenkins.war" JENKINS_CONFIG="/etc/sysconfig/jenkins" JENKINS_PID_FILE="/var/run/jenkins.pid" JENKINS_LOCKFILE="/var/lock/subsys/jenkins" JENKINS_DAEMON="/etc/init.d/jenkins" JENKINS_LOGFILE="/var/log/jenkins/jenkins.log" [root@node1 /data]# rpm -ql jenkins /etc/init.d/jenkins /etc/logrotate.d/jenkins /etc/sysconfig/jenkins /usr/bin/jenkins /usr/lib/systemd/system/jenkins.service /usr/sbin/rcjenkins /usr/share/java/jenkins.war /usr/share/jenkins /usr/share/jenkins/migrate /var/cache/jenkins /var/lib/jenkins /var/log/jenkins
-
配置修改
修改jenkins本身配置
1 2 3 4 5 6
cp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak vim /etc/sysconfig/jenkins [修改内容] JENKINS_HOME="/root/jenkins-data" #设置工作目录 JENKINS_USER="root" #设置jenkins用户为root JENKINS_PORT="9090" #设置访问端口为9090
修改jenkins启动文件配置,修改java命令路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
[root@node1 /data/tools]# which java /usr/local/java/bin/java [root@node1 /data/tools]# vim /etc/init.d/jenkins [root@node1 /data/tools]# vim /etc/rc.d/init.d/jenkins [修改内容] candidates=" /etc/alternatives/java /usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java /usr/lib/jvm/java-11.0/bin/java /usr/lib/jvm/jre-11.0/bin/java /usr/lib/jvm/java-11-openjdk-amd64 /usr/bin/java /usr/local/java/bin/java #新增行 " systemctl daemon-reload service jenkins start
-
设置开机启动
1
systemctl enable jenkins
-
开启关闭jenkins服务
1
systemctl start/stop/restart jenkins
4) yum安装(推荐)
-
下载安装
1 2 3
[root@localhost ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo [root@localhost ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key [root@localhost ~]# yum -y install jenkins
-
默认配置文件位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# WAR包 /usr/lib/jenkins/jenkins.war # 配置文件, 修改用户为:root /etc/sysconfig/jenkins # 默认的JENKINS_HOME目录 /var/lib/jenkins/ # Jenkins日志文件 /var/log/jenkins/jenkins.log [root@node1 /data]# rpm -ql jenkins /etc/init.d/jenkins /etc/logrotate.d/jenkins /etc/sysconfig/jenkins /usr/bin/jenkins /usr/lib/systemd/system/jenkins.service /usr/sbin/rcjenkins /usr/share/java/jenkins.war /usr/share/jenkins /usr/share/jenkins/migrate /var/cache/jenkins /var/lib/jenkins /var/log/jenkins
-
配置修改
1 2 3 4 5 6
cp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak vim /etc/sysconfig/jenkins [修改内容] JENKINS_HOME="/root/jenkins-data" #设置工作目录 JENKINS_USER="root" #设置jenkins用户为root JENKINS_PORT="9090" #设置访问端口为9090
-
启动并设置开机启动
1 2
service jenkins start chkconfig jenkins on
2.docker安装jenkins
1) 拉取镜像
建议使用的Docker映像是jenkinsci/blueocean
image(来自 the Docker Hub repository)。 该镜像包含当前的长期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。
|
|
2) 运行容器
|
|
3) 容器操作
|
|
4) 容器内安装软件
|
|
3.初始化jenkins
访问 http://{主机ip}:8080 进行Post-installation setup wizard安装
-
修改jenkins的插件下载源
1 2 3 4 5 6
[root@node1 ~]# cd /root/docker/jenkins-data/updates/ [root@node1 ~/jenkins-data/updates]# ls default.json hudson.tasks.Maven.MavenInstaller [root@node1 ~/jenkins-data/updates]# cp default.json default.json.bak [root@node1 ~/jenkins-data/updates]# sudo sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.json && sudo sed -i 's#www.google.com#www.baidu.com#g' default.json [root@node1 ~/jenkins-data/updates]#
-
重启jenkins
1 2 3
systemctl restart jenkins #docker 安装: docker restart jenkins-blueocean
-
解锁 Jenkins
页面上显示的密码文件路径是容器内的,因为做了文件夹映射,替换为主机地址即可
1 2 3 4
[root@node1 ~]# cd /root/docker/jenkins-data [root@node1 ~/jenkins-data]# cat secrets/initialAdminPassword 12889e7f0fa94aafbcc2f83081ec0475 [root@node1 ~/jenkins-data]#
-
选择“Install suggested plugins”安装默认的插件
等待系统安装插件完成
-
下载完成之后会进入一个创建账号的界面,这里自己创建一个就行,后续登录就用这个账号。
三、jenkins配置
1.管理系统配置
进入管理Jenkins–>系统配置
2.流水线配置
-
创建流水线job,配置名称
-
设置流水线代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
pipeline { agent any stages { stage('Build') { steps { sh 'cd /workspace/srv-gw-infinity/build' sh 'sh build.sh' } } } post { always { echo 'This will always run' } success { echo 'This will run only if successful' } failure { echo 'This will run only if failed' } unstable { echo 'This will run only if the run was marked as unstable' } changed { echo 'This will run only if the state of the Pipeline has changed' echo 'For example, if the Pipeline was previously failing but is now successful' } } }
3.设置自定义风格工程配置
-
设置git
-
设置构建ssh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#局部变量(执行文件名称) project_name="infi-srv-gw" #1.杀掉之前正在运行的程序 go_id=`ps -ef|grep "./${project_name}" |grep -v "grep" | awk '{print $2}'` if [ -z "$go_id" ]; then echo "[go pid not found]" else #杀掉进程 kill -9 $go_id echo "killed $go_id" fi #2.清除旧的编译文件 echo "clean old file" rm -rf ${WORKSPACE}/build/bin/${project_name} rm -rf ${WORKSPACE}/build/bin/${project_name}.log #3.进入工作目录,构建工作 cd ${WORKSPACE} pwd go version go mod tidy cd build sh build.sh ls bin #4.运行构建后的文件 cd ${WORKSPACE}/build/bin if [ -f "${project_name}" ]; then echo "strat new process" chmod 777 ${project_name} #这里要防止nohup不执行,添加了一个BUILD_ID BUILD_ID=DONTKILLME nohup ./${project_name} >${project_name}.log 2>&1 & else echo "executable file not found,quit" fi
文章作者 ZhangKQ
上次更新 2022-02-10