詹金斯;在Jelly字段中注入环境变量?

时间:2014-05-22 07:30:20

标签: java jenkins jenkins-plugins jelly

这一直困扰着我一段时间,有一个包含环境变量的列表,我想在我自己的自定义插件的配置中使用它们,如下:

enter image description here

所以在这种情况下,我希望${WORKSPACE}解析为环境配置的路径。

任何人都知道如何做到这一点?我似乎无法将其视为Jelly标签。

2 个答案:

答案 0 :(得分:4)

您要求的变量扩展类型只能由构建步骤本身执行。如果这是您自己的插件,那么您可以应用我在此建议的更改,否则您可以随时要求插件作者这样做。如果没有,你将不得不依赖斯拉夫提供的解决方案。

如果您确实可以访问插件的源代码,那么在执行构建步骤期间如何扩展变量。我假设构建步骤类是SanityTestResultsToJUnitXMLBuilder。在此类的perform方法中,您需要展开源和目标目录字段。为简洁起见,我在构建步骤中通常会找到其他代码段的占位符。

public class SanityTestResultsToJUnitXMLBuilder extends Builder {
    private final String sourceDirectory;
    private final String destinationDirectory;

    /* Constructor and getters typically appear here. */

    @Override
    public void perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException {
        EnvVars environment = build.getEnvironment(listener);
        String expandedSourceDirectory = environment.expand(sourceDirectory);
        String expandedDestinationDirectory = environment.expand(destinationDirectory);

        /* The rest of the perform() logic goes here */
    }

    /* Other methods typically appear here. */

    /* The Descriptor typically appears here. */
}

答案 1 :(得分:0)

不确定您要求的是什么,但您可以通过以下方式获取$WORKSPACE环境变量:

def workspace = manager.build.getEnvVars()["WORKSPACE"]