Mam zadanie potokowe, które używa dwóch oddzielnych węzłów (jeden dla kompilacji, jeden dla testu), i chciałbym udostępnić zmienną między dwoma z tych bloków kodu w moim Jenkinsfile
. Zakładam, że jest to możliwe, ale jestem nowy w tworzeniu groove i koncepcji Jenkinsfile
. Oto odpowiedni kod do tej pory:Zmienna Jenkinsfile używana w dwóch oddzielnych etapach
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'
}
}
chcę przypisać „rev” zmienną w fazie budowy, ale potem złączyć go do zmiennej SDK_VERSION w fazie testów. Mój błąd jest:
groovy.lang.MissingPropertyException: No such property: rev for class: groovy.lang.Binding
Myślę, że można po prostu zdefiniować 'rev' poza swoimi' node' bloków z 'def rev = ""'. Następnie znajduje się w kontekście globalnym i może być używany wewnątrz bloków 'node '. – fishi
Myślałem, że musi istnieć jakiś sposób, aby uczynić go globalnym, ale za każdym razem, gdy go sprawdzałem, wszystkie zasoby wskazywały na ustawienie globalnych zmiennych środowiskowych. Po prostu chciałem się upewnić, że używam go poprawnie. Dziękuję Ci! – user3270760