jenkins使用_Jenkins使用方式大汇编

Jenkins各阶段玩法汇总

Jenkins使用方法迭代

33fbdba44df063061043470d80d8f044.png

Freestyle Job

初阶最常用的方法,也就是“经典任务”,通过在Job页面编写shell脚本执行CI/CD步骤。

Pipeline Job

一段时间后你可能会有在脚本中调用Jenkins插件的需求,此时只能转投Pipeline Job(流水线),通过在Job配置页面中编写Pipeline达到调用插件的效果。

Jenkinsfile

当我们需要维护Job越来越多时,逐个Job点进去修改配置会非常麻烦,而且也缺乏版本管理,所以此时就需要将Pipeline保存为Jenkinsfile文件存放到代码仓库根目录下,进行版本化管理。

Jenkinsfile + Shared Library

对Jenkinsfile进行版本化管理后,随着公司的发展项目越来越多我们要维护每个项目对应的Jenkinsfile文件就显得很麻烦,这些文件内容很多代码都是相同的,所以我们需要做代码复用。此时就需要引入“全局共享库”,通过将相同功能代码抽取为方法,放到全局共享库来调用。

Jenkinsfile + Shared Library + Closure

使用全局共享库后还有一个“高级特性”就是闭包的块调用,就是你可以定义自己的代码块,比如Pipeline中的pipeline、options、stages、steps代码块,我们可以通过块调用方法传递给闭包对象来实现定义自己的代码块。

Jenkinsfile + Shared Library + Closure + Pipeline Template

现在我们虽然对Jenkinsfile里面的代码做了大量复用,但是Jenkinsfile本身还是需要每个项目一份,所以就需要使用

Pipeline Template来对Pipeline Template做复用,通过定义一个通用的Pipeline Template文件,然后每个项目的jenkinsfile只需要写上参数,用传参方式来调用Pipeline Template,以此进行Jenkinsfile的复用。


Jenkinsfile管理方式迭代

be937ad4c976757213b7c8c24d03ea55.png

Jenkinsfile

迭代一:编写Jenkinsfile放到每个代码工程根目录下,每个分支都需要存放一份Jenkinsfile。

缺点:每个项目的每个分支根目录下都需要放一份jenkinsfile,然后人工为该项目创建分支对应的job,维护起来非常麻烦。

Pipeline Multibranch Plugin

迭代二:使用Pipeline Multibranch Plugin(多分支流水线)插件,该插件通过扫描代码仓库分支,将包含Jenkinsfile的分支扫描出来自动为其创建多分支Job。

缺点:仍然还是需要每个工程项目分支下放一个Jenkinsfile,我们需要在不同的分支改动Jenkinsfile,并且在merge回master,维护起来还是很麻烦。想象一下,当某天你要对Jenkinsfile做一个基础层面的更改,你可能需要把相关业务方全部通知一遍去做这个变更。

Pipeline Multibranch with defaults

迭代三:是上一代的改进,需要增加Pipeline Multibranch with defaults插件,该插件增加了一个功能,可以指定一个Default Jenkinsfile,让同一个工程项目下的分支复用同一个Jenkinsfile。

缺点:这种方法虽然解决了多分支Job创建的问题,也解决了需要维护不同分支下Jenkinsfile的问题,但又引发另外一个问题,这种方式的Jenkinsfiile必须使用jenkins config方式保存(需要Configfile-Provider Plugin)再给job引用,多项目维护起来非常麻烦,而且又没有版本化管理。

集中式管理Jenkinsfile

迭代三:创建一个Git仓库统一存放管理所有项目Jenkinsfile。

缺点:现在无论你需要对Jenkinsfile做什么更改,都不需要骚扰到各业务方,而且还可以版本化管理。但我们还是存在一个问题,就是我们还是需要维护100个项目对应的Jenkinsfile,只不过现在是集中化管理,变更不需要去骚扰到业务方,所以我们还需要做Jenkinfile的代码复用。

Pipeline Template

迭代四:通过使用Pipeline Template做Jenkinsfile复用,通过Shared Library将相同的方法抽为共享库复用。

缺点:这代看起来已经很完美了,但仍然存在一个问题,就是在公司可能有非常多项目,每个项目接入时都要去为其创建对应的一个或N个Job,而且这些Job以后可能需要做一些全局修改,如Git仓库迁移地址变更或为了更好配合权限控制为所有Job添加环境前缀等,所以我们还缺一个帮我们自动化创建Job的方法。

Job DSL

迭代五:Job DSL插件,通过创建一个Seed Job读取一个或多个DSL Job模板,为我们自动化创建Folder、Job、View等。

点评:这一代已经接近完美了,比如我们可以通过配置Git Commit自动触发Seed Job为我们自动创建应用项目的Job,当我们需要新增Job时只需要在运维仓库内创建对应项目名称的文件夹,然后放上该项目的Jenkinsfile(只含项目参数)并提交,Jenkins就会自动给为我们创建好对应的一个或多个Job。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值