CI_CD前端发布增加cnpm编译失败跳出不部署的逻辑

原创

      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("编译失败,终止流水线")  # 显式终止流程 
            }
        }
    }
}

修改说明:

  1. 强制退出机制
set -e  # Shell脚本中任意命令失败立即退出
  • 确保cnpm installbuild失败时立即终止后续操作
  1. 异常捕获结构
script {
    try {
        // 执行编译 
    } catch (Exception e) {
        currentBuild.result = 'FAILURE'
        error("编译失败,终止流水线")
    }
}
  • 显式捕获执行异常
  • 通过error命令强制终止流水线
  1. 流程控制优化
  • 当编译阶段失败时,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层的双重保障机制,确保:

  1. 任何依赖安装或构建步骤失败立即停止
  2. 异常会被Jenkins明确捕获并终止流程
  3. 部署阶段在编译失败时不会被执行

建议同时添加构建通知机制(如邮件/Slack通知)以便及时获知失败信息。

posted @ 2025-10-23 10:24  完颜振江  阅读(4)  评论(0)    收藏  举报