Jenkins+Gitlab CICD流程配置
Jenkins+Gitlab CICD自动触发构建配置Gitlab配置注册账号什么的就不赘述了, 建一个测试项目或者选择已有的项目, 随便 commit 几条内容按下图步骤创建账号的 access token , 用于 Jenkins 调用 GitLab 的 API记下生成的tokenJenkins安装配置下载Jenkins: 下载地址现在后解压到目录即可配置JAVA_HO...
Jenkins+Gitlab CICD自动触发构建配置
Gitlab配置
注册账号什么的就不赘述了, 建一个测试项目或者选择已有的项目, 随便 commit 几条内容
- 按下图步骤创建账号的 access token , 用于 Jenkins 调用 GitLab 的 API
记下生成的token
Jenkins安装配置
下载Jenkins: 下载地址
现在后解压到目录即可
配置JAVA_HOME
安装JDK在此不再说明,自己搜索安装即可
cat ~/.bash_profile
# 增加或者更改如下内容即可
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export JAVA_HOME=/workbase/software/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
配置Tomcat 8
安装Tomcat同样不再说明
注意: 更改${TOMCAT_HOME}/conf/server.xml配置
<!--<Listener className="org.apache.catalina.core.JasperListener" />-->
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Host name="localhost" appBase="webapps" unpackWARs="true" >
<!-- docBase 替换为自己的目录即可 -->
<Context crossContext="true" docBase="/workbase/software/jenkins.war" reloadable="true" allowLinking="true" path=""/>
安装插件
-
Git Parameter ( 用于参数化构建中动态获取项目分支 )
-
Generic Webhook Trigger ( 用于解析 Webhook 传过来的参数 )
-
GitLab ( 用于推送构建结果给 GitLab )
配置Jenkins Gitlab
-
添加Gitlab凭证
-
配置Gitlab连接
-
配置项目
-
参数说明
-
GitLab Connection 选择上面添加的 GitLab 连接 ( Jenkins )
-
勾选 参数化构建过程, 添加
Git Parameter
类型的参数ref
, 这样构建的时候就可以指定分支进行构建。 -
Source Code Management
选择Git
, 添加项目地址和授权方式 ( 帐号密码 或者 ssh key ) , 分支填写构建参数$ref
如果选择sshkey
的方式需要在Jenkins
服务器启动jenkins
服务的用户生成公钥配置在GitLab
服务器上。 -
Build Triggers 选择 Generic Webhook Trigger 方式用于解析 GitLab 推过来的详细参数。
ref
: 通过Gitlab API
请求Request body
中获取$.ref
获取分支或者tagobject_kind
: 通过Gitlab API
请求Request body
中获取$.object_kind
操作类型git_ssh_url
:通过Gitlab API
请求Request body
中获取$.project.git_ssh_url
项目的ssh地址commits_id
: 通过Gitlab API
请求Request body
中获取$.commits[0].id
该次提交的ID
Token
: 自己通过shell随机生成一个即可,也可以自定义任意值Optional filter
: 使用正则表达式对 Text 进行匹配, 匹配成功才允许触发构建Expression
:预设的待匹配项Text
: 匹配的内容
-
Build 内容按自己实际的项目类型进行调整, 使用 Maven 插件 或 脚本 等等。
-
Post-build Actions 添加 Publish build status to GitLab 动作, 实现构建结束后通知构建结果给 GitLab
-
-
Gitlab
添加webhooks
- GitLab 的项目页面中, 添加一个 Webhook ( http://JENKINS_URL/generic-webhook-trigger/invoke?token=<上面 Jenkins 项目配置中的 token> ) , 触发器选择 标签推送事件。
创建完成点击测试如果报错如下:
Requests to the local network are not allowed
解决办法: 允许 GitLab 本地网络发送 Webhook 请求
新建任务测试
- 本地推送tag到远程
git push moshu stable_production-20200305
GitLab
中查看
GitLab
页面可以看到触发了 Webhook , View details 查看请求详情, Response body 中 triggered 字段值为 true 则表示成功触发了 Jenkins 进行构建
Gitlab
查看构建结果
Jenkins
查看
完成
额外配置
Jenkin进行Git检出的代码有存在与本地不同的情况(有一些大文件不需要提交,但是在打包又会用到),这种情况如何处理?
我处理的方式: 使用rsync同步文件的功能将本地的文件推送到Jenkins Git检出的目录,并且保持与本地同步(配合.gitignore进行使用)
代码:
/usr/bin/rsync -arvzut --delete --exclude-from=./exclude_rules --progress ${SRC} ${REMOTE_USER}@${REMOTE_ADDR}:${DEST}
# 需要过滤的文件
cat ./exclude_rules
- .git/
- .idea/
- .vscode/
- .DS_Store
更多推荐
所有评论(0)