jenkins - 对于脚本化管道,如何将 Jenkins 的工作阶段标记为已跳过
问题描述
使用脚本化管道时如何将阶段标记为已跳过。在声明性管道中跳过一个阶段我没有问题。我刚设置
when {
expression {<some boolean expression>}
}
问题是,如果您尝试使用脚本管道执行此操作,您会得到:
java.lang.NoSuchMethodError: No such DSL method 'when' found among steps
错误信息。这是因为声明式管道的 DSL 和脚本式管道不一样, 那么,怎么做呢?
解决方案
解决这个问题需要一点技巧......(别担心,没什么特别的)
做到这一点的方法是使用可以在此处找到的 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'
}
}
请注意,您必须取消选中Use Groovy Sandbox
复选框,因为 Utils 方法受到限制。
推荐阅读
- javascript - 谷歌查看器经常打开空白页
- algorithm - 如何从给定矩阵的一组矩阵中找到最小汉明距离矩阵?
- ios - 在 UIScrollView 中禁用 UIViewController 的安全区域插图。(类似 TikTok 的垂直馈送)
- powershell - 进程使用的内存量,如何获得与任务管理器相同的读数?
- python - 如何在数据框列中以连续方式查找数字总和?
- button - 我需要帮助更改按钮的大小
- javascript - 如何使用 PHP 安全地为 JavaScript 准备字符串?
- r - 火山图错误............“FUN 中的错误(X [[i]],......):找不到对象'Qval'”
- php - 搜索数据库后在电子表格中生成边框时出现致命错误
- sql - 将微秒添加到时间戳并分配给 DB2 中的主机变量 - BIND ERROR FROM BUILD