scripted - post build actions in jenkins pipeline
Jenkins Pipeline Condicional Paso/Etapa (2)
Haciendo lo mismo en la sintaxis de canalización declarativa, a continuación se muestran algunos ejemplos:
stage(''master-branch-stuff''){
agent any
when{
branch ''master''
}
steps {
echo ''run this stage - ony if the branch = master branch''
}
}
stage(''feature-branch-stuff'') {
agent label:''test-node''
when { branch "feature/*" }
steps {
echo ''run this stage - only if the branch name started with feature/''
}
}
stage(''expression-branch'') {
agent label:''some-node''
when {
expression {
return env.BRANCH_NAME != ''master'';
}
}
steps {
echo ''run this stage - when branch is not equal to master''
}
}
stage(''env-specific-stuff'') {
agent label:''test-node''
when {
environment name: ''NAME'', value: ''this''
}
steps {
echo ''run this stage - only if the env name and value matches''
}
}
Próximas maneras más efectivas:
https://issues.jenkins-ci.org/browse/JENKINS-41187
Mire también:
https://jenkins.io/doc/book/pipeline/syntax/#when
ACTUALIZAR
Nueva cláusula WHEN
REF:
https://jenkins.io/blog/2018/04/09/whats-in-declarative
igual - Compara dos valores - cadenas, variables, números, booleanos - y devuelve verdadero si son iguales. Sinceramente, no estoy seguro de cómo nos perdimos agregar esto antes. Puede hacer comparaciones "no iguales" utilizando la combinación no {igual ... ... también.
changeRequest: en su forma más simple, esto será verdadero si esta canalización está creando una solicitud de cambio, como una solicitud de extracción de GitHub. También puede hacer comprobaciones más detalladas de la solicitud de cambio, lo que le permite preguntar "¿se trata de una solicitud de cambio en la rama maestra?" y mucho más.
buildingTag: una condición simple que solo comprueba si la canalización se ejecuta contra una etiqueta en SCM, en lugar de una rama o una referencia de confirmación específica.
etiqueta: un equivalente más detallado de buildingTag, que le permite verificar el nombre de la etiqueta.
¿Cómo ejecuta un paso / etapa de compilación solo si se trata de una rama específica?
IE Ejecutar todo para cada solicitud / rama de extracción, pero si la rama que se está construyendo se llama implementación, ¿también se ejecuta el paso de implementación?
Solo use
if
y
env.BRANCH_NAME
, por ejemplo:
if (env.BRANCH_NAME == "deployment") {
... do some build ...
} else {
... do something else ...
}