用户需要能够选择跳转到哪个阶段而不是下一个阶段。可以在Jenkins管道中完成吗?例如,在第一阶段之后,用户可以选择跳转到哪个阶段:
节点{ 阶段('one'){ sh'echo one' 输入' stage2 | stage3 | STAGE4' } 阶段('two'){ sh'echy two' } 阶段('三'){ sh'回声三'' } 阶段('四'){ sh'回声四'' } }
答案 0 :(得分:1)
您可以在脚本管道中执行此操作。我在声明中创建了这个,但如果这是您的偏好,应该很容易将其反向工程到脚本管道。
基本上,您在输入中提供choice参数,然后使用该值来确定是否应该运行该阶段。在脚本化管道中,您可以使用if / then,或switch语句或任何数量的东西。
pipeline {
agent none
stages {
stage ('First') {
agent any
steps {
echo "First dummy stage"
}
}
stage ('Input') {
agent none
steps {
script {
myStage = input message: 'What stage do you want to run now?', parameters: [choice(choices: 'Stage1\nStage2\nStage3', description: '', name: 'Stage')]
}
echo myStage
}
}
stage('Stage1') {
when {
expression { myStage == 'Stage1' }
}
steps {
echo "Running Stage1"
}
}
stage('Stage2') {
when {
expression { myStage == 'Stage2' }
}
steps {
echo "Running Stage2"
}
}
stage('Stage3') {
when {
expression { myStage == 'Stage3' }
}
steps {
echo "Running Stage3"
}
}
}
}
答案 1 :(得分:0)
你可以使用groovy来做到这一点。在Jenkinsfile
中,您可以定义将执行groovy脚本的条件。作为简化示例,您可以执行以下操作:
node {
if(lint == true) {
load("lint.groovy").lint()
}
if(test == true) {
load("test.groovy").test()
}
}
在上面的示例中,lint.groovy
包含lint()
个函数,该函数具有lint
阶段。对于定义test.groovy
函数和test()
阶段的test
也是如此。
答案 2 :(得分:0)
感谢您的帮助。这是我已经解决的问题,我在if ... else条件
中包含了各个阶段{{1}}
}