Jenkins job A触发job B的方法和踩坑指南

问题:自动化测试运行在job B 上,但是测试环境存在 a,b两个,我想在早上的6点和8点指定测试环境a和b分别build一次 job B ?

方案:由于job B执行时只能在一个测试环境下运行,因此构建 job A 作为trigger 触发 job B运行,且在运行时修改 job B 中 parameter/环境变量 的default value。

解决方式详解:

1. jenkins 的 ”Parameterized Trigger“ 实现了触发器的功能,安装该插件并重启jenkins;

2.如下图创建job A,在 "Add post-build action" 中添加 "Trigger parameterized build on other projects",填写 要出发的job-B 和要修改的parameters; Jenkins job A触发job B的方法和踩坑指南_第1张图片

3. 在步骤2创建完成后,理论上 job-A 可以 build触发 job-B,并且修改job-B中的parameters,但是我这边出错了——"You have no permission to build xxx";

Jenkins job A触发job B的方法和踩坑指南_第2张图片

4.我强行save执行了job-A ,结果不出所料,果然报错了,如下图显示,jenkins 没有 指定的label,anonymous(匿名用户)没有权限在label 'xxx' 上运行;

Jenkins job A触发job B的方法和踩坑指南_第3张图片5.步骤4的问题在网上没有找到有效的解决方式,只能采用试错的方法;根据错误提示显示 anonymous没有权限运行job,但是当前用户并非匿名,而是admin,我就想着换个用户执行一下是否可以,admin是不是权限是不是比较特殊啥的; 我把该job的 Ownership 换成了我自己,重新build了job-A,结果还是失败了,错误一模一样;

Jenkins job A触发job B的方法和踩坑指南_第4张图片

 6.步骤5执行失败后,本着有始有终的原则,我把Ownership 改回admin了,然后又重新build了一次job-A,结果成功了,job-B 被成功触发了;

7. 步骤 5~6 是废话,没兴趣的直接看这一步,步骤3的“You have no permission to build xxx” 错误可以通过 Manage Ownership 切换job 的 用户,再切换回原来的用户解决,这可能是"Parameterized Trigger" 的bug。

Jenkins job A触发job B的方法和踩坑指南_第5张图片

 

你可能感兴趣的:(测试开发,python,测试类型,jenkins)