Timeout sur une étape de construction de Jenkins
Dans Jenkins, est-il un moyen de donner de différents délais d'attente à chaque ou sélectionné étape de génération?
Build-time plugin out donne la fonctionnalité de timeout "avorter la construction si elle est bloquée" sur le projet complet, ce que j'ai besoin est de donner des timeouts différents pour chaque étape. De cette façon, je peux rendre mon processus plus efficace.
8 réponses
selon les versions actuelles de Jenkins, cela peut être fait. Cliquez sur "Configurer", puis sélectionnez l'onglet "Construire L'Environnement", puis définissez votre délai d'attente.
il n'y a pas une telle fonctionnalité dont je suis au courant. JENKINS-8900 le demande.
je pense que la commande timeout
de GNU coreutils pourrait être ce que vous voulez. C'est sous l'hypothèse que vos étapes de génération des scripts.
la façon la plus facile (et c'est la façon dont je le fais) est d'avoir en fait différents projets dépendants les uns des autres et de les construire dans une rangée. Il n'est pas parfait, mais l'autre option serait de surveiller l'exécution des différents plugins avec les différents outils/construire comportement.
toujours, l'approche fonctionnera, même si elle craint...
BTW, Il ya un plugin agréable qui peut vous aider à l'aide d'un ensemble de projet - construire Pipeline plugin . Je l'utilise maintenant de visualiser et de vérifier le pipeline que j'ai créé. Il est vraiment à portée de main...
dans les travaux de pipeline, vous pouvez envelopper votre(vos) étape (s) avec timeout
comme suit:
timeout(time: 5, unit: 'MINUTES')
{
// steps to execute
}
si vous ne voulez pas utiliser le plugin Jenkins et que vous voulez timeout un script ou n'importe quelle commande, alors vous pouvez utiliser L'utilitaire Linux inbuilt"timeout".
timeout -s KILL 1m ./test
la commande ci-dessus exécutera test
exécutable pendant 1 minute et si elle continue à exécuter après le timeout alors la commande timeout et tuer le processus par KILL
utilitaire.
cette question a été posée à l'origine avant L'existence du pipeline Jenkins. Bien que vous puissiez continuer à utiliser et configurer Jenkins à travers L'interface graphique, il est actuellement recommandé de faire la transition de vos projets vers le pipeline. L'Utilisation du Pipeline vous permet de suivre les changements à votre pipeline, et de le stocker en code afin qu'il soit facile de recréer votre build sur n'importe quelle machine si vous avez besoin de déplacer votre serveur Jenkins.
en utilisant le pipeline, en ajoutant un délai à une partie très spécifique de ta construction est insignifiante. La syntaxe du pipeline est simple et facile à utiliser.
timeout(time:5, unit:'DAYS') {
input message:'Approve deployment?', submitter: 'it-ops'
}
question connexe: comment ajouter une étape de temporisation au Pipeline Jenkins
exemple tiré sans vergogne de: CloudBees Top 10 Best Practices for Jenkins Pipeline Plugin
Build-timeout Plugin n'est pas applicable aux pipelines. se référer à wiki
pour le temps d'arrêt du pipeline, essayez quelque chose comme:
timeout(time: 30, unit: 'MINUTES') {
node {
sh 'foo'
}
}
réponse similaire à partir d'un autre fil: comment ajouter une étape de temporisation au Pipeline de Jenkins