Параметры динамической сборки Jenkins с использованием ресурсов рабочей области проекта
Я пытаюсь установить некоторые параметры динамической сборки для пары Дженкинс Джобс. Я уже нашел плагин динамического параметра и расширяемый параметр выбора. Оба могут использовать отличные скрипты для ввода.
Теперь самое сложное. Я хочу прочитать файл project.property (текущая версия) и использовать его по умолчанию для ввода. Проблема заключалась в том, чтобы получить доступ к файлам в рабочей области. Только плагин "Extensible Choice Parameter" имел возможность включить переменную удобства для текущего проекта (AbstractProject), где я могу получить FilePath для рабочей области. Смотрите следующий скрипт:
import hudson.FilePath;
propertiesFile = new FilePath(project.getWorkspace(),"project.properties");
props = new Properties();
props.load(propertiesFile.read());
return [props["version"]]
Теперь этот плагин предлагает пользователю только список (хотя я могу сделать его редактируемым), и основным недостатком является то, что мне нужно копировать и вставлять этот скрипт в каждую работу, которую я хочу использовать (не говоря уже об изменении чего-либо для всех этих работа тоже будет мучительной)
Плагин динамических параметров имеет хорошую интеграцию скриптов, но я не вижу, как получить текущий проект. В примерах не показано ничего, что загружает параметры из фактического рабочего пространства, а только из внешних файлов.
Кто-нибудь знает, как решить любую из этих проблем?
1 ответ
Я обнаружил, что использование плагина динамических параметров вместо расширяемых или расширенных параметров позволяет запускать скрипты groovy:
- на мастера, или
- на подчиненном устройстве, на котором выполняется задание (при условии, что подчиненное устройство установлено).
Этот выбор делается с помощью флажка Remote Script: из плагина doc: "Если флажок"Remote Script"установлен, то сценарий будет выполняться на ведомом устройстве, с которого начинается сборка".
Например, я успешно перечислил файлы в рабочей области и создал меню параметров с ними, используя этот скрипт (mytest
быть моим именем работы):
def dir = "ls -1 workspace/mytest".execute().text
return dir.readLines()
Примечание: в отличие от других плагинов параметров, ожидающих текст CSV, разделенных запятыми (расширенный плагин параметров), этот ожидает объект списка Groovy, следовательно, вызов readLines()
,