Дженкинс; Внедрить переменную среды в поле Jelly?

Это беспокоило меня некоторое время, есть список с переменными среды, и я хочу использовать их в конфигурации одной из моих сборок на моем собственном плагине, как таковой:

введите здесь описание изображения

Итак, в этом случае я хотел бы, чтобы ${WORKSPACE} разрешал путь, который был настроен средой.

Кто-нибудь знает, как это сделать? Кажется, я не могу найти его как тег Jelly.


person Rens Groenveld    schedule 22.05.2014    source источник


Ответы (2)


Тип расширения переменной, который вы запрашиваете, может быть выполнен только на самом этапе сборки. Если это ваш собственный плагин, вы можете применить изменения, которые я предлагаю здесь, в противном случае вы всегда можете попросить автора плагина сделать это. Кроме того, вам придется полагаться на предоставленный Славом обходной путь.

Если у вас есть доступ к исходному коду подключаемого модуля, вот как расширить переменные во время выполнения шага сборки. Я предполагаю, что класс этапа сборки — 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. */
}
person JZimmerman    schedule 30.05.2014

Не уверен, что именно вы просите, но вы можете получить переменную среды $WORKSPACE с помощью:

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

person Slav    schedule 29.05.2014
comment
Спасибо. Я знаю это, и это наш текущий обходной путь. Однако мне интересно, можно ли сразу разрешить это в текстовом поле ввода (см. Мой рисунок). Так что ввод уже разрешен, прежде чем он будет отправлен в качестве параметра моему пользовательскому плагину :) - person Rens Groenveld; 30.05.2014