原创
CI/CD前端发布增加cnpm编译失败跳出不部署的逻辑
Jenkins Pipeline中添加编译失败终止部署的逻辑,以下是修改建议:
stage('代码编译'){when { environment name: 'deploy_env', value: 'deploy' }steps {script {try {sh """set -e # 关键修改:任何命令失败立即退出 cnpm install --unsafe-perm --registry=https://registry.npmmirror.com/cnpm run build:prod pwd """} catch (Exception e) {currentBuild.result = 'FAILURE'error("编译失败,终止流水线") # 显式终止流程 }}}
}
修改说明:
- 强制退出机制
set -e # Shell脚本中任意命令失败立即退出
- 确保
cnpm install
或build
失败时立即终止后续操作
- 异常捕获结构
script {try {// 执行编译 } catch (Exception e) {currentBuild.result = 'FAILURE'error("编译失败,终止流水线")}
}
- 显式捕获执行异常
- 通过error命令强制终止流水线
- 流程控制优化
- 当编译阶段失败时,Jenkins会自动跳过后续的
部署
阶段 - 添加显式error命令可确保及时终止避免潜在异常
完整阶段结构示意:
stage('代码编译'){when { environment name: 'deploy_env', value: 'deploy' }steps {script {try {sh """set -e cnpm install --unsafe-perm --registry=https://registry.npmmirror.com/ cnpm run build:prod pwd """ } catch (Exception e) {currentBuild.result = 'FAILURE'error("Build failed, aborting deployment")}}}
}
该方案通过组合Shell层和Jenkins层的双重保障机制,确保:
- 任何依赖安装或构建步骤失败立即停止
- 异常会被Jenkins明确捕获并终止流程
- 部署阶段在编译失败时不会被执行
建议同时添加构建通知机制(如邮件/Slack通知)以便及时获知失败信息。