Multijob DSL - Как «пометить» каждый phaseJob конкретным узлом / облаком / агентом в плагине Job DSL? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь пометить каждый phaseJob в multiJob DSL-плагин с определенным узлом (в моем случае это docker-cloud, созданный с помощью Docker Plugin).

Вместо того, чтобы маркировать каждый phaseJob определенным узлом (docker-cloud), он маркирует каждое задание последней упомянутой меткой docker-cloud / cloud.

Я пробовалследующий пример конфигурации DSL:

multiJob('example-multiple-job') {
    steps {
        phase('First') {
            phaseJob('JobA'){
                label('docker-a')
                shell('echo Hello World JobA!') 
                shell('sleep 1m')
            }
            phaseJob('JobB'){
                label('docker-b')
                shell('echo Hello World JobB!')
                shell('sleep 1m')
            }
        }
    }
}

Таким образом, он помечает весь multiJob меткой docker-b (как это самое последнее)

В дополнение к этому,Я попробовал следующий синтаксис:

multiJob('example-multiple-job') {
    steps {
        phase('First') {
            job('JobA'){
                label('main-docker-a')
                shell('echo Hello World JobA!') //
                shell('sleep 1m')
            }
            job('JobB'){
                label('main-docker-b')
                shell('echo Hello World JobB!')
                shell('sleep 1m')
            }
        }
    }
}

Он создает задания с ожидаемой меткой, но они не включены в проект с несколькими заданиями.

Мои ожидания:

Каждый следующий phaseJob выполняется на своем собственном узле Docker-Cloud и автоматически включается в проект с несколькими заданиями автоматически, как это было сделано без маркировки.

1 Ответ

0 голосов
/ 21 октября 2019

Через некоторое время, прочитав документацию Job DSL, я пришел с решением. На самом деле, просто нужно было прочитать его внимательнее:)

Вот рабочий пример того, как несколько заданий с собственным помеченным узлом / облаком-докером могут выполняться параллельно с докерными контейнерами

job('JobA') {
    label('docker-a')
    steps {
        shell('echo Hello World Job-A!')
        shell('sleep 1m')
    }
}

job('JobB') {
    label('docker-b')
    steps {
        shell('echo Hello World Job-B!')
        shell('sleep 1m')
    }
}

multiJob('example-multiple-job') {
    steps {
        phase('First') {
            phaseJob('JobA')
            phaseJob('JobB')
        }
    }
}

Как я понял, задания и все остальное создается отдельно, но директива multipleJob () просто помогает управлять ими всеми с помощью дополнительного поведения и функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...