adi*_*pta 8 fail-fast jenkins jenkins-pipeline
我有具有动态并行阶段的管道,如果任何阶段失败,我希望我的管道快速失败。我试图添加 failFast: true 但我的管道卡在“在阶段 ABC 失败”。
stage("Deploy") {
steps {
script {
def stages = createStages("Name", "Project")
fastFail: true
for (stage in stages) {
parallel stage
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
avi*_*amg 17
解决方案:在 Jenkins 管道上使用failFast 标志。
来自文档:您可以通过向
failFast包含并行的阶段添加true 来强制所有并行阶段在其中一个失败时中止。
请注意,如果在每个作业中都启动了代理节点(如果管道中的作业 'a' 失败但作业 'b' 仍在寻找节点并且尚未启动,则所有作业都将被触发并退出(如果一个失败),它将继续 - [这是一个边缘情况])。
示例-选项是:
1 .在您的选项管道中使用 parallelsAlwaysFailFast 方法:
pipeline {
agent any
options {
parallelsAlwaysFailFast()
}
stages {
stage('Non-Parallel Stage') {
steps {
echo 'This stage will be executed first.'
}
}
stage('Parallel Stage') {
when {
branch 'master'
}
parallel {
stage('Branch A') {
agent {
label "for-branch-a"
}
steps {
echo "On Branch A"
}
}
stage('Branch B') {
agent {
label "for-branch-b"
}
steps {
echo "On Branch B"
}
}
stage('Branch C') {
agent {
label "for-branch-c"
}
stages {
stage('Nested 1') {
steps {
echo "In stage Nested 1 within Branch C"
}
}
stage('Nested 2') {
steps {
echo "In stage Nested 2 within Branch C"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
2.平行使用前使用 failFast true
stage('Parallel Stage') {
when {
branch 'master'
}
failFast true
parallel {
Run Code Online (Sandbox Code Playgroud)
3.在地图中配置作业并在开启failFast属性的情况下执行。
jobsList = [
{job: 'jobA', parameters: [booleanParam(name: 'flag', value: true)]},
{job: 'jobB', parameters: [booleanParam(name: 'flag', value: true)]}
]
jobsList.failFast = true
parallel(jobsList)
Run Code Online (Sandbox Code Playgroud)