通俗来讲就是本地项目 push 到 gitlab 后, Jenkins 能够识别到项目的更新并自动构建部署;
本文以实际操作的方式来表述详细配置过程及避开配置 Jenkins 时的坑. 默认电脑已经安装了虚拟机, 默认gitlab 上已经有了你想要部署的项目, 部署了 maven 和 jdk 并配置了环境变量!!!
Jenkins + Gitlab
第一步: 检查环境
1 执行指令 java -version
检查是否已安装了 java 环境:
2 执行指令 mvn -v
检查是否已经安装了 maven:
3 执行指令 echo $JAVA_HOME
检查 java 环境变量是否已经配置好, 这里的地址后面会用到:
4 执行指令 echo $MAVEN_HOME
检查 maven 环境变量是否已经配置好, 这里的地址后面也会用到:
5 虚拟机也要安装 git, 执行指令 which git
查看位置, 后面会用到;
第二步: 下载 jenkins 镜像并部署
1 需要注意如果是 jdk 8 需要下载对应 jdk 8 对应的版本,链接: 🔗下载地址, 提交到虚拟机:
2 执行指令 rpm -ivh jenkins-2.346.3-1.1.noarch.rpm
部署 jenkins;
3 执行指令 find / -name jenkins
检查是否已经安装成功:
4 配置一下端口号, 指令: vi /usr/lib/systemd/system/jenkins.service
, 修改如下:
这里我改成了 8090;
5 重新加载配置文件, 指令: systemctl daemon-reload
.
6 启动指令: systemctl start jenkins
; 重新启动指令: systemctl restart jenkins
; 停止指令: systemctl stop jenkins
.
7 启动成功后, 初次登录要输入管理员密码, 指令: cat /var/lib/jenkins/secrets/initialAdminPassword
.
第三步: 启动成功后, 配置 jdk / git / maven
1 配置 jdk: 别名可以随便写, JAVA_HOME 就是虚拟机 java 的环境变量, 前面有指令;
2 配置 git;
3 配置 maven, 地址就是虚拟机 maven 环境变量的地址;
第四步: 新建一个 item; 如果你的项目是一个 maven 项目可以如下选择
对项目进行配置:
1 建议限制构建项目的缓存记录, 否则构建记录多了后会导致空间不足, 这里我设置的是两天会自动清理缓存, 构建记录不会超过 5 个;
2 git 源码管理进行配置:
如果报以下错误需要在 url 链接加上您的 gitlab 用户名和密码, 格式为 http://用户名:密码@*******.54:7000/Li/yuan.git
添加 Credentials 证书凭证, 用户名和密码就是 gitlab 的账号和密码;
查看 gitlab 上项目分支, 我的是 main:
3 构建触发器
格式:
每天凌晨3:00 跑一次: H 3 * * *
每隔5分钟构建一次: H/5 * * * *
每五小时构建一次: H H/5 * * *
每天中午12点定时构建一次: H 12 * * *
每天下午 17点前 定时构建一次: H 17 * * *
每15分钟构建一次: H/15 * * * *
4 编写执行脚本; 可以当做模板来写, 只不过需要修改以下信息:
执行脚本如下,方便复制:
#!/bin/bash
# #!/bin/bash是指此脚本使用/bin/bash来解释执行。其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
# #!/bin/bash只能放在第一行,如果后面还有#!,那么只能看成是注释。
#服务名称
SERVER_NAME=SpringBoot_AutotTest
#源jar路径,mm打包完成之后,target目录下的jar包名称,也可选择成为war包,war包 可移动到Tomcat的。
JAR_NAME=swaggerdemo1-0.0.1-SNAPSHOT
#target打包生成jar包的目录
JAR_PATH=/var/lib/jenkins/workspace/Yuan/swaggerdemo1/target # 以具体的打包位置为准,可以先构建一次项目,通过日志查看打包的目录
#打包完成之后,把iar包移动到运行jar包的目录
JAR_WORK_PATH=/var/lib/jenkins/workspace/Yuan/swaggerdemo1/target
# echo "查询进程id-->$SERVER_NAME"
# PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
# echo"得到进程ID: $PID"
# echo"结束进程"
# for id in $PID
# do
# kill -9 $id
# echo "killed $id"
# done
# echo"结束进程完成"
#复制jar包到执行目录_
echo" 复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo"复 制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar
#前台启动
#java -jar $JAR_NAME.jar
#后台启动
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &
这三处的信息可以查看虚拟机上的信息直接复制过来即可, 操作如下:
进入到此目录下, 这里的 JAR_NAME 就是 target 目录下包的名称, 如果没有此包的话可以先在虚拟机上跑一下, 这样地址等信息可以直接复制过来, 方便至极!!!
5 修改 pom 文件; 这个路径就是上面 workspace 中项目中的 pom.xml 文件路径, 直接从虚拟机上拷贝过来路径即可;
6 配置邮箱通知;
配置邮箱时可能出现的问题及解决办法:
Default Recipients
- 通过Manage Jenkins进入Configure System
- 查看Default Recipients这一栏是否填写了收件人
Project Recipient List
- 进入具体的Job
- 查看Post-build Actions里有没有添加Editable Email Notification这个功能
- 不要勾选Disable Extended Email Publisher这个选项栏
- 查看Project Recipient List这一栏有没有填写收件人
Recipient List
- 还是进入Editable Email Notification这一栏
- 点击进入右下角Advanced Settings…
- 查看Triggers这一栏有没有设置对应触发条件,比如Failure-Any和Success
- 默认的Developers不会发送给收件人,需要选择Recipient List.