持续集成⾼级篇之Jenkins脚本参数化构建
本系列已经很久没有更新了,接前⾯基础篇,本系统主要介绍jenkins构建⾥的⼀些⾼级特性.包括脚本参数化,Jenkins Pipeline与及在PipeLine模式下如何执⾏常见的传统构建任务(这⾥指jenkins⾃由风格构建模式),jenkins cli,jenkins ssh,jenkins任务调度,资源调度,jenkins任务远程触发,jenkins混合集搭建(同时包含windows和linux节点)等⾼级功能.
jenkins参数化构建
在⼀些复杂的构建中,我们可能需要指定很多参数,如果这些参数都写死在cmd或者powershell脚本或者ssh脚本⾥,脚本的可扩展性将严重受限,最为重要的是修改构建脚本可能会造成严重后果(尤其是⼀些⾮常复杂的脚本),这⾥的⼀个最佳实践就是不要轻易更改⽣产环境的脚本⽂件.⽽参数化构建可以⼤⼤增加脚本的可扩展性.
Jenkins提供了丰富的参数配置⼊⼝结合脚本⾃⾝的外部参数处理可以实现⾮常灵活的脚本参数配置.下⾯从脚本⾃⾝参数化选项,项⽬级参数化配置,节点级参数化配置以及全局参数配置来详细讲解如何在Jenkins⾥实现参数化配置.
脚本⾃⾝参数化配置
下⾯分别介绍bat脚本和powershell脚本如何接收外部参数
bat脚本接收外部参数
在windows bat脚本命令⾥,可以通过%0,%1,%2...以此类推来接收外部传⼊参数,其中%0为脚本⾃⾝的名称,很多时候不是我们需要的,我们可以从%1开始接收外部传⼊参数.我们假如有以下⼀个名为build.bat的脚本,它⽤作构建测试环境和⽣产环境的脚本,测试环境和⽣产环境的构建可以通过⼀个外部参数来判断.为了简单起见我们并不使⽤真实环境的构建脚本,⽽是简单模拟,希望读者能够举⼀反三,联系到真实环境应⽤场景.
这个bat脚本⾮常简单,就⼀⾏代码
echo %1
shell接收外部参数
在Jenkins中,除了powershell和bat命令外,其它地⽅接收外部参数的⽅法写法都是shell语法写法,即${参数名}形式
如果我们传⼊什么就会打印什么,我们传⼊development,或者production,bat脚本就会接收到它们.以上⾮常简单,这⾥不在jenkins⾥单独创建项⽬演⽰,⼤家可以⾃⼰动⼿试⼀试.
powershell接收外部参数
相对于windows cmd,powershell更为强⼤,也更为灵活.下⾯分别介绍powershell的位置参数和命名参数
powershell位置参数
位置参数类似于上⾯讲的cmd通过%0,%1获取参数⼀样,通过参数的顺序来决定调⽤的是哪⼀个参数.在Powershell⾥,位置参数传⼊到ps1⽂件后都存储在了⼀个叫作$args的数组变量⾥,可以通过$args[0],$args[1]来获取各位置上的参数(位置通过空格区分,如果参数包含空格需要加引号)shell最简单脚本
类似上⾯bat,我们新建⼀个叫作'build.ps1'的powershell脚本⽂件,代码与上⾯的bat类似,如下
echo $args[0]
需要注意的是,powrshell脚本⽂件(即后缀名为ps1的⽂件)⽆法通过cmd命令窗⼝打开.需要使⽤powershell窗⼝或者调⽤
<来打开
ps1⽂件的执⾏⽅式
1. 使⽤powrshell命令窗⼝打开,就像打开cmd命令⼀下打开powershell命令窗⼝,需要注意的是powershell窗⼝执⾏ps1⽂件需要使⽤相对
路径或者绝对路径,⽐如你要打开⼀个名称为Build.ps1的⽂件,打开⽅式应该是.\Build.ps1(相对路径形式)或者C:\build.ps1形式,不能是直接Build.ps1
2. 使⽤cmd打开powershell,在cmd中输⼊powershell就会进⼊powershell命令窗⼝,和直接打开powershell命令窗⼝效果是⼀样的.
3. 通过 执⾏powershell命令.在cmd中输⼊ -File 要执⾏的ps1⽂件即可运⾏ps1脚本
第三种⽅式提供了⼀种在cmd环境执⾏powershell脚本的⽅法,这在jenkins环境中⾮常有⽤,可以不必使⽤powershell插件即可调⽤powershell脚本.
powershell 命名参数
很多时候,尤其在要传⼊的参数⾮常多的时候,位置参数语义不是很清析,对于调试脚本很不⽅便,⽽命名参数可以在⼀定程度上使语义更清楚,出错的可能性也会更⼩.下⾯就介绍⼀下powershell中的命名参数,我们新建⼀个名为build.ps1(名称可以随便起)
param($build,$version)
echo "current build type is: $build,and the version is:$version"
以上脚本我们通过param关键字创建了两个命名参数,$build和$version(powershell中参数命名前⾯要加⼀个$符号),我们在当前脚本所在⽂件夹下打开powershell命令窗⼝,然后执⾏以下命令
.\build.ps1 -version 1.0 -build development
可以看到这⾥是通过-+参数名的⽅式来传⼊命名参数
可以看到输出如下结果
current build type is: development,and the version is:1
⼤家可以看到,不管-version和-build位置如何,输出的结果都是⼀样的.
明眼的同学可能会发现⼀点⼩问题,那就是-versoin输⼊的参数是1.0⽽输出的结果却是1,这是因为powershell把1.0当作数字来处理了,舍弃掉了没有⽤的⼩数位,我们想要输出1.0只需要把1.0⽤引号引起来就⾏了,当然还有其它办法,那就是指定参数的类型,指定参数类型超出了本节讲解的范围.有兴趣的童鞋可以查阅相关资料深⼊了解.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。