Я пытаюсь создать конвейер в Дженкинсе, где первый этап может создавать или не создавать файлы для последующего хранения. Я хотел бы сделать следующие этапы условными в зависимости от того, существует ли сохраненный файл. Я не уверен, как это сделать, поскольку шаг unstash идет после выражений «когда».
Грубый набросок:
Этап 1: Запустите сценарий, который может генерировать где угодно из файлов 0-3 (для сохранения и использования в качестве файлов инвентаризации для Ansible)
Этап 2: Если файл1 существует, запустите playbook с файлом1 в качестве инвентаря
Этап 3: если файл2 существует, запустите playbook с файлом2
и т. Д.
Я пробовалустановка переменной в блоке среды с опцией fileExists, но это будет оценено перед выполнением любых этапов.
environment {
FILE_EXISTS = fileExists './filename'
}
stages {
stage ('Conditional Stage') {
when {
allOf {
expression { params.FILE_EXISTS == true }
expression { env.BRANCH_NAME != 'master' }
}
}
steps {
unstash 'files'
sh 'ansible ... '
}
}
}
(пробовал оба params.FILE_EXISTS и env.FILE_EXISTS)
Аналогичным образом пробовал выражение 'when' внутри сцены.
stage ('Conditional Stage') {
when {
allOf {
expression { fileExists './filename' }
...
}
}
steps {
unstash 'files'
sh 'ansible ...'
}
Оба метода пропускают этап из-за условного.
Я бы хотел, по возможности, избежать архивирования файлов, поскольку они когда-либо понадобятся только для текущей сборки.
Есть кто-нибудьудалось это сделать, или я упустил что-то простое?
Еще одно замечание: файлы будут спрятаны на ведомом устройстве Windows, а затем спарены на ведомом устройстве Linux. Это не было проблемой с stash / unstash, но решил, что стоит упомянуть, что файлы всегда будут распаковываться на другом ведомом устройстве, а не на том, где они были спрятаны.