设置
agent none在最高级别,然后
agent { label 'foo' }在每个阶段设置,再设置在舞台agentnone上,这
input似乎对我来说是预期的。
即,执行某些工作的每个阶段都在同一个代理上运行,而该
input阶段不消耗任何代理上的执行程序。
pipeline { agent none stages { stage("Prepare build") { agent { label 'some-agent' } steps { echo "prepare: ${pwd()}" } } stage("Build") { agent { label 'some-agent' } steps { parallel( frontend: { echo "frontend: ${pwd()}" }, backend: { echo "backend: ${pwd()}" } ) } } stage("Test") { agent { label 'some-agent' } steps { parallel( jslint: { echo "jslint: ${pwd()}" }, phpcs: { echo "phpcs: ${pwd()}" }, ) } } stage("Select deploy target") { agent none steps { input message: 'Deploy?' } } stage("Deploy") { agent { label 'some-agent' } steps { echo "deploy: ${pwd()}" } } }}但是,不能保证在管道中使用相同的代理标签将总是最终使用相同的工作空间,例如,当第一个构建正在等待时,作为同一作业的另一个构建
input。
您将必须
stash在构建步骤之后使用。如您所述,目前无法正常完成此操作
parallel,因此您必须另外使用一个
script块,以便在并行步骤之后/之前编写脚本管道的代码段以进行隐藏/取消隐藏。



