1.简介
Jenkins是当今使用最流行的CI / CD工具之一。从构建到部署,它使我们能够自动化软件生命周期的各个方面。
在本教程中,我们将研究Jenkins的更强大功能之一:参数化构建。
2.定义构建参数
使用build参数可以将数据传递到Jenkins作业中。使用构建参数,我们可以传递所需的任何数据:git分支名称,秘密凭证,主机名和端口,等等。
可以对任何Jenkins作业或管道进行参数化。我们要做的就是选中“常规设置”选项卡上的复选框,该选项显示This project is parameterized :
然后,单击Add Parameter按钮。从这里开始,我们必须指定一些信息:
Type
:参数的数据类型(字符串,布尔值等)Name
:将用来标识参数的名称Default value
:一个可选值,将在用户未指定一个值时使用Description
:描述如何使用参数的可选文本
单个Jenkins作业或管道可以具有多个参数。唯一的限制是参数名称必须唯一。
2.1 参数类型
Jenkins支持多种参数类型。以下是最常见的列表,但请记住,不同的插件可能会添加新的参数类型:
String
:字符和数字的任意组合Choice
:一组预定义的字符串,用户可以从中选择一个值Credentials
:预定义的Jenkins凭证File
:文件系统上文件的完整路径Multi-line String
:相同String
,但允许换行符Password
:类似于Credentials类型,但允许我们传递特定于作业或管道的纯文本参数Run
:一个绝对URL,指向另一个作业的单次运行
3.使用构建参数
一旦定义了一个或多个参数,下一步就是利用它们。下面,我们将介绍访问参数值的不同方法。
3.1 传统工作
在传统的詹金斯(Jenkins)工作中,我们定义了一个或多个构建steps 。最常见的构建步骤是执行Shell脚本或Windows批处理命令。
假设我们有一个名为packageType的构建参数。在shell脚本中,我们可以像其他任何使用shell语法的环境变量一样访问构建参数:
${packageType}
对于批处理命令,我们使用本机Windows语法:
%packageType%
我们还可以创建执行Gradle任务或Maven目标的构建步骤。这两个步骤类型都可以访问构建参数,就像访问其他任何环境变量一样。
3.2 流水线
在Jenkins管道内部,可以多种方式访问构建参数。
首先,将所有构建参数放入params变量中。这意味着我们可以使用点表示法来访问参数值:
pipeline { agent any stages { stage('Build') { when { expression { params.jdkVersion == "14" } } } } }
其次,将构建参数添加到管道环境中。这意味着我们可以在执行Shell脚本的步骤中使用较短的Shell语法:
pipeline { agent any stages { stage('Build') { steps { echo "${packageType}" } } } }
4.设置参数值
到目前为止,我们已经了解了如何在Jenkins作业中定义参数并使用它们。最后一步是在执行作业时传递参数值。
4.1 Jenkins UI
使用Jenkins UI开始工作是传递构建参数的最简单方法。我们要做的就是登录,导航到我们的工作,然后单击Build with Parameters链接:
这将带我们进入一个屏幕,询问每个参数的输入。根据参数的类型,我们输入其值的方式将有所不同。
例如, String参数将显示为纯文本字段。 Boolean参数将显示为复选框。并且Choice参数显示为下拉列表:
为每个参数提供值后,我们要做的就是单击Build按钮,Jenkins开始执行作业。
4.2 远程执行
Jenkins作业也可以通过远程API调用执行。为此,我们在Jenkins服务器上为该工作调用一个特殊的URL:
http://<JENKINS_URL>/job/<JOB_NAME>/buildWithParameters/packageType=war&jdkVersion=11&debug=true
请注意,这些请求必须作为POST命令发送。我们还必须使用HTTP基本身份验证提供凭据。
让我们来看一个使用curl的完整示例:
curl -X POST --user user:apiToken \ http://<JENKINS_URL>/job/<JOB_NAME>/buildWithParameters/packageType=war&jdkVersion=11&debug=true
该user可以是任何Jenkins用户,并且apiToken是该用户的任何关联的API令牌。
5.结论
在本文中,我们已经了解了如何在Jenkins作业和管道中使用构建参数。构建参数是使任何Jenkins工作动态化的有力方法,并且对于构建现代CI / CD管道至关重要。
0 评论