Jenkinsfile les variables utilisées dans les deux étapes distinctes
J'ai un pipeline de travail qui utilise deux nœuds distincts (un pour construire, l'un pour le test), et j'aimerais partager une variable entre deux de ces blocs de code dans mon Jenkinsfile
. Je suppose que c'est possible, mais je suis très nouveau pour groovy et la Jenkinsfile
concept. Voici le code pour l'instant:
node('build') {
stage('Checkout') {
checkout scm
}
stage('Build') {
bat(script: 'build')
def rev = readFile('result')
}
}
node('test') {
stage('Test') {
def SDK_VERSION = "5.0.0001.${rev}"
bat "test.cmd ${env.BUILD_URL} ${SDK_VERSION}"
archiveArtifacts artifacts: 'artifacts/**/*.xml'
junit 'artifacts/**/*.xml'
}
}
Je veux attribuer le "rev" variable dans la phase de développement, mais ensuite concaténer à la SDK_VERSION variable dans la phase de Test. Mon erreur est:
groovy.lang.MissingPropertyException: No such property: rev for class: groovy.lang.Binding
Je pense que l'on peut définir simplement
Je pensais il y a un moyen global, mais à chaque fois que je l'ai regardé, les ressources ont tous souligné à réglage global des variables d'Environnement. Je viens aussi voulait s'assurer que j'étais à l'utiliser correctement. Merci!!!!
rev
à l'extérieur de votre node
blocs avec def rev = ""
. Puis c'est dans un contexte global et peut être utilisé à l'intérieur de votre node
blocs.Je pensais il y a un moyen global, mais à chaque fois que je l'ai regardé, les ressources ont tous souligné à réglage global des variables d'Environnement. Je viens aussi voulait s'assurer que j'étais à l'utiliser correctement. Merci!!!!
OriginalL'auteur user3270760 | 2017-02-03
Vous devez vous connecter pour publier un commentaire.
Il suffit de définir la variable avant de votre
node
bloc:OriginalL'auteur mkobit
Dans un déclarative pipeline, @mkobit réponse ne fonctionne pas. Vous pouvez, cependant, switchinto script en mode explicite et l'utilisation de son étendue, par exemple comme ceci:
OriginalL'auteur Raphael