【发布时间】:2023-02-02 00:07:04
【问题描述】:
我正在使用 Jenkins plugin 将测试运行结果上传到 Jira。使用这个插件,我可以发送两个 JSON blob 数据用于导入,但这些 JSON blob 中的变量只能是环境变量(不是 Jenkinsfile 中通常可用的变量)。
当我运行时,它识别来自参数块的环境变量(这是一个参数化构建),但它不识别我设置的任何环境变量,无论是在管道中的环境 {} 块中还是通过嵌套构建步骤一个 withEnv() {} 块。
作为健全性检查,就在相关步骤之前,我回显了两个环境变量,一个来自参数块,一个来自环境块,并且都按预期输出到控制台,但随后,正如插件所消耗的那样,只有来自参数块的变量被读取为变量,其余的作为字符串保留。
那么,这些环境变量在幕后的存储/管理方式是否存在差异?
因此,例如,这里是参数和环境块:
parameters {
choice(name: 'ENVIRONMENT', choices: ['dev', 'test', 'staging', 'prod'], description: 'Select the environment to run against.')
choice(name: 'TESTS', choices: ['All', 'API', 'Web'], description: 'Select the tests to run.')
}
environment {
PROJECT_KEY = "$jiraProjectKey"
TEST_PLAN_KEY = "$testPlanKeys[$env.ENVIRONMENT]"
PRODUCT_NAME = "$productName"
TEAM_NAME = "$teamName"
}
当我在 JSON blob 中使用这些环境变量来设置 Jira 中测试执行的摘要字段时,一行看起来像这样:
...
"summary": "${ENVIRONMENT} - ${PRODUCT_NAME} - ${TESTS} Tests",
...
由此产生的问题摘要是:
开发 - ${PRODUCT_NAME} - API 测试
因此它将正确解释由参数块设置的环境变量,而不是我在环境块中明确设置的环境变量。
【问题讨论】:
标签: jenkins-pipeline jenkins-plugins jira-xray