web-dev-qa-db-fra.com

Délai d'attente sur une étape de construction de Jenkins

Dans Jenkins, existe-t-il un moyen de donner des délais différents à chaque étape de construction ou à celle sélectionnée?
Le plug-in de construction donne la fonctionnalité de timeout "Abandonner la construction si elle est bloquée" sur un projet complet, ce dont j'ai besoin, c'est de donner des timeouts différents pour chaque étape. De cette façon, je peux rendre mon processus plus efficace.

26
rohits

À partir des versions actuelles de Jenkins, cela peut être fait. Cliquez sur 'Configurer', puis sélectionnez l'onglet 'Environnement de construction', puis définissez votre délai d'attente.

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

13
JESii

Je ne suis au courant d'aucune fonctionnalité de ce type. JENKINS-8900 le demande.

6
Jesse Glick

Je pense que la commande timeout de GNU coreutils pourrait être ce que vous voulez. Ceci est basé sur l'hypothèse que vos étapes de construction sont des scripts.

3
Ian

Dans les travaux en pipeline, vous pouvez encapsuler vos étapes avec timeout comme suit:

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

3
katrash

Le moyen le plus simple (et c’est ce que je fais) est d’avoir différents projets dépendants les uns des autres et de les construire en ligne. Ce n'est pas parfait, mais l'autre option serait de surveiller l'exécution de différents plugins avec différents outils/comportement de construction. 

Néanmoins, l'approche fonctionnera, même si ça craint ...

En passant, il existe un plugin Nice qui peut vous aider en utilisant un ensemble de projets - Build Pipeline plugin . Je l'utilise actuellement pour visualiser et vérifier le pipeline que j'ai créé. C'est vraiment pratique ...

2
Łukasz Rżanek

Si vous ne souhaitez pas utiliser le plug-in Jenkins et que vous souhaitez que le script ou toute commande soient expirés, vous pouvez utiliser l'utilitaire intégré Linux "timeout".

timeout -s KILL 1m ./test

La commande ci-dessus exécutera l'exécutable test pendant 1 minute. Si l'exécution continue après le délai imparti, la commande expire et élimine le processus à l'aide de l'utilitaire KILL.

1
Hemant

Cette question avait été posée avant que le pipeline Jenkins n'existe. Bien que vous puissiez continuer à utiliser et à configurer Jenkins via l'interface graphique, il est actuellement recommandé de transférer vos projets dans le pipeline. L'utilisation du pipeline vous permet de suivre les modifications apportées à votre pipeline et de le stocker sous forme de code afin de pouvoir facilement recréer votre version sur n'importe quel ordinateur si vous devez déplacer votre serveur Jenkins.

À l'aide du pipeline, l'ajout d'un délai d'attente à une partie très spécifique de votre construction est trivial. 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 délai d'attente au pipeline Jenkins

Exemple sans vergogne tiré de: CloudBees Top 10 des meilleures pratiques pour le plugin Jenkins Pipeline

0
Alex Lowe

Le plug-in de délai de construction ne s'applique pas aux pipelines. se référer à wiki

Pour le délai d'attente, essayez l'une des solutions suivantes:

timeout(time: 30, unit: 'MINUTES') {
  node {
    sh 'foo'
  }
}

Réponse similaire d’un autre fil de discussion: Comment ajouter un délai d’expiration au pipeline Jenkins

0
Chuan