【发布时间】:2021-06-02 01:38:38
【问题描述】:
我正在为必须在远程数据中心内使用特定 Jenkins 代理将我的代码部署到这些数据中心的场景构建 Jenkins 管道。这是由于防火墙对某些端口的限制,特别是 WinRM 在我们的一些全球数据中心之间被阻止。
我们的部署是这样编写的,以便单个deploy 阶段可以部署到由用户传入参数指定的任意数量的环境。该阶段循环遍历环境并为每个环境调用一个通用部署脚本。
我知道如何通过标签或阶段定义中的其他闭包来指定代理:
stage ('a stage') {
agent { label 'some agent label' }
steps { ...
但在这种情况下,我正在解决在一个部署阶段部署到多个环境的问题,每个环境都需要自己的代理。
当然,我可以为每个环境指定一个唯一的阶段,并在适当的时候使用when 子句来运行它,但这很麻烦。
我想做的是告诉管道在部署阶段 inside 内的部署阶段使用什么代理,并且能够使用 multiple 单个阶段内的代理,根据运行参数动态确定。
【问题讨论】: