如何在 Jenkinsfile 声明管道中动态更改阶段名称?
How make dynamic change stage name in Jenkinsfile Declarative pipeline?
我有 Jenkinsfile(脚本化管道)
def template1 = "spread_sshkeys"
node {
// Clean before build
stage('Checkout') {
deleteDir()
checkout scm
sh "git submodule foreach --recursive git pull origin master";
}
stage("import template ${template1}") {
script{
sh "ls -las; cd jenkins-ci-examples; ls -las";
jenkins_ci_examples.sub_module = load "jenkins-ci-examples/${template1}"
}
}
stage("run template ${template1}") {
sh "echo ${jenkins_ci_examples.sub_module}";
}
}
想要转换为声明式之后
def template1 = "spread_sshkeys"
pipeline {
agent any
stages {
stage ("Checkout") {
steps {
deleteDir()
checkout scm
sh "git submodule foreach --recursive git pull origin master"
}
}
stage("import template ${template1}") {
steps {
script {
sh "ls -las; cd jenkins-ci-examples; ls -las";
jenkins_ci_examples.sub_module = load "jenkins-ci-examples/${template1}"
}
}
}
stage("run template ${template1}") {
steps {
sh "echo ${jenkins_ci_examples.sub_module}";
}
}
}
}
启动 Jenkins Job 后停止并 return 错误
WorkflowScript: 22: Expected string literal @ line 22, column 19.
stage("import template ${template1}") {
^
WorkflowScript: 30: Expected string literal @ line 30, column 19.
stage("run template ${template1}") {
^
尝试使用
stage('run template ${template1}')
还有其他
stage('run template '+template1)
return也出错了。
如何解决这个问题?
您可以使用顺序阶段创建动态阶段,如下所示:
def template1 ="spread_sshkeys"
pipeline {
agent any
stages {
stage('Dynamic Stages') {
steps {
script {
stage("import template ${template1}"){
println("${env.STAGE_NAME}")
}
stage("run template ${template1}"){
println("${env.STAGE_NAME}")
}
}
}
}
}
}
我有 Jenkinsfile(脚本化管道)
def template1 = "spread_sshkeys"
node {
// Clean before build
stage('Checkout') {
deleteDir()
checkout scm
sh "git submodule foreach --recursive git pull origin master";
}
stage("import template ${template1}") {
script{
sh "ls -las; cd jenkins-ci-examples; ls -las";
jenkins_ci_examples.sub_module = load "jenkins-ci-examples/${template1}"
}
}
stage("run template ${template1}") {
sh "echo ${jenkins_ci_examples.sub_module}";
}
}
想要转换为声明式之后
def template1 = "spread_sshkeys"
pipeline {
agent any
stages {
stage ("Checkout") {
steps {
deleteDir()
checkout scm
sh "git submodule foreach --recursive git pull origin master"
}
}
stage("import template ${template1}") {
steps {
script {
sh "ls -las; cd jenkins-ci-examples; ls -las";
jenkins_ci_examples.sub_module = load "jenkins-ci-examples/${template1}"
}
}
}
stage("run template ${template1}") {
steps {
sh "echo ${jenkins_ci_examples.sub_module}";
}
}
}
}
启动 Jenkins Job 后停止并 return 错误
WorkflowScript: 22: Expected string literal @ line 22, column 19.
stage("import template ${template1}") {
^
WorkflowScript: 30: Expected string literal @ line 30, column 19.
stage("run template ${template1}") {
^
尝试使用
stage('run template ${template1}')
还有其他
stage('run template '+template1)
return也出错了。
如何解决这个问题?
您可以使用顺序阶段创建动态阶段,如下所示:
def template1 ="spread_sshkeys"
pipeline {
agent any
stages {
stage('Dynamic Stages') {
steps {
script {
stage("import template ${template1}"){
println("${env.STAGE_NAME}")
}
stage("run template ${template1}"){
println("${env.STAGE_NAME}")
}
}
}
}
}
}