Sag*_*bes 8 jenkins jenkins-pipeline
使用脚本化管道时如何将阶段标记为已跳过。我在声明性管道中跳过一个阶段没有问题。我刚设置
when {
expression {<some boolean expression>}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果您尝试使用脚本化管道执行此操作,您会得到:
java.lang.NoSuchMethodError: No such DSL method 'when' found among steps
Run Code Online (Sandbox Code Playgroud)
错误信息。这是因为声明式管道的 DSL 与脚本式管道不一样, 那么,怎么做呢?
Sag*_*bes 13
解决这个问题需要一点点hacking...(别担心,没什么特别的)
这样做的方法是使用 Jenkins 的模块,可以在这里找到。
因此,要将阶段标记为已跳过,您需要调用静态方法markStageSkippedForConditional传递您要跳过的阶段的名称。
假设您有一个名为“mystage”的舞台。并且您想跳过它并将其标记为“已跳过”。您的代码应该类似于:
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
node() {
stage('a'){
echo 'stage 1'
}
stage('mystage'){
if(true){
echo 'skipping stage...'
Utils.markStageSkippedForConditional('mystage')
}else{
echo 'This stage may be skipped'
}
}
stage('b'){
echo 'stage 2'
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您必须取消选中Use Groovy Sandbox复选框,因为 Utils 方法受到限制。
Ste*_*ing 11
您可以在comquent/imperative-when 中找到一个实现(以共享管道步骤的形式)在 GitHub 上的。
这允许以Utils.markStageSkippedForConditional一种很好的方式访问您发现自己的方法,如下所示:
stage('Zero') {
when(BRANCH_NAME != 'master') {
echo 'Performing steps of stage Zero'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9739 次 |
| 最近记录: |