Является ли `input` директивой или шагом

#jenkins #jenkins-pipeline #jenkins-declarative-pipeline

#дженкинс #дженкинс-конвейер #дженкинс-декларативный-конвейер

Вопрос:

Директива ввода на этапе позволяет вам запрашивать ввод, используя шаг ввода. ..

(цит. Синтаксис конвейера, документация пользователя Jenkins https://jenkins.io/doc/book/pipeline/syntax/#input )

Так input это на самом деле директива или шаг? Как понимать фразу «используя шаг ввода»

Используемый здесь конвейер (извлечение):

 stage('StageName') {
    when { environment name: 'VAR1', value: 'true' }
    steps {
        input {
            message: "press OK to continue"
        }
        dir('doithere') {
            git url: gitcoord[0], branch: gitcoord[1], credentialsId: gitcoord[2] 
            cmd('ls -alh') 
        }
    }
}
  

Время выполнения:

 WorkflowScript: 336: Expected a step @ line 336, column 34.
                       message: "press OK to continue"
                                ^
  

Ответ №1:

В декларативном конвейере вы должны поместить его непосредственно под stage уровнем («директива»). Тогда это в форме input { .. } .

В скриптовых конвейерах (или script блоках в декларативных конвейерах) это существует как обычный шаг. Тогда синтаксис будет input(..) :

 stage('StageName') {
    when { environment name: 'VAR1', value: 'true' }
    steps {
        dir('doithere') {
            git url: gitcoord[0], branch: gitcoord[1], credentialsId: gitcoord[2] 
            cmd('ls -alh') 
            input(message: "press OK to continue")
            cmd('rm -rf *')
        }
    }
}
  

Ответ №2:

Приведенный ниже вариант сработал для меня:

 pipeline {
    agent any
    stages {
        stage('stage1') {
            input {
                message "press OK to continue"
            }
            steps {
                sh "mkdir dir1"
                dir("dir1") {
                    sh "echo 'Hello'"
                }
            }
        }
    }
}
  

Комментарии:

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