无法在声明性管道内获取jenkins管道sh步骤结果的输出

无法在声明性管道内获取jenkins管道sh步骤结果的输出,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我希望通过以下方式获得sh结果的输出: pipeline { agent any stages { stage('Hello') { steps { echo 'Hello World' result=sh(script:'ls -al', returnStdout: true) } } } } 然后它会向我打印一个错误: org.codehaus.groovy.co

我希望通过以下方式获得sh结果的输出:

pipeline {
   agent any

   stages {
      stage('Hello') {
         steps {
            echo 'Hello World'
            result=sh(script:'ls -al', returnStdout: true)
         }
      }
   }
}
然后它会向我打印一个错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 8: Expected a step @ line 8, column 13.
           result=sh(script:'ls -al', returnStdout: true)
           ^

1 error

at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:129)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:123)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:517)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:480)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:268)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
完成:失败

如果使用传统的脚本方式,它工作得非常好

node {

stage("Fetch code from git") {
        echo 'Hello World'
        result = sh(script:'ls -al', returnStdout: true)
        echo result
}

}

shell命令必须在声明性管道中的sh块内运行

例如:


有关更多信息,您还可以参考。

shell命令必须在声明性管道中的sh块内运行

例如:


有关更多信息,您还可以参考。

由于您正在将方法调用的返回值分配给变量,因此现在将变为脚本化,并且您需要将该步骤封装在声明性DSL的脚本块中:

pipeline {
   agent any

   stages {
      stage('Hello') {
         steps {
            echo 'Hello World'
            script {
              result=sh(script:'ls -al', returnStdout: true)
            }
         }
      }
   }
}

由于您正在将方法调用的返回值分配给变量,因此现在将编写脚本,并且您需要将该步骤封装在声明性DSL的脚本块中:

pipeline {
   agent any

   stages {
      stage('Hello') {
         steps {
            echo 'Hello World'
            script {
              result=sh(script:'ls -al', returnStdout: true)
            }
         }
      }
   }
}
做这样的事

pipeline {

  agent any

  stages {
    stage('Hello') {
     steps {
      sh 'echo Hello World'
      scripts {
        result = sh(script:'ls -al', returnStdout: true)
       }
      }
    }
  }
}
做这样的事

pipeline {

  agent any

  stages {
    stage('Hello') {
     steps {
      sh 'echo Hello World'
      scripts {
        result = sh(script:'ls -al', returnStdout: true)
       }
      }
    }
  }
}

你的例子和我的完全一样,对吗?你的例子和我的完全一样,对吧?它不起作用。相关:相关: