Jenkins管道-导出环境变量用作测试URL

时间:2018-11-15 09:59:44

标签: jenkins jenkins-pipeline build-automation

当前设置:

  1. DevRepo1在Jenkins的PR中构建(C#服务器端,前端为Angular)
  2. 其中一个阶段是触发另一个Jenkins作业,该作业将从AutoRepo1(用于集成/ API测试的NodeJS,用于UI的量角器)中运行自动化集成和UI测试
  3. 如果一切顺利,PR可以合并到DevRepo1/staging分支中
  4. 质量检查手册团队可以开始验证其测试用例

到目前为止,这一直很吸引人,直到现在为止,当我们添加新环境integration时,我们也要在其中运行集成/ API测试,以便开发人员拥有安全网并提交新的更改频率更高。

这增加了根据触发自动化测试的上游作业来确定我需要在哪种环境下运行测试的需要。

我尝试过的事情:

stage ('Get env') {
        steps {
          script {
            PARENT_UPSTREAM_CAUSE = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause)?.properties?.upstreamProject
            if(PARENT_UPSTREAM_CAUSE != null) {
              BRANCH_ENV = PARENT_UPSTREAM_CAUSE.substring(PARENT_UPSTREAM_CAUSE.indexOf('/') + 1);
              println "Branch environment: ${BRANCH_ENV}"

              environment {
                TEST_ENVIRONMENT = BRANCH_ENV
              }

              sh """#!/bin/bash
                set -e
                printenv
              """
            }
          }
        }
    }

由于触发自动化测试的上游作业是DevRepo1/stagingDevRepo1/integration,因此BRANCH_ENV变量将具有值stagingintegration

现在,我想将其导出为环境变量,稍后在NodeJS测试中将其读取,并根据环境构造API端点。

但是printenv shell步骤未显示在TEST_ENVIRONMENT步骤中设置的environment {}

有人可以指出我在这里缺少的内容以及如何实现这一目标吗?

0 个答案:

没有答案