我正在使用具有声明性语法的Jenkins Pipeline,目前具有以下阶段:
对于步骤1,2,3和5,我需要代理(执行程序),因为它们在工作区上进行实际工作.对于第4步,我不需要一个,我想在等待用户输入时不阻止我的可用执行程序.对于经典的脚本语法,这似乎被称为"flyweight"或"轻量级"执行器,但我找不到有关如何使用声明性语法实现此目的的任何信息.
到目前为止,我已经尝试过:
agent none在舞台上设置.这没有任何效果,并且管道正常运行,在等待输入时阻塞执行程序.在文档中也提到它不起作用,但我想我还是试一试.agent none在流水线的选项,然后设置用于每个阶段的药剂除了#4.不幸的是,但是预计会为每个阶段分配一个新的工作区,这反过来要求我藏匿和解除搁置.这既麻烦又在并行阶段(2和3)给我进一步的问题,因为我不能在parallel构造之外有代码.我假设并行步骤在同一个工作区中运行,因此两者中的存储/取消存储都会产生不幸的结果.这是我的Jenkinsfile的概述:
pipeline {
agent {
label 'build-slave'
}
stages {
stage("Prepare build") {
steps {
// ...
}
}
stage("Build") {
steps {
parallel(
frontend: {
// ...
},
backend: {
// ...
}
)
}
}
stage("Test") {
steps {
parallel(
jslint: {
// ...
},
phpcs: {
// ...
},
)
}
post {
// ...
}
}
stage("Select …Run Code Online (Sandbox Code Playgroud)