【问题标题】:Jenkins parallel declarative pipelineJenkins 并行声明式管道
【发布时间】:2020-11-28 08:41:34
【问题描述】:

我正在尝试在我的声明式 jenkins 管道中定义一个并行部分。

我的语法是这样的:https://jenkins.io/blog/2017/09/25/declarative-1/

但我收到此错误:

WorkflowScript: 74: Expected one of "steps", "stages", or "parallel" for stage "app cores" @ line 74, column 3.
     stage('bat cores') {
     ^

我尝试移动并行块,但随后出现其他错误。据我所见,我与上面的博文相符。

有什么想法吗?

版本:

  • 詹金斯版本。 2.138.1
  • 管道:声明性版本 1.3.2

我的完整管道如下所示:


pipeline {
  agent { label 'master' }
  options {
    ansiColor('xterm')
  }
  parameters {
    choice(name: 'STOP_ON_FIRST_FAILURE', choices: ['true', 'false'], description: '....')
    choice(name: 'RUN_MODE', choices: [
      'plan, confirm, apply',
      'plan, confirm, apply, then destroy',
      'destroy'],
      description: "Choose to destroy resources at end" )
    string(name: 'GIT_REPO_BRANCH', defaultValue: 'production', description: '...')
  }
  stages {
    stage('thing container') {
      steps {
        build job: '/DevWork/DT/production branch/FA1/FA1 thing Creation', propagate: params.STOP_ON_FIRST_FAILURE
      }
    }

    stage('bat cores') {
      steps {

        build(
          job: '/DevWork/DT/production branch/FA1/FA1 thing Creation',
          propagate: params.STOP_ON_FIRST_FAILURE,
          parameters: [
            [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
            [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
          ]
        )

        build(
          job: '/DevWork/DT/production branch/FA1/FA103/FA103 bat Core',
          propagate: params.STOP_ON_FIRST_FAILURE,
          parameters: [
            [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
            [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
          ]
        )

        build(
          job: '/DevWork/DT/production branch/FA1/FA104/FA104 bat Core',
          propagate: params.STOP_ON_FIRST_FAILURE,
          parameters: [
            [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
            [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
          ]
        )

        build(
          job: '/DevWork/DT/production branch/FA1/FA101/FA101 bat Core',
          propagate: params.STOP_ON_FIRST_FAILURE,
          parameters: [
            [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
            [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
          ]
        )

        build(
          job: '/DevWork/DT/production branch/FA1/FA102/FA102 bat Core',
          propagate: params.STOP_ON_FIRST_FAILURE,
          parameters: [
            [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
            [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
          ]
        )

      }
    }

    stage('app cores') {
      steps {
        parallel {

          stage('FA10302 Application Core') {
            steps {

              build(
                job: '/DevWork/DT/production branch/FA1/FA103/FA10302 Application Core',
                propagate: params.STOP_ON_FIRST_FAILURE,
                parameters: [
                  [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
                  [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
                ]
              )

            }
          }

          stage('FA10301 Application Core') {
            steps {

              build(
                job: '/DevWork/DT/production branch/FA1/FA103/FA10301 Application Core',
                propagate: params.STOP_ON_FIRST_FAILURE,
                parameters: [
                  [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
                  [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
                ]
              )

            }
          }

          stage('FA10101 Application Core') {
            steps {

              build(
                job: '/DevWork/DT/production branch/FA1/FA101/FA10101 Application Core',
                propagate: params.STOP_ON_FIRST_FAILURE,
                parameters: [
                  [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
                  [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
                ]
              )

            }
          }

        }
      }
    }
  }
}

【问题讨论】:

  • 是错误信息不准确还是代码不准确? stage('bat cores') 绝对不在该代码的第 74 行。

标签: jenkins jenkins-pipeline


【解决方案1】:

你错误地使用了开发博客的“反面”例子:

在声明式管道的早期版本中,唯一的运行方式 并行管道代码块是使用并行步骤 在阶段的步骤块内,如下所示:您的示例

虽然这行得通,但它并不能很好地与 声明式管道语法。

我认为您的问题出在此处:

stage('app cores') {
      steps { // This step{} is causing the issue, remove it

“真正的”语法在开发博客中标记如下:

但是现在在声明式管道 1.2 中,我们引入了一个真正的 并行运行阶段的声明语法:

如下所示(只需从上面删除您的步骤{}):

stage('app cores') 
{
    parallel {
      stage('FA10302 Application Core') {
        steps {

          build(
            job: '/DevWork/DT/production branch/FA1/FA103/FA10302 Application Core',
            propagate: params.STOP_ON_FIRST_FAILURE,
            parameters: [
              [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
              [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
            ]
          )

        }
      }

      stage('FA10301 Application Core') {
        steps {

          build(
            job: '/DevWork/DT/production branch/FA1/FA103/FA10301 Application Core',
            propagate: params.STOP_ON_FIRST_FAILURE,
            parameters: [
              [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
              [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
            ]
          )

        }
      }

      stage('FA10101 Application Core') {
        steps {

          build(
            job: '/DevWork/DT/production branch/FA1/FA101/FA10101 Application Core',
            propagate: params.STOP_ON_FIRST_FAILURE,
            parameters: [
              [$class: 'StringParameterValue', name: 'RUN_MODE', value: params.RUN_MODE],
              [$class: 'StringParameterValue', name: 'GIT_REPO_BRANCH', value: params.GIT_REPO_BRANCH],
            ]
          )
        }
      }
    } // close the stage 'app cores'

【讨论】:

  • 谢谢,是的。我不应该在parallel()之前有steps()
【解决方案2】:

这听起来可能很愚蠢,但正如我今天发现的那样,parallel 一词中的拼写错误也会引发此异常。

【讨论】:

    猜你喜欢
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2021-01-15
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    相关资源
    最近更新 更多