分类 Jenkins 下的文章

上一篇文章,主要演示了基于Jenkins定时构建项目。这种方式可以让我们的构建方式变得更加灵活,但还不够灵活,有时我们可能希望在项目发生更新时,就立马进行构建。这时,我们可以使用轮询项目的版本控制系统,如果有变更,则触发构建。

8.4 轮询SCM(轮询版本控制系统)构建:

通过轮询扫描版本控制系统的代码是否有更新,如果有的话,则触发项目构建。

8.4.1 创建新项目:

创建一个新的pipeline项目,代码从gitlab拉取。pipeline的脚本可以自由选择在Jenkins端写,也可以选择在gitlab项目中拉取Jenkinsfile文件。这里选择的是拉取Jenkinsfile文件构建。

67347-2nfh7umhsyp.png

03906-maj56agjhp.png

72130-tsehit64vt.png

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

01465-4pie65qf6i9.png

8.4.3 查看构建情况:

在10:42分钟的时间,轮询版本库,发现版本更新,触发了项目构建。

99855-f5fv7qbkqrd.png

36446-x75hdie7wn.png

到此,我们就实现了基于扫描scm构建项目,不过有利有弊,轮询scm构建的效率相对较低,因为是Jenkins主动定期扫描,浪费资源。在条件允许下(版本变更),可以让gitlab主动推送构建请求。