When stages within a matrix are skipped using the when, directive, the build is not rendered correctly. The first cell of the matrix is correctly shown as 'Skipped', the subsequent cells are shown as 'Passed' (in 0s). This is very confusing.
#!groovy
pipeline {
agent none
parameters {
booleanParam( name: 'matrix', defaultValue: true )
booleanParam( name: 'parallel', defaultValue: true )
}
stages {
stage( 'matrix' ) {
matrix {
axes {
axis {
name 'server'
values 'server-one', 'server-two'
}
}
stages {
stage( 'matrix' ) {
agent {
label "${server}"
}
when {
expression { params.matrix }
}
steps {
echo "matrix ${server}"
}
}
}
}
}
stage( 'parallel' ) {
parallel {
stage( 'parallel-one' ) {
agent {
label 'server-one'
}
when {
expression { params.parallel }
}
steps {
echo 'parallel-one'
}
} stage( 'parallel-two' ) {
agent {
label 'server-two'
}
when {
expression { params.parallel }
}
steps {
echo 'parallel-two'
}
}
}
}
} // stages
} // pipeline
 |