Используя плагин Job DSL, я пытаюсь заставить начальное задание генерировать новые задания в папке Jenkins относительно местоположения начального задания. Так что, если задание находится в папке /my-project
и создает my-job
, я бы хотел, чтобы my-job
также создавалось в /my-project
.
Цель состоит в том, чтобы сделать это без , требующей от человека, который настраивает начальное задание, помнить о необходимости вручную устанавливать контекст на этапе сборки. Вместо этого скрипт для самого начального задания должен указывать местоположение.
Подход 1
Написание начального задания так:
job("my-job") {
}
создает my job
в корне проекта Jenkins. Это совсем не то, что я хотел.
Подход 2
Изменение начального задания для включения пути
job("/my-project/my-job") {
}
создает my job
в нужной папке, но его нельзя использовать повторно. Если кто-то хочет создать второй экземпляр my job
в другой папке, он должен сначала отредактировать файл сценария начального задания.
Подход 3
Метод lookupStrategy выглядит многообещающе, но кажется полезным только в том случае, если начальное задание создает другое начальное задание. Так что, если я изменю задание на начальное значение так:
job("my-job") {
steps {
dsl {
text("job('sub-job')")
lookupStrategy('SEED_JOB')
}
}
}
Тогда my-job
все еще создается в корневой папке, но, по крайней мере, sub-job
будет создано относительно my-job
.
Подход 4
Переменная среды JOB_NAME содержит путь к папке. Можно получить желаемый эффект, выполнив некоторые манипуляции со строками, а затем применив подход из попытки 2, но это выглядит немного не элегантно.
Есть ли какой-нибудь уже запеченный механизм, позволяющий установить lookupStrategy
для выполняемой в данный момент работы?