【问题标题】:Jenkins; Inject Environment Variable in Jelly field?詹金斯;在果冻字段中注入环境变量?
【发布时间】:2014-05-22 07:30:20
【问题描述】:

这已经困扰了我一段时间,有一个包含环境变量的列表,我想在我自己的自定义插件上的一个构建的配置中使用它们,例如:

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

有人知道怎么做吗?我似乎找不到它作为果冻标签。

【问题讨论】:

    标签: java jenkins jenkins-plugins jelly


    【解决方案1】:

    您要求的变量扩展类型只能由构建步骤本身执行。如果这是您自己的插件,那么您可以应用我在此处建议的更改,否则您可以随时要求插件作者这样做。缺少任何一种,您都必须依赖 Slav 提供的解决方法。

    如果您确实有权访问插件的源代码,请参阅以下在构建步骤执行期间扩展变量的方法。我假设构建步骤类是 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. */
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢。我知道这一点,这是我们目前的解决方法。但是,我确实想知道是否可以在输入文本字段中立即解决它(参见我的图)。这样输入在作为参数发送到我的自定义插件之前就已经解析了:)
      猜你喜欢
      • 2016-11-09
      • 1970-01-01
      • 2018-07-26
      • 2016-04-07
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      相关资源
      最近更新 更多