37-Jenkins-多分支流水线
Posted 爱学习de测试小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了37-Jenkins-多分支流水线相关的知识,希望对你有一定的参考价值。
多分支流水线
前言
- 在实际中,需要多分支同时进行开发。如果每个分支都创建一个Jenkins项目,比较多余。所以本篇来学习下多分支流水线的使用
多分支流水线能力
- 在代码仓库中,每个新分支都有自己单独的工作流水线(job)。
- 每个工作流水线都记录了对应分支的构建和变更历史。
- 可以自定义设置流水线随着分支的删除而删除或修建。
- 通过重写父属性(如果需要),可以灵活地单独配置分支流水线属性
创建多分支流水线
- New Item :新建多分支流水线如下图
多分支流水线配置
General
Branch Sources
- 设置代码仓库地址,也就是要选择分支的仓库地址
Build Configuration
- 脚本路径:各分支存放Jenkinsfile的路径
Scan Multibranch Pipeline Triggers
- 触发策略:Jenkins根据一定的策略去代码仓库扫描分支,如果有新分支就创建一个以分支名命名的任务,如果发现有分支被删除了,就删除相应的Jenkins任务,如下所示为5分钟扫描一次
Orphaned Item Strategy
- 孤儿策略:如果在代码仓库中删除了release分支,那么在多分支任务页面上,该分支在Jenkins上的任务也应该被删除。至于什么时候删除,取决于下次分支扫描的时间。如果代码仓库中的分支被删除了,而Jenkins上的相应任务没有被删除,那么这个任务就被称为孤儿任务。设置如下图所示
Days to keep old items: 保留多少天
Max#of old items to keep:最多保留多少个孤儿任务
查看多分支流水线
- 发现3个分支,自动创建3个job(如未出现job,可点击立即San多分支流水线)
gitlab触发与多分支
对于GitLab来说,并没有Jenkins多分支pipeline的概念,所以GitLab只会触发Jenkins进行分支索引 ( branch index ) ,Jenkins可根据索引结果决定是否执行构建。对于多分支pipeline,Jenkins GitLab插件只监听push事件,不监听merge request事件。
而在Jenkins多分支pipeline项目的设置页面中,是找不到GitLab配置项的。只能通过修改Jenkinsfile来实现,在triggers指令中加入gitlab配置。
triggers
gitlab(
triggerOnPush: true,
triggerOnMergeRequest: true,
triggerOpenMergeRequestOnPush: "never",
triggerOnNoteRequest: true,
noteRegex: "Jenkins please retry a build",
skipWorkInProgressMergeRequest: true,
ciSkip: true,
setBuildDescription: true,
addNoteOnMergeRequest: true,
addCiMessage: true,
addVoteOnMergeRequest: true,
acceptMergeRequestOnSuccess: true,
pendingBuildName: "$env.JOB_NAME",
cancelPendingBuildsOnUpdate: true,
//branchFilterType: 'All',
branchFilterType: "NameBasedFilter",
includeBranchesSpec: "master,release-*",
//excludeBranchesSpec: "",
)
以上是关于37-Jenkins-多分支流水线的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins 配置文件管理插件 Config File Provider