自动化部署流程
1 开发同事在gitlab上打了一个tag
2 gitlab把tag事件推送到Jenkins
3 Jenkins获取tag源码,编译,打包,构建镜像
4 通知测试同事进行测试
5 Jenkins push镜像到镜像仓库
6 Jenkins执行远程脚本
6.1 远程服务器pull指定镜像
6.2 停止老版本容器,启动新版本容器
7 通知部署结果
准备工作-新建gitlab项目
在gitlab建立新项目,idea新建项目,创建git仓库,绑定gitlab项目并上传
1 于gitlab页面new project
输入project name
选择group
2 idea 新建hello项目
3 idea 为hello项目创建git仓库
idea -> VCS -> Import into Version Controller -> Create Git Repository
4 上传至gitlab
add
commit + 绑定gitlab项目
push
主要步骤
主要完成下面三件事情
1 jenkins和gitlab配置事件推送
2 jenkins从gitlab拉取项目至服务器
3 jenkins执行shell部署项目(mavan build & docker)
jenkins从gitlab拉取项目至服务器
1 jenkins新建项目
2 于项目的confiure -> Source Code Management 配置repositories
gitlab url 和 gitlab凭证()
3 build这里先随便写写,后续再处理
4 进入项目,点击Build with Parameters,build
点击项目下方Build #1 (1为顺序号,后续会自动增加)
可以在Console Output见到拉去和构建过程
注意,需要于linux 服务器设置linux id jenkins 获得/var/lib/jenkins/workspace的修改权限
jenkins执行shell部署项目(mavan build & docker)
1 因为要执行maven命令,所以要在jenkins配置maven的全局变量
2 因为要执行docker命令,所以将jenkins用户添加到docker组。注意,添加后需要重启jenkins才能生效
3 project configure build写入对应的shell
echo 开始构建
pwd
echo 'mvn clean install'
mvn clean install
echo 'docker build'
docker stop hello||true
docker rm hello||true
docker rmi hello||true
docker build -t hello:0.0.1 .
docker run -it -d -e TZ="Asia/Shanghai" --name hello -p 9998:9998 hello:0.0.1
echo 构建完成
4 进入项目,点击Build with Parameters,build
项目构建成功,点击项目连接可以正常访问(http://192.168.1.117:9998/hello)
jenkins和gitlab配置事件推送
发布一个版本时,我们通常先在版本库中打一个标签(tag),这里我们设置在打tag的时候会自动进行构建。
1 用户setting 产生api token,该token使用在gitlab 推送url中用户登录
2 project configure Build Triggers选择Generic Webhook Trigger
Post content parameters增加参数ref,用作检验
Token 输入testwebhooktoken用作后面标志项目
Optional filter 中设置当参数ref 存在dev字符串时候才执行
3 gitlab选择项目,在项目setting -> Integrations中增加规则
选择Tag push events 即添加tag时候发动
url如下
http://admin:1199955825a908aba7a0eb9c217145dfeb@192.168.1.117:8080/generic-webhook-trigger/invoke?token=testwebhooktoken
1199955825a908aba7a0eb9c217145dfeb 为用户api token,用作登录
token=testwebhooktoken 为项目标识
4 现在于gitlab(或idea增加tag后push,记得要勾选push tag),都可以触发项目构建
完整地进行一次测试
1 idea clone项目
2 idea 修改HelloController 返回的message,并commit
3 idea 新增tag,必须包括dev
4 idea push(勾选pusj tag)
5 gitlab看到tag已经新增
6 gitlab 于项目setting -> Integrations,edit规则,可以看到最新发送情况,view details可以看到送了什么参数,这里可以看到ref里面有上面新增的tag id
7 jenkins 点击项目可以见到最新的build history,点击进去可以看到构建情况,Console Output可以看到执行时候的控制台信息
8 项目构建需要一定时间,在jenkins看到构建完成后,于http://192.168.1.117:9998/hello可以看到最新的message