如何以编程方式导出 Jenkins 构建变量
How to export Jenkins build variable programatically
我正在尝试对这个插件做一点修改 https://github.com/bitbar/testdroid-run-in-cloud-plugin。
我想将 Testdroid API 提供的测试结果 URL 导出为工作环境变量,例如 TEST_CLOUD_LINK。
我在 CloudLink class 中找到了保存此信息的变量,但我不确定如何将其导出为环境变量以在构建中使用。
谁能帮忙举个例子?
我设法让它工作了。
首先我定义了一个 Action class 实现 EnvironmentContributingAction 接口。
public class RunInCloudEnvInject implements EnvironmentContributingAction {
private String key;
private String value;
public RunInCloudEnvInject(String key, String value) {
this.key = key;
this.value = value;
}
@Override public void buildEnvVars(AbstractBuild<?, ?> abstractBuild, EnvVars envVars) {
if (envVars != null && key != null && value != null) {
envVars.put(key, value);
}
}
@Override public String getIconFileName() {
return null;
}
@Override public String getDisplayName() {
return "RunInCloudBuilderEnvInjectionAction";
}
@Override public String getUrlName() {
return null;
}
}
之后,我在实现抽象构建器的 class 的 @Override perform() 方法中修改了以下代码段。
String cloudLink = String.format("%s/#service/testrun/%s/%s", cloudLinkPrefix, testRun.getProjectId(),
testRun.getId());
build.getActions().add(new CloudLink(build, cloudLink));
RunInCloudEnvInject variable = new RunInCloudEnvInject("CLOUD_LINK", cloudLink);
build.addAction(variable);
现在我可以在 Jenkins 构建中使用我的 CLOUD_LINK 环境变量来 post 结果 url 例如在 Slack 通知中。
这是拉取请求https://github.com/jenkinsci/testdroid-run-in-cloud-plugin/pull/4
我正在尝试对这个插件做一点修改 https://github.com/bitbar/testdroid-run-in-cloud-plugin。
我想将 Testdroid API 提供的测试结果 URL 导出为工作环境变量,例如 TEST_CLOUD_LINK。 我在 CloudLink class 中找到了保存此信息的变量,但我不确定如何将其导出为环境变量以在构建中使用。
谁能帮忙举个例子?
我设法让它工作了。
首先我定义了一个 Action class 实现 EnvironmentContributingAction 接口。
public class RunInCloudEnvInject implements EnvironmentContributingAction {
private String key;
private String value;
public RunInCloudEnvInject(String key, String value) {
this.key = key;
this.value = value;
}
@Override public void buildEnvVars(AbstractBuild<?, ?> abstractBuild, EnvVars envVars) {
if (envVars != null && key != null && value != null) {
envVars.put(key, value);
}
}
@Override public String getIconFileName() {
return null;
}
@Override public String getDisplayName() {
return "RunInCloudBuilderEnvInjectionAction";
}
@Override public String getUrlName() {
return null;
}
}
之后,我在实现抽象构建器的 class 的 @Override perform() 方法中修改了以下代码段。
String cloudLink = String.format("%s/#service/testrun/%s/%s", cloudLinkPrefix, testRun.getProjectId(),
testRun.getId());
build.getActions().add(new CloudLink(build, cloudLink));
RunInCloudEnvInject variable = new RunInCloudEnvInject("CLOUD_LINK", cloudLink);
build.addAction(variable);
现在我可以在 Jenkins 构建中使用我的 CLOUD_LINK 环境变量来 post 结果 url 例如在 Slack 通知中。
这是拉取请求https://github.com/jenkinsci/testdroid-run-in-cloud-plugin/pull/4