【问题标题】:Jenkinsfile environment variables not available with parameter variablesJenkinsfile 环境变量不适用于参数变量
【发布时间】: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


    【解决方案1】:

    在您以内联方式发送的 JSON blob 中,确保对于多行字符串,您使用“””来分隔这些字符串,而不是“”。

    代替:

     ... importInfo: '''{...'''
    

    经过:

    ...importInfo: """{..."""
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-18
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2018-10-15
      相关资源
      最近更新 更多