Créer resusable jenkins pipeline script
Je pense utiliser Jenkins pipeline script récemment, une question, c'est que je n'arrive pas à comprendre une puce de manière à créer des réutilisable utils code, imaginer, j'ai une fonction commune helloworld
qui sera utilisé par de nombreux travaux de canalisation, donc j'ai l'espoir de créer une utils.jar
peut injectée dans le travail classpath.
Je remarque Jenkins ont un concept similaire avec le mondial de la bibliothèque, mais mon inquiétude au sujet de ce plugin:
Car c'est un plugin, donc nous avons besoin d'installer/mettre à niveau par le biais de jenkins gestionnaire de plugin, puis il peut nécessiter de redémarrer pour appliquer la modification, ce n'est pas ce que je veux voir depuis utils peut modifier, ajouter, toujours, nous espérons que cela pourrait être disponible immédiatement.
Deuxièmement, c'est officiel jenkins partagé lib, je ne veux pas (Ou qu'ils ne s'appliquent pas nous) mettre un code privé dans jenkins repo.
Une bonne idée?
- Je ne comprends pas votre Deuxièmement.. phrase.
- Le answeres ici doit être clair, mais ce blog pourrait être très utile aussi: lvthillo.com/reusable-jenkins-pipeline-for-maven-jobs
Vous devez vous connecter pour publier un commentaire.
La Bibliothèques Partagées (docs) vous permet de faire des votre code accessible à tous de votre pipeline de scripts. Vous n'avez pas à construire un plugin pour ça et vous n'avez pas à redémarrer Jenkins.
E. g. c'est ma bibliothèque et cette Jenkinsfile qui appelle cette fonction commune.
ÉDITION (Février 2017):
La bibliothèque peuvent être accessibles via Jenkins interne serveur Git, ou déployées par d'autres moyens (par exemple par l'intermédiaire du Chef) à la(toujours possible, mais très unhandy).workflow-lib/
répertoire au sein de la jenkins répertoire home de l'utilisateur.La bibliothèque globale peut être configuré par les moyens suivants:
@Library('github.com/...')
annotation dans leJenkinsfile
pointant vers l'URL de la bibliothèque partagée repo.Un mélange de la première et de la dernière méthode serait pas explicitement chargé bibliothèque partagée qui est ensuite demandé uniquement à l'aide de son nom dans la
Jenkinsfile
:@Library('mysharedlib')
.Jenkinsfile
s ne contenant que l'appel à la canalisation.Selon la fréquence à laquelle vous prévoyez de réutiliser votre code, vous pouvez également charger une fonction (ou un ensemble de fonctions) dans le cadre d'un autre pipeline.
Cette solution vous paraît un peu lourd par rapport à StephenKing est un, mais ce que j'aime à propos de cette solution est que mes fonctions globales sont tous engagés à Git et n'importe qui peut facilement modifier sans (presque) aucune connaissance de Jenkins, juste les bases de Groovy.
Dans le script Groovy votre sont
load
ing, assurez-vous d'ajouterreturn this
à la fin. Cela vous permettra de faire des appels plus tard. Sinon, lorsque vous définissezpipeline = load global-functions.groovy
, la variable sera mis ànull
.$JENKINS_HOME/workflow-lib/
répertoire via le Chef automatiquement à partir de Github. Vous pourriez le faire aussi via Cron. Je n'aime pas l'intérieur de la pseudo-serveur git de Jenkins.return this
à la fin de vos partagé script groovy. Regardez cette réponse stackoverflow.com/questions/37800195/...Voici la solution que nous utilisons actuellement pour ré-utiliser Jenkinsfile code:
Je suis peut-être un peu moche, mais ça fonctionne realiably et en plus il nous permet également d'insérer quelques référentiel de code spécifique avant ou après le code partagé.
Jenkinsfile.tmp
script semble être extrait à un repo Git, vous pourriez probablement utiliser une base de git/scm caisse étape pour charger votre script au lieu de faire un manuel de curl.Jenkinsfile.tmp
repo Git comme un freestyle Jenkins travail qui ne vient l'interrogation régulière sur votre repo Git, puis de charger votre Jenkins fichier à partir de cet autre espace de travail.