Как построить задание только в том случае, если в конвейере не получилось? - PullRequest
0 голосов
/ 13 сентября 2018

Я новичок в Дженкинс. Последние несколько недель я потратил на создание заданий для выполнения цепочек команд оболочки, но теперь, когда я попытался выяснить, как связать воедино задания, мне не удалось найти ответ, который я искал.

У меня есть задание CreateStack, и если оно каким-то образом завершается сбоем, я бы хотел запустить DeleteStack, чтобы удалить то, что оставил CreateStack при сбое. Если CreateStack не дает сбоя, создайте остальные задания.

Примерно так:

b = build(job: "CreateStack", propagate: false, parameters: [string(name: 'TASVersion', value: "$TASVersion"), string(name: 'CloudID', value: "$CloudID"), string(name: 'StackName', value: "$StackName"), booleanParam(name: 'Swap partition required', value: true)]).result

if(b == 'FAILURE') {
    echo "CreateStack has failed. Running DeleteStack."
    build(job: "DeleteStack", parameters: [string(name: 'CloudID', value: "$CloudID"), string(name: 'StackName', value: "$StackName")]
}
else {
    build job: 'TAS Deploy', parameters: [string(name: 'FT_NODE_IP', value: "$FT-NodeIP"), string(name: 'TASVersion', value: "RawTASVersion")]
}

Может кто-нибудь помочь мне с этим, пожалуйста? Кроме того, я могу использовать переменные в сценарии конвейера, как это? Я установил параметры проекта и добавил необходимые параметры выбора, например: $ StackName

1 Ответ

0 голосов
/ 13 сентября 2018

Вы можете попробовать что-то подобное в скриптовом конвейере:

node {
    try {
        stage('CreateStack') {
            build(job: 'CreateStack', parameters: [<parameters>])
        }
        stage('OtherJobs') {
            #build the rest of the jobs
        }
    } catch (error) {
        build(job: 'DeleteStack', parameters: [<parameters>])
        currentBuild.result = "FAILURE"
        throw error
    } finally {
        build(job: 'LastJob', parameters: [<parameters>])
    }
}

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

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