当前设置:
DevRepo1
在Jenkins的PR
中构建(C#服务器端,前端为Angular)AutoRepo1
(用于集成/ API测试的NodeJS,用于UI的量角器)中运行自动化集成和UI测试DevRepo1/staging
分支中到目前为止,这一直很吸引人,直到现在为止,当我们添加新环境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/staging
或DevRepo1/integration
,因此BRANCH_ENV
变量将具有值staging
或integration
。
现在,我想将其导出为环境变量,稍后在NodeJS测试中将其读取,并根据环境构造API端点。
但是printenv
shell步骤未显示在TEST_ENVIRONMENT
步骤中设置的environment {}
。
有人可以指出我在这里缺少的内容以及如何实现这一目标吗?