Lorsque vous utilisez un projet de style libre, vous pouvez définir qu'après 20 minutes, la génération est abandonnée si elle n'est pas terminée. Comment est-ce possible avec un projet de pipeline Jenkins Multi Branch?
la source
Lorsque vous utilisez un projet de style libre, vous pouvez définir qu'après 20 minutes, la génération est abandonnée si elle n'est pas terminée. Comment est-ce possible avec un projet de pipeline Jenkins Multi Branch?
Vous pouvez utiliser l' étape de temporisation :
timeout(20) {
node {
sh 'foo'
}
}
Si vous avez besoin d'un autre TimeUnit
que MINUTES , vous pouvez fournir l' unit
argument:
timeout(time: 20, unit: 'SECONDS') {
EDIT août 2018: De nos jours, avec les pipelines déclaratifs les plus courants (facilement reconnus par la pipeline
construction de niveau supérieur ), les délais d'expiration peuvent également être spécifiés à options
différents niveaux (par pipeline global ou par étape):
pipeline {
options {
timeout(time: 1, unit: 'HOURS')
}
stages { .. }
// ..
}
Néanmoins, si vous souhaitez appliquer un délai d'expiration à une seule étape d'un pipeline déclaratif, il peut être utilisé comme décrit ci-dessus.
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax/
→ Référence d'étape .def n=Jenkins.instance.getNode("ETService3") if (n!=null && n.computer && n.computer.online) { echo "Online" } else { echo "Offline" // wait a little bit and try again }
Une manière délicate consiste à acquérir le nœud deux fois. La première fois avec timeout externe, la seconde avec timeout interne. Je manque aussi la fonctionnalité.Pour un pipeline déclaratif, il est conseillé d'utiliser l' étape de temporisation dans la section des options .
Le délai d'expiration a 3 paramètres que vous pouvez configurer:
time (obligatoire, int)
activité (facultatif, booléen)
unité (facultatif, valeurs: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS)
Exemples:
La documentation officielle de Jenkins a un très bel exemple d'utilisation d'un timeout:
la source
activity
a false par défaut. Quandactivity
est faux - délai d'expiration pour l'ensemble du travail,true
délai d'expiration de l'activité (pour imprimer quoi que ce soit dans le journal).timeout
pour une étape particulière de telle manière que l'étape suivante devrait se dérouler avec élégance. Dans l'exemple ci-dessus, le pipeline est abandonné après l'expiration du délai et les étapes suivantes ne sont pas exécutées. Existe-t-il un moyen de répondre à mes besoins? Exemple de code pour le timeout d'une étape donnée (du document officiel Jenkins):pipeline { agent any stages { stage('Example') { options { timeout(time: 1, unit: 'HOURS') } steps { echo 'Hello World' } } } }