将变量从下游Jenkins作业传递给" parent"工作

时间:2017-02-16 17:14:37

标签: shell jenkins

我已经获得Jenkins的工作 A ,它会触发 B 作业,然后执行shell脚本。

在Jenkins job A 的这个shell脚本中,我想使用Jenkins Job B 设置的变量。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

这可以通过多种方式实现。一种方法是将作业A配置为具有构建步骤,该步骤触发作业B,并在作业B完成后在文档中提取变量。然后,作业A可以读取这些变量并在以后的步骤中使用它们。

但这里有几件事需要考虑。首先,这需要在作业A可以/应该继续之前完成作业B,因此如果您考虑并行作业执行,这不是理想的。其次,在处理env变量时,你需要一个插件来在构建步骤之外使变量可用(导出不够),查看EnvInject插件。第三,如果工作配置变得复杂,可能有更好的方法。使用Jenkinsfile和以前的流水线插件,Job Orchestration已经改进了很多,并且在这个新的,闪亮的世界中传递参数更容易。话虽如此,这里有一个像你所问的那样有效的例子。

工作A

  1. 作为构建步骤,触发作业B,让作业A在作业B完成时暂停

  2. 在下一个构建步骤中,使用Copy Artifact Plugin从另一个构建(作业B最新稳定版)复制工件。

  3. 对文件执行某些操作,例如只打印内容,现在可以在作业A中访问。

  4. 工作B

    1. 导出变量并将其保存到文件

    2. 归档书面文件并使其可供作业A访问。

    3. 这不是很漂亮,但它起码至少。

      P.S。我建议查看Jenkinsfile(https://jenkins.io/doc/book/pipeline/jenkinsfile/)选项,它在初始学习曲线后简化了很多。