Jenkins自动化部署
半塘 2023/10/29 Jenkins自动化部署
项目部署个人认为还是比较麻烦的事情,那我们就想能每次提交代码后,能够自动化部署就好了。目前Jenkins是自动化部署的主流工具之一,也是比较容易上手的。
# 1、Jenkins介绍
- Jenkins是一种开源的持续集成服务,用于实施软件开发和发布流程。它帮助软件开发和运维团队在构建、测试和部署软件上实现自动化,使团队能够更快、更准确、更可靠地交付产品。
- Jenkins是一种开源持续集成服务器,由Java编写,可以基于Web方式安装和配置。
- Jenkins拥有丰富的插件支持。
- 分布式构建,支持Jenkins能够让多台计算机一起构建/测试。
# 2、自动部署流程
目标需求
XYGALAXY博客项目,提交代码到Gitee上,通过Jenkins自动部署到服务器上。
所需工具
- Docker:本次项目使用Docker部署项目,所以服务器需要安装Docker。
- Docker-compose:Docker的编排工具,用于快速部署项目。
- Jenkins:自动化部署构建工具,需要安装Jenkins。
- Gitee:代码托管平台,需要提交代码到Gitee仓库上,并涉及到Gitee的Webhooks功能。
- Webhooks:Gitee的Webhooks功能,用于触发Jenkins的构建。
Docker和Docker-compose安装可参考Docker详解
自动化执行流程
# 3、Jenkins安装
- 通过docker-compose安装Jenkins,docker-compose.yml文件内容如下:
version: '3'
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
ports:
- 8081:8080
restart: always
volumes:
# 共享宿主机docker资源
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/bin/docker-compose:/usr/local/bin/docker-compose
- /etc/docker:/etc/docker
- /etc/localtime:/etc/localtime
- /etc/profile:/etc/profile
# 配置挂载路径
- /xygalaxy/jenkins/jenkins_data:/var/jenkins_home
- /xygalaxy:/xygalaxy
privileged: true
user: root
deploy:
resources:
limits:
cpus: "0.70"
memory: 3400M
reservations:
memory: 200M
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
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
- 安装完成Jenkins安装必要的插件,这里只需要安装Git和WebHooks插件。
# 4、Jenkins配置博客项目
进入Jenkins,点击新建任务,填写基本信息
配置Gitee仓库地址
配置Generic Webhook Trigger
添加执行Shell脚本,就是执行docker-compose命令构建镜像并运行
shell脚本
# 注意这里必须加上
#!/bin/bash -ilex
# docker-compose 文件路径
dockerComposePath=/xygalaxy/docker-compose.yml
# 镜像名称
dockerImageName="xygalaxy-blog"
# 将打包后的dist文件拷贝到宿主机挂载目录
cp -r ./docs/.vuepress/dist /xygalaxy/xy_galaxy_blog
echo "容器停止中... ..."
docker-compose -f $dockerComposePath down
echo "$dockerImageName镜像删除中... ..."
CON=`docker image ls $dockerImageName | wc -l`
echo "镜像状态:$CON(CON取值为2表示镜像存在,为1镜像不存在)"
if [ $CON == 2 ];
then
echo "$dockerImageName镜像删除"
docker rmi $dockerImageName #镜像存在时执行此行命令
fi
echo "$dockerImageName容器部署中... ..."
docker-compose -f $dockerComposePath up -d
echo "$dockerImageName部署完成"
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
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
Jenkins就配置完成了,可以在Jenkins上直接点击构建看能否执行完Shell脚本,如果可以执行完,说明Jenkins配置成功。
# 5、Gitee配置WebHooks
- Gitee配置WebHook,代码提交到仓库时,WebHooks会自动触发调用Jenkins接口。
配置完成后,就可以点击WebHooks的测试按钮,测试是否可以正常触发Jenkins接口了。配置流程如果遇到问题,可以分段测试,Git只是通过WebHooks跟Jenkins交互,如果Git配置没问题,那么就看Jenkins手动点击构建能够部署项目成功,按照自动部署流程走就行。
# 6、总结
- 这里只是演示了Jenkins自动化部署的一个基本流程,如果是复杂一点的项目,比如后端微服务,就需要考虑给Jenkins安装Maven等打包工具,安装JDK环境等。然后调整Shell脚本。其实Jenkins自动化部署,就是将平常人为操作的部分,通过脚本自动化,实现一键部署。
- Jenkins其实很强大,很多功能可以自己参考官方文档进行探索,像流水线部署,配置化部署等都是可以实现的。