Je souhaite définir plusieurs étapes dans la syntaxe déclarative du pipeline Jenkins, qui peuvent continuer après l'échec de l'une d'entre elles. Je ne trouve aucune des questions existantes qui soient de véritables doublons, car elles supposent toutes ou autorisent une syntaxe scriptée.
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"
}
}
}
}
Pour clarifier, je ne cherche pas comment faire cela avec une syntaxe scriptée. J'essaie de comprendre si ce type de contrôle de flux est réellement pris en charge et formalisé dans une syntaxe déclarative. Pour cela, je vais essayer de définir exactement ce que je recherche:
post step
. Je veux de véritables étapes multiples, pas une étape avec une étape post always
qui contient toute ma logiqueIl se peut que je manque quelque chose, mais l’idée de opinionated déclaratif, pipeline est de fournir une couverture de la plupart des cas d’utilisation simples ... Le moment où vous avez besoin de quelque chose que le avisé n’a pas couvert , vous DEVEZ avoir recours à un pipeline scripté, il ne s'agit que d'une "exigence" de "pipeline déclaratif": cela ne va pas se produire maintenant.
Quant à vos autres "exigences", elles ont très peu de sens, car l’idée est d’envelopper la laideur de bas niveau dans des bibliothèques partagées offrant aux utilisateurs des constructions telles que:
mylib.failable_stages({
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"
}
}
}
})
Naturellement, vous devriez trouver ou mettre en œuvre une telle classe mylib
et le failable_stages
obtiendrait une fermeture et l'envelopperait dans divers codes de plomberie/passe-partout.
J'espère que c'est utile.