尝试添加后期构建操作时,我的jenkinsfile不再编译

时间:2019-01-29 13:13:15

标签: jenkins jenkins-pipeline pipeline

尝试添加POST操作时,我的jenkinsfile不再编译。最后一个应该在构建结束时显示给jenkins控制台输出。

第一部分是关于我的jenkinsfile代码的构建。

第二部分是添加到第一部分的修补程序,该修补程序的任何构建都将失败。

我想集成第I部分和第II部分以获得下文所述的预期输出,但是无论如何进行插入,集成都会失败。 我已经尝试了很多事情,但现在遇到了麻烦,因此不胜感激。

//第一部分:我的基本代码

    node {
    def mvnHome
    stage('Preparation') { 
        git 'https://github.com/jglick/simple-maven-project-with-   tests.git'
      // Get the Maven tool.
      // ** NOTE: This 'M3' Maven tool must be configured
      // **       in the global configuration.           
      mvnHome = tool 'M3'
   }
    stage('Build') {
      // Run the maven build
      if (isUnix()) {
         sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean package"
      } else {
         bat(/"${mvnHome}\bin\mvn" -Dmaven.test.failure.ignore clean package/)
      }
   }
   stage('Results') {
      junit '**/target/surefire-reports/TEST-*.xml'
      archiveArtifacts 'target/*.jar'
   }
 }

//第二部分:要添加到先前代码中的代码

post {
    always {
        echo 'I have finished and deleting workspace'
        // deleteDir() 
    }
    success {
        echo 'Job succeeeded!
    }
    unstable {
        echo 'I am unstable :/'
    }
    failure {
        echo 'I failed :('
    }
    changed {
        echo 'Things were different before...'
    }
}
控制台输出中的

期望输出:'Job成功!还是我不稳定:/或'我失败了:('... ...取决于jenkins的构建状态,并始终在每次新构建之前清理工作区

实际结果是控制台输出中的错误消息: java.lang.NoSuchMethodError:在步骤[archive,bat,build,catchError,checkout,deleteDir,dir ......之间没有找到这样的DSL方法'post'。

1 个答案:

答案 0 :(得分:1)

您正在混淆脚本化和声明性管道语法。 post是声明式的一部分,但是您使用脚本化的变体(没有pipeline,但有node个步骤)。

您必须使用try / catch

请参见the documentation