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

posted @   zpchcbd  阅读(208)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示