1

我正在尝试对此插件https://github.com/bitbar/testdroid-run-in-cloud-plugin进行轻微修改。

我想将 Testdroid API 提供的测试结果 URL 导出为作业环境变量,例如 TEST_CLOUD_LINK。我在 CloudLink 类中找到了保存此信息的变量,但我不确定如何将其导出为 env 变量以在构建中使用。

任何人都可以帮忙举个例子吗?

4

1 回答 1

3

我设法让它工作。

拳头我定义了一个实现 EnvironmentContributingAction 接口的 Action 类。

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;
    }
}

之后,我在实现抽象构建器的类的 @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 环境变量在 Slack 通知中发布结果 url。

这是拉取请求https://github.com/jenkinsci/testdroid-run-in-cloud-plugin/pull/4

于 2016-04-28T16:29:56.467 回答