Jenkinsfile_触发器_配置定时任务
在jenkinsfile来定义流水线时,常规情况下,项目都是基于手动点击部署,这种策略尤其适用于线上环境,但在测试环境,乃至于预发环境,应该对自动构建有更高的集成度,使开发者只关注于开发,而不必过多纠结构建的过程。这里使用triggers
来定义流水线触发的机制和条件。
目前流水线支持的触发器有三种:crob、pollSCM和upstream。
-
cron
这里采用和Linux系统一样的定时任务管理方案,加入一些简单的参数项,以应对某些需要定期执行的场景。这里参数可以参考linux cron来配置。
-
pollSCM
这里表示定期对代码仓库进行检测,如果有变化,则自动触发构建。 -
upstream
当B项目的执行依赖A项目的执行结果是,A就是B的上游项目,在Jenkins2.22以上的版本中,可以通过upstream关键字进行这种关系的表示。hudson.model.Result
是一个枚举用于指示上游项目状态,包含以下指令:- ABORTED:任务被手动终止。
- FAILURE:构建失败。
- SUCCESS:构建成功。
- UNSTABLE:存在一些错误,但不至于构建失败。
- NOT_BUILT:再多阶段构建时,前面阶段的问题导致后面阶段无法执行。
-
gitlab事件触发
这个场景应用较多,大多时候,我们都默认将项目配置为,开发者提交某些分支,然后自动触发对应的构建。传统方式下,需要比较复杂的几步配置,但是在pipeline中也可以通过代码形式对这种触发器进行配置。
注意:gitlab触发Jenkins的构建需要依赖Gitlab插件,而并不需要插件当中列出来的所谓的gitlab hook。对于触发器用到的参数:
- triggerOnPush:当Gitlab触发push事件时,是否执行构建。
- triggerOnMergeRequest:当Gitlab触发mergeRequest事件时,是否执行构建。
- branchFilterType:只有符合条件的分支才会触发构建,必选,否则无法实现触发。
可选参数如下: - NameBasedFilter:基于分支名进行过滤,多个分支名使用逗号分隔。
- includeBranchesSpec:基于branchFilterType值,输入期望包括的分支的规则。
- excludeBranchesSpec:基于branchFilterType值,输入期望排除的分支的规则。
- RegexBasedFilter:基于正则表达式对分支名进行过滤。
- sourceBranchRegex:定义期望的通过正则表达式限制的分支规则。
这里举几个示例进行说明:
1.只接受固定分支的触发请求,语法如下:
- sourceBranchRegex:定义期望的通过正则表达式限制的分支规则。
2.通过正则匹配到某些分支触发
注意:所有对于jenkinsfile的配置都需要手动执行一次,将jenkins加载配置,后面指令才会生效。
我们只需要努力,然后剩下的交给时间。