前提:

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:多阶段构建时,前面阶段问题导致后面阶段无法执行

 

参考文献:https://github.com/jenkinsci/gitlab-plugin#declarative-pipeline-jobs

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐