如何在Jenkinsfile中使用环境变量

时间:2019-05-13 20:27:07

标签: jenkins jenkins-pipeline jenkins-groovy xl-deploy

(请勿将其标记为重复,我正在寻找解决方案,但我的案子没有任何作用)

我遇到了类似此处提到的问题。 Jenkinsfile Declarative Pipeline defining dynamic env vars

我正在尝试通过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}"来创建 我在詹金斯管道中尝试了以下代码:

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}"

有什么我可以尝试的吗?可能是常规代码或phyton代码。请帮助

1 个答案:

答案 0 :(得分:1)

未正确为您的packageid环境变量分配一个串联字符串。字符串插值引号内有文字引号。您应该将其更改为:

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

仅插入字符串,这是您想要的功能。

此外,您无需在方法参数的空字符串内插入环境变量,因此可以将方法调用清理为:

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