如何在 Jenkinsfile 中使用环境变量
How to use environment variable inside Jenkinsfile
我遇到了与此处提到的类似问题:
我正在尝试通过 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}"
。
有什么我可以尝试的吗?也许 Groovy 或 Python 代码?
您的 packageid
环境变量未正确分配串联字符串。您在字符串插值引号内有文字引号。您应该将其更改为:
env.packageid = "Applications/Testapp/${env.buildNumber}"
只插入字符串,这就是您想要的功能。
此外,您不需要在方法参数的空字符串中插入环境变量,因此您的方法调用可以清理为:
xldDeploy serverCredentials: 'nex8voo', environmentId: 'Environments/SysTest1/SysTest1_1', packageId: env.packageid
我遇到了与此处提到的类似问题:
我正在尝试通过 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}"
。
有什么我可以尝试的吗?也许 Groovy 或 Python 代码?
您的 packageid
环境变量未正确分配串联字符串。您在字符串插值引号内有文字引号。您应该将其更改为:
env.packageid = "Applications/Testapp/${env.buildNumber}"
只插入字符串,这就是您想要的功能。
此外,您不需要在方法参数的空字符串中插入环境变量,因此您的方法调用可以清理为:
xldDeploy serverCredentials: 'nex8voo', environmentId: 'Environments/SysTest1/SysTest1_1', packageId: env.packageid