Jenkins + Gitlab 实现项目自动化构建及部署
前言:Jenkins + Gitlab 实现项目自动化构建及部署笔记
参考文章:https://blog.csdn.net/m0_62999427/article/details/138972368
参考文章:https://blog.csdn.net/weixin_56547063/article/details/142028026
Jenkins 编译环境配置
接着在Jenkins先打开全局配置,因为这边jeecg-boot编译需要用到pom.xml,所以这边配置maven和jdk用于构建的环境
jdk的环境部署可以通过安装插件Maven Integration plugin实现,如下图所示
注意:通过插件安装的时候,自己需要准备好一个oracle的账号

在安装的过程中发现该插件存在问题,最终还是手动下载了一个安装包,如下图所示

手动指定jdk的目录环境,如下图所示

maven的环境部署可以通过安装插件Maven Integration plugin实现,如下图所示

然后手动指定一个版本就可以直接进行安装了

配置构建触发器
首先在Gitlab中创建一个代码仓库,其中放入想要在Jenkins项目构建的代码,我这边放的是jeecg-boot项目,语言是Java开发的,如下图所示
这边将github中的jeecg-boot项目推送到gitlab中,这个将其作为后续自动化构建jenkins的项目准备


新建一个新的maven构建任务,我这里命名为jeecg,如下图所示

注意:因为gitlab默认的分支是main,而默认jenkins的分支为master,所以这里的构建任务中需要标注修改下

配置好对应的git凭证,用于jenkins编译的时候进行拉取


重新打开该项目的配置界面,找到如下配置trigger的界面,想要在gitlab推送触发jenkins编译,这边需要进行配置

其中的Secret Token作为jenkins和gitlab之间通信的token,如下图所示

设置GitLab Webhook
Gitlab中找到自己推送的代码项目仓库,选择Settings -> Webhooks,如下图所示

添加一个Webhook,每次推送都进行触发,通常可以选择Push events,以便每次推送代码都会触发Webhook,url配置为上面jenkins的trigger地址

我们这边新增一个cicd.txt的文件,推送到gitlab仓库中,然后来查看webhook是否成功触发,如下图所示


自动化构建脚本
到这里为止,推送自动编译包的流程已经完成了,接下来就是如何进行自动部署到服务器上的操作,jenkins在"Post Steps"流程中提供了编译后的后续操作自动化操作
#!/bin/bash
echo "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"
echo "待部署的应用服务器,可多台"
# 部署项目的ip
server_ips="172.16.7.18"
for server_ip in ${server_ips[@]}
do
echo "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}
mkdir -p $DIR/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi
EOF
echo "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar
echo "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar
#jenkins配置中引入关闭和启动脚本
sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh
EOF
done


浙公网安备 33010602011771号