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.

23
demandé sur rohits 2012-09-02 11:39:45

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.

Voici une capture d'écran: enter image description here

9
répondu JESii 2017-10-26 15:02:35

il n'y a pas une telle fonctionnalité dont je suis au courant. JENKINS-8900 le demande.

6
répondu Jesse Glick 2013-03-19 13:19:48

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.

3
répondu Ian 2016-04-04 18:38:42

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...

2
répondu Łukasz Rżanek 2012-09-02 09:59:38

dans les travaux de pipeline, vous pouvez envelopper votre(vos) étape (s) avec timeout comme suit:

timeout(time: 5, unit: 'MINUTES') { // steps to execute }

1
répondu katrash 2018-03-20 22:30:22

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.

1
répondu Hemant 2018-05-02 05:59:44

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

0
répondu Alex Lowe 2018-05-23 13:03:39

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

0
répondu Chuan 2018-07-12 09:20:25