jenkins前端发布pipeline增加编译失败跳出机制
·
原来的写法
stage('代码编译'){
when { environment name: 'deploy_env', value: 'deploy' }
steps {
sh """
cnpm install --unsafe-perm --registry=https://registry.npmmirror.com/
cnpm run build:prod
pwd
"""
}
}
在Jenkins Pipeline中,可以通过添加try-catch逻辑来处理npm install失败的情况。如果npm install失败,可以通过error函数直接终止Pipeline的执行,避免未编译成功的代码被部署到线上。以下是优化后的代码:
groovy复制
// 项目
// 需要修改前端项目部署的目录
def project_webdir = "dmpweb"
// 需要修改对应服务的git地址
def git_address = "http://git.wanyanzhenjiang.net/hz/web/dmp-web.git"
// 认证
def git_auth = "gitlab-creds-bj" //git login auth
pipeline {
agent { label 'jnlp-slave' }
parameters {
gitParameter branch: '', branchFilter: '.*', defaultValue: 'master', description: '选择发布的分支', name: 'Branch', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'PT_BRANCH_TAG' //PT_BRANCH_TAG获取分支和TAG
choice (choices: ['prod'], description: '选择发布环境', name: 'Namespace')
choice choices: ['deploy'], description: '''deploy发布新代码''', name: 'deploy_env'
}
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: "${params.Branch}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [], submoduleCfg: [],
userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]
])
}
}
stage('代码编译') {
when { environment name: 'deploy_env', value: 'deploy' }
steps {
script {
try {
sh """
cnpm install --unsafe-perm --registry=https://registry.npmmirror.com/
cnpm run build:prod
pwd
"""
} catch (Exception e) {
echo "编译失败,终止Pipeline执行。"
error("编译失败,无法继续部署。")
}
}
}
}
stage('部署') {
when { environment name: 'deploy_env', value: 'deploy' }
steps {
sh """
rsync -avz --delete dist/ /data/webapps/${project_webdir}
pwd
"""
}
}
}
}
优化点:
-
加入
try-catch逻辑:-
在
代码编译阶段,使用script块包裹sh命令。 -
如果
cnpm install或cnpm run build:prod失败,会抛出异常并捕获。 -
使用
error函数直接终止Pipeline的执行,避免未编译成功的代码被部署。
-
-
日志提示:
-
在捕获异常时,通过
echo输出日志,方便排查问题。
-
-
代码清晰性:
-
保持原有逻辑不变,只在关键步骤加入错误处理机制,确保代码的可读性。
-
通过这种方式,可以有效避免因编译失败而导致的未编译代码被部署到线上环境。
更多推荐



所有评论(0)