Jenkins 结合 GitLab 进行自动构建

简介

在平时的项目开发过程中,对于项目代码提交后的部署测试,例如测试环境则可以借助 Webhook 的 push 事件触发来自动做测试环境的构建与部署操作。

接下来的配置和测试则是通过在 GitLab 中配置一个项目的 Webhook 的 push 事件,验证当向 GitLab 配置的这个项目 push 代码的时候触发 Jenkins 自动拉取代码并进行构建。

环境

CentOS:7.6
Jenkins:2.176(IP:10.14.6.250)
GitLab:12.2.4(IP:10.14.6.85)

Jenkins 安装 Hook 插件

在 Jenkins 首页点击 Manage Jenkins -> Manage Plugins 然后搜索 Gitlab Hook Plugin 插件和 GitLab Plugin 插件进行安装,该插件是GitLab 事件触发 Jenkins 自动构建使用的。

Jenkins 新建用于自动构建的 Job

配置 Jenkins 用于构建的源代码的拉取方式。

因为是从 Jenkins 上拉取 GitLab 指定仓库的代码,所以需要配置验证凭据。关于 GitLab 的公钥我已经提前在 GitLab 页面加好了,这里如果 Jenkins 中没有配置连接 GitLab 中的凭据,点击对应图中 Add 选项添加凭据即可,我这里也是已经提前配置好了,使用的是 SSH Username with private key 的方式,也就是私钥,所以直接在 Credentials(凭据)这里直接选择的已经加好的 root 账号凭据。
《Jenkins 结合 GitLab 进行自动构建》

配置 Jenkins 构建触发器。
《Jenkins 结合 GitLab 进行自动构建》

配置 Maven 构建。
《Jenkins 结合 GitLab 进行自动构建》

Jenkins 安全设置

Jenkins 关闭「防止跨站点请求伪造」。

在 Jenkins 首页点击 Manage Jenkins -> Configure Global Security 然后找到 Prevent Cross Site Request Forgery exploits(防止跨站点请求伪造) 前面的 √ 去掉。

Jenkins 配置 Anonymous 用户可以有读取和构建项目的权限。

在 Jenkins 首页点击 Manage Jenkins -> Configure Global Security 然后在 Matrix-based security(安全矩阵)进行配置。
《Jenkins 结合 GitLab 进行自动构建》

GitLab 配置 Webhook

这里以 solo 项目为例,在 GitLab 页面中打开 solo 项目后,点击 Settings -> Integrations 配置 Webhook。
《Jenkins 结合 GitLab 进行自动构建》

在 GitLab 中启用允许 Webhook 请求到本地网络。
《Jenkins 结合 GitLab 进行自动构建》

测试自动构建

在 GitLab 中测试刚创建的 Webhook push 事件。
《Jenkins 结合 GitLab 进行自动构建》
如果Webhook测试成功,页面会提示:Hook executed successfully: HTTP 200

接下来通过在本地修改 solo 项目然后手动向 GitLab 服务器中的 solo 项目提交,再次验证 push 代码后触发 Jenkins 自动构建。

[root@wdroot solo]# git config --list
user.name=Administrator
user.email=admin@test.local
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=git@10.14.6.85:root/solo.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
[root@wdroot solo]# 
[root@wdroot solo]# ls
CHANGE_LOGS.html  gulpfile.js  package.json       pom.xml    scripts
Dockerfile        LICENSE      package-lock.json  README.md  src
[root@wdroot solo]# echo '## test' >> README.md
[root@wdroot solo]# git status 
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   README.md
#
no changes added to commit (use "git add" and/or "git commit -a")
[root@wdroot solo]# git add README.md
[root@wdroot solo]# git commit -m "test webhook auto build"
[master 9ddf1ed] test webhook auto build
 1 file changed, 1 insertion(+)
[root@wdroot solo]# git push origin master 
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 297 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To git@10.14.6.85:root/solo.git
   aaef096..9ddf1ed  master -> master

push 提交代码到 GitLab 后,在 Jenkins 的 solo 项目中能看到已经开始自动构建了。
《Jenkins 结合 GitLab 进行自动构建》

构建的控制台输出的部分信息如下:
《Jenkins 结合 GitLab 进行自动构建》

至此,Jenkins 结合 GitLab 进行自动构建的配置和验证完成。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注