Использование переменной среды Jenkins в скрипте Pipeline SH - PullRequest
1 голос
/ 06 мая 2019

Я не могу найти способ использовать BUILD_NUMBER, предоставленный jenkins в скрипте sh. Я прочитал некоторые ответы на подобные вопросы, но, похоже, ничего не помогло.

node {
    echo "Build number 1 $BUILD_NUMBER"
    // output ok

    stage('stage1') {
        echo "Build number 2 $BUILD_NUMBER"
        // output ok

        def BUILD_NUMBER = "$BUILD_NUMBER"

        withCredentials([sshUserPrivateKey(credentialsId: 'github-rsa-key', variable: 'RSAKEY')]) {
            echo "Build number 3 " + BUILD_NUMBER
            // output ok

            echo "Build number 4 $BUILD_NUMBER"
            // output ok

            // -----------------

            sh 'echo $BUILD_NUMBER' // NullPointer
            sh "echo $BUILD_NUMBER" // NullPointer
            sh "echo \$BUILD_NUMBER" // NullPointer
            sh "echo BUILD_NUMBER" // NullPointer
            withEnv(["BUILD_NUMBER=BUILD_NUMBER"]) {
                sh "echo $BUILD_NUMBER" // NullPointer!!
            }
            env.BUILD_NUMER = "$BUILD_NUMBER"
            sh "echo $BUILD_NUMBER" // NullPointer
            sh "echo ${env.BUILD_NUMBER}" // NullPointer
        }
    }
}

1 Ответ

2 голосов
/ 06 мая 2019

Вот простой пример, который работает для меня. Дженкинс 2.164.2

Отредактируйте, чтобы добавить также физический скрипт: /tmp/script.sh содержит ..

#!/bin/bash

echo "Script: - Build number: $BUILD_NUMBER"

И работа Дженкинса

node {
    echo "Node: Build number: $BUILD_NUMBER"

    stage('stage1') {
        echo "Stage: Build number: $BUILD_NUMBER"

        sh ("echo Shell: Build number: $BUILD_NUMBER")

        sh ("/tmp/script.sh")
    }
}

В этом примере используется блок withCredentials. Обратите внимание на одинарные кавычки, на которые здесь ссылаются - https://jenkins.io/doc/pipeline/steps/credentials-binding/

node {
    echo "Build number 1 $BUILD_NUMBER"
    // output ok

    stage('stage1') {
        withCredentials([string(credentialsId: 'my_password', variable: 'TOKEN')]) {
            sh '''
               echo "Shell: Build number: $BUILD_NUMBER"
            '''
            sh ('/tmp/script.sh')
        }
    }
}
...