Условные стадии Дженкинса - PullRequest
       17

Условные стадии Дженкинса

0 голосов
/ 19 сентября 2019

Я использую декларативный конвейер Jenkins.У меня есть этап, на котором я получаю ввод от пользователя, например

//Input 
    stage ('Manual Input'){
        agent none
        steps {
            input message: "Please Approve", ok: 'Approve'
        }
    }

. Я не хочу, чтобы какой-либо агент удерживался, пока Дженкинс ждет завершения шага вручную, поэтому я использовал agent none.

Я хочу знать, есть ли способ, чтобы этот этап выполнялся условно.

Продолжая эту тему:

pipeline {
agent none

parameters {
    choice(choices: "No\nYes",
        description: 'Choose Yes to wait for Manual Input',
        name: 'Input')
}
stages {

    stage ('Stage_1'){
        agent any
        steps {
           //Some Steps here
        }
    }

    //Input stage which should only get executed if ${Input} is Yes
    // Or else Directly go to Stage 3

    stage ('Manual Input'){
        agent none
        steps {
            input message: "Please Approve", ok: 'Approve'
        }
    }

stage ('Stage_3'){
        agent any
        steps {
           //Some Steps here
        }
    }
}
}

Я хочу, чтобы Дженкинс выполнил "Stage_1",затем выполните этап «Ручной ввод» только в том случае, если для параметра «Вход» задано «Да» или пропустите этап «Ручной ввод» и перейдите к «Этап_3».

Я не могу выполнить if/else в script{}блок на этапе «Ручной ввод» из-за agent none.Выдает ошибку.

Ваша помощь очень ценится!ТИА

1 Ответ

0 голосов
/ 19 сентября 2019

По сути, все, что вам нужно сделать, это добавить оператор when на втором этапе, вы хотите, чтобы он выглядел следующим образом:

stage ('Manual Input'){
    agent none
    when{
        expression { params.Input == 'Yes' }
    }
    steps {
        input message: "Please Approve", ok: 'Approve'
    }
}

Документацию по этому можно найти здесь.(Вы увидите, что для этого конкретного случая equals более уместно)

...