我的jenkinsfile包含像这样的阶段:
stages {
stage('init'){
steps {
sh 'do-init'
}
}
stage('region1') {
stages {
stage('build') {
steps{
script {
dir("testing"){
build(region:'region1', labels:"label1")
}
}
}
}
stage('delete') {
steps{
script {
dir ("testing"){
delete('region1')
}
}
}
}
}
}
stage('region2') {
// repeat region1 stage for region2, label2 - edited for brevity
}
}
字符串
有没有可能将内部的“region stage”重构为一个共享库,然后在script {}块中调用它两次?
到目前为止,我的尝试都以常见的DSL错误“stages not found in steps”结束
2条答案
按热度按时间kknvjkwl1#
是的,这是有可能实现你想要的,你只需要确保在共享库函数中,你使用的是脚本管道语法,而不是减速语法。
例如,在您的管道中,您可以执行以下操作:
字符串
现在,在您的共享库
vars
文件夹中,您将拥有一个名为buildAndDelete.groovy
的文件,其内容如下:型
当然,您可以根据需要更改输入参数。
9lowa7mx2#
我得到了同样的问题,而试图使一个动态的多个小阶段内的一个大阶段。你可以得到的原因,你得到DSL错误“阶段未找到步骤”的问题与id 42113655
换句话说,在我的例子中,我用输入参数创建了一个新的管道,所以当我想重用相同的阶段时,jenkins使用pipeline-build-step plugin和重要参数触发第二个管道
如果您有一个很长的区域列表,可以将我的解决方案与jenkinsfile中的一个循环结合起来,以获得动态数量的区域。