Как избежать Jenkins Job DSL для перезаписи триггеров в конвейерах - PullRequest
0 голосов
/ 05 ноября 2019

Давайте начнем работу в Jenkins Job DSL Groovy, которая генерирует конвейер следующим образом:

pipeline {
    agent any
    stages {
        stage("DSL") {
            steps {
                jobDsl scriptText: """pipelineJob("test-pipeline-generated") {
                    definition {
                        cps {
                            script 'pipeline { agent(any); triggers{ cron("H/2 * * * *") }; stages { stage("Some") { steps { echo "Working ..." } } } }'
                        }
                    }
                }
                """
            }
        }
    }
}

Она генерирует конвейерное задание, которое должно быть запущено вручную в первый раз для обработки triggers определенияи все работает отлично. Однако, когда начальное задание запускается снова, оно перезаписывает определение конвейерного задания и триггеры снова пропали . Это означает, что начальное задание отключает все такие задания.

Кто-нибудь знает, есть ли какое-то решение для этого?

Мы бы хотели сохранить там триггеры, и, если в конвейере произошли изменения, он будет обработан после первого запуска. Мы не хотели бы указывать триггеры в DSL задания, поскольку пользователи используются для их указания в определении конвейера.

1 Ответ

0 голосов
/ 05 ноября 2019

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

...