Comment charger un fichier groovy et de l'exécuter
J'ai un jenkinsfile tombé dans la racine de mon projet et désirez extraire dans un fichier groovy pour mon pipeline et de l'exécuter. La seule façon que j'ai été en mesure d'obtenir ce travail est de créer un projet distinct et utiliser le fileLoader.fromGit
de commande. Je voudrais faire
def pipeline = load 'groovy-file-name.groovy'
pipeline.pipeline()
Vous devez vous connecter pour publier un commentaire.
Si votre
Jenkinsfile
et groovy fichier dans un référentiel etJenkinsfile
est chargé de SCM que vous avez à faire:Exemple.Groovy
JenkinsFile
example.
tout le temps? En outre, on peut vouloir que le script chargé peut lire et écrire des variables dans le script extérieur. Est-ce possible?.&
de l'opérateur (par exemple:def exampleMethod = example.&exampleMethod
. ça fonctionne assez bien...NoSuchFileException
${rootDir}
variable, et où/comment est-il créé? Est-elle intrinsèque à Jenkins ou personnalisé? Je suisgroovy.lang.MissingPropertyException: No such property: rootDir for class: groovy.lang.Binding
.${rootDir}
, utilisez${workspace}
, qui est défini par Jenkins. Aussi, assurez-vous de décocher la case "Léger caisse" dans le pipeline de travail de la configuration, ou bien votre.groovy
script(s) ne seront pas téléchargés à partir de SCM.@2
le nom d'espace de travail... cependant, il n'est pas tellement pour le@script
annuaire, ce qui signifie que${workspace}@script/Example.Groovy
ne fonctionnera pas lors de l'exécution simultanée des builds.${jenkins_home}/workspace/${job_name}@script/Example.Groovy
à la place.Que vous avez à faire
checkout scm
(ou d'une autre façon de checkouting code de SCM) avant de faireload
.Merci @anton et @Krzysztof Krasori, Il a bien fonctionné si j'ai combiné
checkout scm
et la source exacte du fichierExemple.Groovy
JenkinsFile
Si vous avez pipeline qui charge plus d'un fichier groovy et ceux groovy fichiers aussi faire la part des choses entre eux:
JenkinsFile.groovy
premier.groovy
seconde.groovy
Très utile thread, a eu le même problème, résolu de vous suivre.
Mon problème était le suivant:
Jenkinsfile
-> appeler unfirst.groovy
-> appelsecond.groovy
Voici ma solution:
Jenkinsfile
premier.groovy
NB: les arguments sont optionnels, les ajouter si vous avez ou laissez-le vide.
Espère que cela pourrait aide autres.