尝试添加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'。
答案 0 :(得分:1)
您正在混淆脚本化和声明性管道语法。 post
是声明式的一部分,但是您使用脚本化的变体(没有pipeline
,但有node
个步骤)。
您必须使用try
/ catch
。