Jenkins参数化构建与触发

前言

我们在使用Jenkins进行项目构建时,有时会出现两个项目之间关联的情况,比如项目1构建结束后想要直接执行项目2,或者项目1中的某些参数需要传递给项目2来使用,此时可以使用Jenkins的参数化构建方法来完成该过程。

一、Jenkins参数化构建

勾选参数化构建过程

选择你想要添加的参数类型

参数定义,这里以选项参数类型为例

参数的使用,例如将构造时所选的参数打印10次:

python 复制代码
for((index=0;index<10;index++));
  do
    echo ${Param}
  done

参数化构建,回到首页,点击 Build with Parameters,在弹出的选项框中勾选你想要使用的参数

例如我们选择了option2,然后点击立即构建,可以在该构建的项目下,查看控制台输出:

此时可以看到控制台log中打印了10次option2,说明参数化构建成功。

二、Jenkins任务触发

在进行多任务的持续集成项目构建时,经常会遇到需要执行完任务1,然后再执行任务2,如果任务2的执行不需要用到任务1中的参数,那么可以在任务2中的触发器中添加任务1的名字。还是以write为任务1,以test_write为任务2举例,在任务2的构建触发器选项中勾选其他工程构建后触发,然后在关注的项目中填写任务1的名字write,如下图所示:

然后在任务2的执行shell脚本中写入打印3次'test'的指令,保存。最后参数化构建任务1,还是打印10次选项,这次勾选option3,可以看到该界面中,出现了下级项目为test_write的链接:

构建任务1,参数选项为option3,则任务1的输出为:

然后点进test_write中,发现刚刚完成一个构建项目:

点击可以查看这个项目的控制台输出:

任务2正常打印了3遍test,说明任务1成功触发了任务2并且正常构建了。无参数触发的方法不止这一种,还可以通过在任务1中添加构建后操作-构建其他工程-填写要构建的项目来完成,如下图所示,原理与上述类似,不再赘述。

三、Jenkins参数化触发

当任务1中有构建后需要传递给任务2的参数时,要想实现带参数构建,需要借助一个Jenkins插件:Parameterized Trigger,读者可以自行安装一下,安装成功后,在项目的构建后操作选项中可以看到多了一个Trigger parameterized build on other projects选项:

还是以write任务为任务1,test_write任务为任务2为例进行讲解。

1.在任务1中将执行中的参数保存到properties文件中

因为终端shell执行完毕后变量都会回收,所以不能够将变量直接传递给任务2,需要将其写入到文件中然后以文件的形式传递,在任务1的执行shell代码中加入如下代码:

复制代码
echo "PARAM_NAME=$Param" > profile.txt

PARAM_NAME表示的就是将要传递给任务2的参数,如图所示:

2.在任务1中增加构建后操作

在任务1中的增加构建后操作中,选择Trigger parameterized build on other projects,然后在项目名字中填写test_write,在Add Parameters选项中选择Parameters from properties file:

在Use properties from file中添加profile.txt的路径,注意此处一定要填你在服务器上保存的profile.txt的绝对路径,否则会提示找不到(重要!!!)。

然后点击保存。

3.在任务2中添加构建参数

将在任务1的properties文件中定义的参数PARAM_NAME 传递给任务2,那么PARAM_NAME就是任务2的构建参数,定义其为字符类型,并在执行shell中打印三次这个参数。

任务2执行shell代码:

python 复制代码
for((index=0;index<3;index++));
  do
    echo ${PARAM_NAME}
  done

然后点击保存。

4.测试是否构建成功

至此完成了任务1到任务2的参数化触发过程,此时打开任务1,参数化构建任务1,选择option2测试:

我们期望任务1打印10次option2之后将该值通过保存在profile.txt中的PARAM_NAME来传递给任务2,并且触发任务2进行构建,最终在任务2中打印3次:

如图所示,此时说明任务2已经由任务1带参数触发成功了。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
Star(up up up)10 分钟前
Docker系列---Docker容器基本命令(新手小白保姆级实操教程)
运维·学习·程序人生·青少年编程·docker·容器·dubbo
echome88833 分钟前
Linux 定时任务:crontab 写法与常见失效原因
linux·运维·网络·定时任务·crontab
老约家的可汗34 分钟前
Linux开发三件套:make、git、gdb 入门指南
linux·运维·服务器
分布式存储与RustFS1 小时前
可观测性数据落进对象存储:Proscia 案例拆解与 ClickHouse 自托管配置
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
方便面不加香菜2 小时前
Docker Image-- 镜像命令详解与使用示例
运维·docker·容器
Star(up up up)2 小时前
Docker系列---Dockerfile镜像文件
人工智能·经验分享·学习·程序人生·docker·容器·github
天远API2 小时前
零信任架构实战:基于天远劳动仲裁信息查询构建自动化灵活用工劳务派遣人员准入背调网关
运维·人工智能·架构·自动化
程序员大雄学编程3 小时前
Linux 磁盘满了怎么排查?df / du / find 三步定位大文件
linux·运维·php
Bruce_Liuxiaowei3 小时前
前端校验登录态,等于没校验——一次应急广播终端高危漏洞的发现与报送
运维·前端·安全
CoderYanger3 小时前
Java EE 进阶:6.SpringBoot 配置文件(第二弹)
java·spring boot·spring·面试·职场和发展·java-ee·程序员创富