Как использовать переменную окружения внутри Jenkinsfile - PullRequest
1 голос
/ 13 мая 2019

(не помечайте как дубликат, я искал решение, но в моем случае ничего не работает)

У меня возникла проблема, подобная упомянутой здесь. Декларативный конвейер Jenkinsfile, определяющий динамические переменные env

Я пытаюсь развернуть приложение через jenkinsfile.Для этого я должен выполнить эту команду на этапе развертывания в jenkins (если я жестко закодировал значение, то оно работает нормально):

xldDeploy serverCredentials: 'usernam', environmentId: 'Environments/SysTest1/SysTest1_1', packageId: 'Applications/Testapp/testapp_1.0.4.5.Build39_TAG-test'

"testapp_1.0.4.5.Build39_TAG-test" генерируется вПродолжительность.Который может быть создан путем объединения "${TagVersion}.Build${env.BUILD_NUMBER}_${ComponentTagName}" Я попробовал приведенный ниже код в моем конвейере jenkins:

stage('Deploy') {  
   node('noibuild01') {
    if ("${env.Build_WildflyCPECommon}" == 'true') {
    echo "${TagVersion}"
    echo "${ComponentTagName}"
    echo "${env.BUILD_NUMBER}"
    script {
                    env.buildNumber = "${TagVersion}.Build${env.BUILD_NUMBER}_${ComponentTagName}"
                    env.packageid = "'Applications/Testapp/${env.buildNumber}'"
                }
    echo "${env.buildNumber}"
    echo "${env.packageid}"

    xldDeploy serverCredentials: 'nex8voo', environmentId: 'Environments/SysTest1/SysTest1_1', packageId: "${env.packageid}"
    }
    }
  }

Я проверил вывод, он показывает правильно:

echo "${env.buildNumber}" giving
testapp_1.0.4.5.Build39_TAG-test
echo "${env.packageid}" giving 
'Applications/Testapp/testapp_1.0.4.5.Build39_TAG-test'

Но xldDeploy serverCredentials: 'username', environmentId: 'Environments/SysTest1/SysTest1_1', packageId: "${env.packageid}" - этопринимая как [/repository/ci/'Applications/Testapp/testapp_1.0.4.5.Build39_TAG-test ']: объект хранилища [' Applications / Testapp / testapp_1.0.4.5.Build39_TAG-test '] не найден

Я не могу использовать packageId: "${env.packageid}".

Могу ли я попробовать что-нибудь?может быть заводной или фитонный код.Пожалуйста, помогите

1 Ответ

1 голос
/ 13 мая 2019

Ваша переменная окружения packageid не имеет правильной связанной строки. У вас есть буквальные кавычки внутри кавычек интерполяции строки. Вы должны изменить его на:

env.packageid = "Applications/Testapp/${env.buildNumber}"

только для интерполяции строки, что является необходимой вам функциональностью.

Кроме того, вам не нужно интерполировать переменную среды внутри пустой строки для параметра вашего метода, поэтому ваш вызов метода можно очистить как:

xldDeploy serverCredentials: 'nex8voo', environmentId: 'Environments/SysTest1/SysTest1_1', packageId: env.packageid
...