这是我正在玩的代码
node {
stage 'build'
echo 'build'
stage 'tests'
echo 'tests'
stage 'end-to-end-tests'
def e2e = build job:'end-to-end-tests', propagate: false
result = e2e.result
if (result.equals("SUCCESS")) {
stage 'deploy'
build 'deploy'
} else {
?????? I want to just fail this stage
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让我将"端到端测试"阶段标记为失败,而不会使整个工作失败?传播假只是总是将舞台标记为真,这不是我想要的,但传播真实标志着失败的工作,我也不想要.
我想在Jenkins声明性管道语法中定义多个阶段,这些阶段可以继续通过它们中的任何一个失败.我找不到任何真正重复的现有问题,因为它们都假定或允许脚本化语法.
pipeline {
agent any
stages {
stage('stage 1') {
steps {
echo "I need to run every time"
}
}
stage('stage 2') {
steps {
echo "I need to run every time, even if stage 1 fails"
}
}
stage('stage 3') {
steps {
echo "Bonus points if the solution is robust enough to allow me to continue *or* be halted based on previous stage status"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
为了澄清,我不是在寻找如何在脚本语法中完成此任务.我试图理解这种流控制是否实际上是在声明性语法中支持和形式化的.为此,我将尝试准确定义我正在寻找的内容:
post step恶作剧.我想要真正的多个阶段,而不是一个post always …我需要让它在遵守以下条件的情况下工作。帮助我定义何时使用块和其他代码以及在哪个阶段使用?
我尝试并观察到了什么? 从上面定义的条件来看,1 和 2 按预期工作,但在我的以下尝试中没有 3 和 4。
在C1和C2,我加了catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE')指继续詹金斯管道失败过舞台。
但我观察到的是——