Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)(上)+https://developer.aliyun.com/article/1492251
5、点击“New Item” 选中Maven Project,输出item 名称,选择"OK"
6、配置job的Gitee源代码仓库信息
配置Gitee代码仓库的信息
仓库授权
7、配置打包方式
8、配置执行脚本
执行脚本参考内容
#!/bin/bash # 服务名称 SERVER_NAME=xxxx服务名 # 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行 JAR_NAME=demo-0.0.1-SNAPSHOT # 源jar路径 #/usr/local/jenkins_home/workspace--->jenkins 工作目录 #demo 项目目录 #target 打包生成jar包的目录 JAR_PATH=/var/jenkins_home/workspace/xxxx服务名/target # 打包完成之后,把jar包移动到运行jar包的目录 JAR_WORK_PATH=/var/jenkins_home/workspace/xxxx服务名/target echo "查询进程id-->$JAR_NAME" # print $1 这里的1是PID所属的列名。可以在jenkis中使用ps -ef 命令确定 PID=`ps -ef | grep "$JAR_NAME" | awk '{print $1}'` 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 BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &
9、保存配置。
10、开始Build,第一次构建时间较长。建议可以将Maven镜像修改为国内镜像。
11、观察发现Build成功
12、映射端口号, 开放容器内部的应用端口号。
建议先删除原先的容器,避免8080端口的占用。由于我们做了数据卷挂载,所有重启容器也不需要重新配置Jenkins。
docker run -d -p 8080:8080 -p 8082:8082 -p 50000:50000 -v jenkins_data:/var/jenkins_home --name firstJenkis jenkinsci/blueocean
13、回到Jenkins界面,重新构建。等待构建完成后访问端口。
14、在IDEA中进行修改,并提交到Gitee。
回到Jenkins重新Build,观察日志发现自动在下载master分支下的最新版本。
15、等待构建完成,重新访问,okey,so much for this chapter!
Jenkins + Docker + Gitee 自动化实操
Builder Trigger 介绍
实现自动化部署,只需要配置好构建触发器以及触发的事件即可。前往任务配置的触发器构建: Configure -> Build Triggers 选项卡
Enabled Gitee triggers
勾选您所需要的构建触发规则,如Push Event
,Opened Merge Request Events
勾选的事件会接受WebHook,触发构建。目前支持触发事件有:
- Push Events :推送代码事件
- Commit Comment Events :评论提交记录事件
- Opened Merge Request Events :提交 PR 事件
- Updated Merge Request Events :更新 PR 事件
- Accepted Merge Request Events :接受/合并 PR 事件
- Closed Merge Request Events :关闭 PR 事件
- Approved Pull Requests : 审查通过 PR 事件
- Tested Pull Requests :测试通过 PR 事件
- Build Instruction Filter
None
: 无过滤[ci-skip] skip build
:commit message 或者 PR 说明包含[ci-skip]
时,跳过构建触发。[ci-build] trigger build
:commit message 或者 PR 说明包含[ci-build]
时,触发构建。
Ignore last commit has build
该选项可以跳过已经构建过的 Commit 版本。Cancel incomplete build on same Pull Requests
该选项在 PR 触发构建时,会判断是否存在相同 PR 且未完成的构建,有则取消未完成构建,再进行当前构建。Ignore Pull Request conflicts
该选项在 PR 触发构建时,会根据 PR 冲突情况选择是否进行构建。Allowed branches
可以配置允许构建的分支,目前支持分支名和正则表达式的方式进行过滤。Secret Token for Gitee WebHook
该选项可以配置 WebHook 的密码,该密码需要与Gitee WebHook配置的密码一致方可触发构建。- 注意:若 PR 状态为不可自动合并,则不触发构建。
实操
1、配置Build Trigger
生成密钥
2、映射webHook,并进行添加绑定。
3、在Gitee手动测试,发现成功
4、提交代码,
当提交后,发现该job自动build 中。
测试成功!!! 散花。
FAQ
配置git仓库后Jenkins从git仓库拉取地址失败,出现错误“Host Key Vertication Failed”
1、需要在Jenkis容器中生成公钥,并配置到对应的Git远程仓库。
2、注意使用类似命令git ls-remote -h 仓库地址 HEAD
来注册下远程仓库在Jenkis容器内部的信任。
Jenkins 和 Gitee 配置自动部署时,在Gitee的测试中显示“ HTTP ERROR 403 anonymous is missing the Job/Build permission”
1、在Jenkins上安装Role-based Authorization Strategy插件。
2、在Jenkins的“Manage Jenkins-> Configure Global Security”配置如下图的权限。
参考地址1:https://gitee.com/oschina/Gitee-Jenkins-Plugin/issues/IWZSR
参考地址2: https://www.cnblogs.com/Dy1an/p/11202544.html
参考地址3: https://gitee.com/help/articles/4193
关注公众号:熊猫Jay字节之旅,了解更多 AI 技巧 ~