Jenkins Pipeline: “l'entrée” dans l'étape blocs exécuteur testamentaire
Après être passé par le pipeline et Jenkinsfile de la documentation, je suis un peu confus sur la façon de créer un Stade -> Production pipeline.
Une façon est d'utiliser l' input
étape comme
node() {
stage 'Build to Stage'
sh '# ...'
input 'Deploy to Production'
stage 'Build to Production'
sh '# ...'
}
Cela semble un peu maladroit, comme cela va bloquer un exécuteur testamentaire, tout le temps jusqu'à ce que vous souhaitez déployer à la production. Est-il une autre façon d'être en mesure de déployer à la production, à partir de Jenkins.
- J'ai eu la chance de mettre à jour la question du titre de "Créer de la Scène et Prod pipelines avec Jenkins" à un plus description.
Vous devez vous connecter pour publier un commentaire.
MODIFIER (Oct 2016): Veuillez voir mon autre réponse "L'utilisation d'étape et de verrouillage" ci-dessous, qui comprend récemment introduit des fonctionnalités.
Utilisation
timeout
ÉtapeComme première option, vous pouvez envelopper votre
sh
étape dans untimeout
étape.Cela empêche l'accumulation après l'expiration du délai.
Déplacer
input
l'Étape à la Mouche ExécuteurUne autre option est de ne pas allouer un poids lourd de l'exécuteur de la
input
étape. Vous pouvez le faire en utilisant lainput
étape à l'extérieur de lanode
bloc, comme ceci:Ce
esta probablement le plus élégant, mais peut encore être combiné avec letimeout
étape.EDIT: Comme l'a souligné @amuniz, vous devez stash/unstash le contenu de l'espace de travail, comme les différents nœuds respectivement de l'espace de travail répertoires peut être alloué pour les deux
node
étapes.Étant donné les progrès récents de Jenkins pipelines, probablement le meilleur moyen serait le suivant (source: jenkins.io/blog):
Utilisation
milestone
etlock
lock
étape (à partir de la verrouillable-ressources plugin) permet de verrouiller certaines ressources afin que un seul pipeline d'exécution peut passer à ce stade simultanément (vous ne voulez pas exécuter deux déploiements simultanément, n'est-ce pas?)jalon
étape (à partir de la pipeline-étape de l'étape plugin) pour abandonner les vieux pipeline exécutions, si une plus récente commettre déjà atteint le cap (vous ne voulez pas laisser un ancien commit qui se bloque plus dans CI écraser le déploiement d'un nouveau commit, n'est-ce pas?).Je vous recommande de lire toute l'histoire, qui comprend d'autres informations utiles.
Les crédits vont à @amuniz, qui est le maintien de ces plugins.
milestone
etlock
ne suffisent pas à résoudre le cas des OP problème de blocage d'un exécuteur testamentaire bien, non? La clé ici encore semble être pour leinput
pas être définie en dehors de lanode
bloc.milestone
etlock
sont juste à la prévention de plusieurs générations à partir de procéder au Déploiement de l'action.Vous devez utiliser l'entrée de l'étape à l'extérieur de n'importe quel nœud de bloc, de sorte qu'il ne détient aucun exécuteur testamentaire:
Et vous pouvez verrouiller le déployer étape si vous voulez un seul déployer à la fois:
Noter que la clé est ici la
stash
étape que vous pouvez déplacer artefacts d'un nœud à l'autre (on pourrait partager le même nœud pour les deux actions, mais l'espace de travail n'est pas accordé à être intacte entre les deux nœud appels, spécialement si peu de temps passe en attente surinput
).