基于centos7实现Jenkins轮询SCM构建项目
上一篇文章,主要演示了基于Jenkins定时构建项目。这种方式可以让我们的构建方式变得更加灵活,但还不够灵活,有时我们可能希望在项目发生更新时,就立马进行构建。这时,我们可以使用轮询项目的版本控制系统,如果有变更,则触发构建。
8.4 轮询SCM(轮询版本控制系统)构建:
通过轮询扫描版本控制系统的代码是否有更新,如果有的话,则触发项目构建。
8.4.1 创建新项目:
创建一个新的pipeline项目,代码从gitlab拉取。pipeline的脚本可以自由选择在Jenkins端写,也可以选择在gitlab项目中拉取Jenkinsfile文件。这里选择的是拉取Jenkinsfile文件构建。
8.4.2 更新版本内容:
# 在本地仓库的项目下添加一个新文件,然后推送到gitlab服务器:
[root@node1 jpress]# pwd
/data/objects/jpress
[root@node1 jpress]# vim updatefile
[root@node1 jpress]# cat updatefile
this is test file
[root@node1 jpress]# git add .
[root@node1 jpress]# git commit -m "add updatefile"
[master 386800f] add updatefile
1 file changed, 1 insertion(+)
create mode 100644 updatefile
[root@node1 jpress]# git push
...
# 输入用户名和密码:
Username for 'http://192.168.75.121': xiaoming
Password for 'http://xiaoming@192.168.75.121':
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 285 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To http://192.168.75.121/dev1_group/jpress.git
c8321a5..386800f master -> master
8.4.3 查看构建情况:
在10:42分钟的时间,轮询版本库,发现版本更新,触发了项目构建。
到此,我们就实现了基于扫描scm构建项目,不过有利有弊,轮询scm构建的效率相对较低,因为是Jenkins主动定期扫描,浪费资源。在条件允许下(版本变更),可以让gitlab主动推送构建请求。