前提:
jenkins已经安装gitlab plugin 插件,且版本大于等于1.5.12
jenkins插件各个版本的链接:http://updates.jenkins-ci.org/download/plugins/gitlab-plugin/
通过upload plugin即可安装指定版本
一.在Jenkinsfile文件的triggers下增加一个触发器
gitlab(triggerOnPush: true, triggerOnMergeRequest: false, branchFilterType: 'All')
更改后push到远端
triggerOnPush: true 代表:代码有push就会触发job
triggerOnMergeRequest: false 代表:代码有merge不会触发
branchFilterType:
'All' 代表所有分支均会触发;NameBasedFilter:基于分支名进行过滤,多个分支名使用逗号分隔;RegexBasedFilter:基于正则表达式对分支名进行过滤
'includeBranchesSpec':基于branchFilterType值,输入期望包括的分支的规则
'excludeBranchesSpec':基于branchFilterType值,输入期望排除对分支的规则
tips:如果要配置插件在Declarative构建中支持的任何可选作业触发器,请使用triggers块。可配置触发器选项的完整列表如下:
triggers { gitlab( triggerOnPush: false, triggerOnMergeRequest: true, triggerOpenMergeRequestOnPush: "never", triggerOnNoteRequest: true, noteRegex: "Jenkins please retry a build", skipWorkInProgressMergeRequest: true, ciSkip: false, setBuildDescription: true, addNoteOnMergeRequest: true, addCiMessage: true, addVoteOnMergeRequest: true, acceptMergeRequestOnSuccess: false, branchFilterType: "NameBasedFilter", includeBranchesSpec: "release/qat", excludeBranchesSpec: "", pendingBuildName: "Jenkins", cancelPendingBuildsOnUpdate: false, secretToken: "abcdefghijklmnopqrstuvwxyz0123456789ABCDEF") }
二.在gitlab自己的项目中增加webhook
1.url为:http://jenkins-test.nevint.com:8088/project/你的job名字
例如我的是:http://jenkins-test.nevint.com:8088/project/****
secret token可以为空
2.点击save changes
3.点击test--》push events,如果返回200 表示webhooks 设置成功
三.手动触发一下job,以便Jenkins读取并设置触发器配置
检查一下 【构建触发器】下面的
Build when a change is pushed to GitLab. GitLab webhook URL: http://jenkins-test.nevint.com:8088/project/***** 这个选项是否被自动勾选,如果被勾选就表示设置成功,
后面的URL就是填写到gitlab中webhook的URL~(其实gitlab中webhook的URL 来源于这里,直接从这里粘贴过去就行)
四.在自己的项目中 代码随便push一下,看看job有没有被成功触发,如果被触发,表示大功告成!!
五.其他类型触发器介绍
triggers 指令定义了流水线被重新触发的自动化方法。 当前可用的触发器是 cron, pollSCM,upstream,gitlab
例如:
triggers {
pollSCM('H * * * 1-5')//周一到周五,每小时
cron('H H * * *') //每天
gitlab(triggerOnPush: true, triggerOnMergeRequest: false, branchFilterType: 'All')
upstream(upstreamProjects: "${upstream_list}", threshold: hudson.model.Result.SUCCESS)
}
定时触发:cron
接收 cron 样式的字符串来定义要重新触发流水线的常规间隔 ,比如: cron('H H * * *') //每天
轮询代码仓库:pollSCM
接收 cron 样式的字符串来定义一个固定的间隔,在这个间隔中,Jenkins 会检查新的源代码更新。如果存在更改, 流水线就会被重新触发。例如: pollSCM('H * * * 1-5')//周一到周五,每小时
由上游任务触发:upstream
接受逗号分隔的工作字符串和阈值。 当字符串中的任何作业以最小阈值结束时,流水线被重新触发。
例如: triggers { upstream(upstreamProjects: 'job1,job2', threshold: hudson.model.Result.SUCCESS) }
hudson.model.Result包括以下状态:
ABORTED:任务被手动中止
FAILURE:构建失败
SUCCESS:构建成功
UNSTABLE:存在一些错误,但构建没失败
NOT_BUILT:多阶段构建时,前面阶段问题导致后面阶段无法执行