持续集成高级篇之Jekins参数化构建(二)

系列目录

上一节我们讲解了如何使用bat脚本或者powershell脚本自身的机制来达到参数化构建的目的,这在一定程序上增加了灵活性,然而缺点也相当明显:它只能适应一些相对比较固定的参数传入(比如像上一节讲到的,构建的环境分为( development
production
)两种情况,对于一些相对较复杂的情况以上方法就会捉襟见肘,最为明显问题是外部的变化可能导致参数随之做必要更改,最常见的是文件的位置参数,我们指定归档文件的目录为 D
盘下的一个文件夹,现在D盘满了需要指定为其它盘,则所有的脚本都需要更改,这样的结果就是可维护性差.我们可以把一些较为常用的参数定义为全局参数,比如常用工具的位置.

本节我们将从项目级别,节点级别,全局级别来讲解Jenkins ci提供的参数配置方案

项目级别参数

本节部分我们分为参数构建和在项目中定义项目级别参数来讲解.

参数化构建项目.

在Jenkins里新建一个自由式项目,勾选 This project is parameterized
会出现一个 Add Parameter
按钮,点击会出现一个下拉框,选择最后一项’string paramter’创建一个字符串类型参数,在出现的对话框中输入名称(我用的是 buildenv
)和默认值(默认值可以不输入),在构建栏里我们选择 Execute windows bat command
,在出现的框中输入以下内容:

//buildenv为我们定义的参数名
echo %buildenv%

点击 ok
完成项目创建,此时 build now
按钮变成了 Build with Parameters
参数化构建,点击又会出现一步让输入值,有默认值可以直接点击’build’,点击后我们查看控制台可以看到输出了我们定义的参数

在以后的章节里也是一样,不管是Jenkins预置的参数还是我们自定义的,使用cmd时都是通过 %参数名%
来获取.

如果是powershell脚本,则需要使用 $env:参数名
来接收参数,比如在powershell命令窗口输入 echo $env:buildenv
就会达到和上面cmd一样的效果.

需要指出的是,如果在jenkins里直接执行powershell命令,需要下载powershell插件.

项目级别参数

以上参数化构建适用于需要手动构建的,不是特别频繁但是参数又必须动态指定的情况,这种构建缺点也相当明显,因为每次需要手动指定参数.还有一种方法是指定项目级别的参数,这种方式比直接使用脚本自身参数要更容易管理,因为参数在单独的一块地方定义,并且可以添加描述,使得语义更加明确,并且参数在单独醒目地方出更容易引起关注.

下面讲解一下如何在项目级别添加环境变量.

新建一个自由式项目,名称随意,找到 Build Environment
栏目,找到 Inject environment variables to the build process
选项并勾选,此时会出现一些输入框让输入, Properties File Path
暂时忽略,在下面的 Properties Content
里输入 buildenv=development
就可以在bat,shell或者powershell脚本里使用它了.

如果需要定义多个参数,换一行书写就行了,同样是name=value形式

大家可能已经看到,选项里除了 Properties Content
外,下面还有 Groovy Script
选项,大家不要害怕,这里并不讲Groovy,这里可以使用一些简单的groovy语法来定义参数变量

Groovy Script
框里输入的选项如下

def str="hello,world"
return ["greeting":str,"filename":"jenkins.txt"]

可以使用 def关键字定义一个变量,下面return里的内容可以做为参数在构建时使用.比如在bat脚本里可以使用 %greeting%
来获取键为greeting的参数的值.

节点级别参数

有些参数在不同的节点上是不一样的,比如说某一个工具的位置,如果我们把它定义为项目级别,由工具在不同节点上安装的位置可能是不一样的,这样就会造成部分节点上的构建失败.这时候可以考虑把参数定义为节点级别.

进入 Manage Jenkins>Manage Nodes
,进入管理页面便会看到我们已经创建好的Jenkins节点,点击某个基点后面的 齿轮
图标,在出现的界面里找到 Node Properties
,勾选 Environment variables
此时便可以输入参数的名称和值,点击 Add
按钮则可以添加多个参数.完成后点击 Save
保存后便可以在脚本里使用刚定义的节点级别的变量了.

全局变量

全局变量对所有节点都有效,当某些变量不会因为环境的改变而改变,比如说构建的版本只有development和production时,就可以定义为全局变量.这样不需要在每个项目里都重复定义了.

全局变量的定义也非常简单,进入 Manage Jenkins>Configure System
找到 Global properties
并勾选 Environment variables
出现的界面跟节点级别配置类似.

使用文件参数

Jenkins提供了灵活的配置选项,我们除了可以在Jenkins内部配置参数外,还可以以外部文件的形式提供配置参数,配置参数为name=value键值对形式,必须符合java properties文件格式.

下面讲解如何使用配置文件.

我们新建一个自由式项目,滚动到 Build Environment
栏,勾选 Inject environment variables to the build process
,在 Properties File Path
选项里输入配置文件路径,我放在了E盘里,路径为 E:/testenv.txt
,这个文件很简单,里面就一行内容,如下:

database=sqlserver

往下流动到 Build
栏,新建一个 Execute windows bat command
,输入以下内容

echo %database%

保存后点击构建,可以看到控制台输入sqlserver

原文 

http://www.cnblogs.com/tylerzhou/p/11427566.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 持续集成高级篇之Jekins参数化构建(二)

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址