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-多分支流水线的主要内容,如果未能解决你的问题,请参考以下文章

基于K8s的DevOps平台实践

Jenkins 更改构建历史时间戳

Jenkins 配置文件管理插件 Config File Provider

云原生 API 处理平台「支流科技」完成百万美元 Pre-A 轮融资

支流科技完成A轮融资,云原生API网关继续腾飞

孤儿进程和僵尸进程