#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. Да, я так и предполагал. К сожалению, это не то, что нужно. Необходимо приостановить выполнение конвейера для пользовательского ввода непосредственно перед шагом, выбранным разработчиком конвейера.