我之前的博客《Jenkins 多分支构建》及《Jenkins 多分支构建中的邮件配置》探索了在多分支构建中Jenkinsfile的配置。然而在我的配置中,根节点为node
,但里面却没有使用Jenkinsfile的DSL去声明构建的流程,而是通过groovy代码去实现整个的构建逻辑,用try-catch
处理构建失败的问题,看起来很混乱。并且,整个构建本来有拉取并检出代码、构建、发布这几个阶段,但是在Jenkinsfile里却没有体现出来,所以当发现构建较慢时也不利于定位问题所在的步骤。本篇文章将完全处理这些问题。
简单的stage声明
我们还是以之前的代码为例,这里为了专注于具体的配置,我简化一下构建命令及省略掉发邮件的代码,如下:
node {
checkout scm
echo "current branch: $BRANCH_NAME"
try {
if (BRANCH_NAME.startsWith("release/")) {
sh "./gradlew clean -Ppublish assemble"
} else {
sh "./gradlew clean assembleTest"
}
currentBuild.result = 'SUCCESS'
} catch (any) {
currentBuild.result = 'FAILURE'
throw any
} finally {
if (currentBuild.result == 'FAILURE') {
// send e-mail
}
}
}
如果说,要把这个流程划分为多个阶段,那还是挺简单的,在node
下增加stage
节点就可以了,如下:
node {
stage('Checkout') {
checkout scm
}
stage('Build') {
echo "current branch: $BRANCH_NAME"