拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Jenkins参数化构建指南

Jenkins参数化构建指南

白鹭 - 2021-11-08 2165 0 2

1.简介

Jenkins是当今使用最流行的CI / CD工具之一。从构建到部署,它使我们能够自动化软件生命周期的各个方面。


在本教程中,我们将研究Jenkins的更强大功能之一:参数化构建。

2.定义构建参数

使用build参数可以将数据传递到Jenkins作业中。使用构建参数,我们可以传递所需的任何数据:git分支名称,秘密凭证,主机名和端口,等等。

可以对任何Jenkins作业或管道进行参数化。我们要做的就是选中“常规设置”选项卡上的复选框,该选项显示This project is parameterized :

guide-to-jenkins-parameterized-builds.jpg

然后,单击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链接:

guide-to-jenkins-parameterized-builds-1.jpg

这将带我们进入一个屏幕,询问每个参数的输入。根据参数的类型,我们输入其值的方式将有所不同。


例如, String参数将显示为纯文本字段。 Boolean参数将显示为复选框。并且Choice参数显示为下拉列表:

guide-to-jenkins-parameterized-builds-2.jpg

为每个参数提供值后,我们要做的就是单击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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *