jenkins构建Unhandled promise rejection,状态也不会变为 Finished: FAILURE

本文探讨了在Jenkins构建过程中如何正确处理Node.js脚本中的Promise错误,确保构建状态能准确反映脚本执行结果。通过使用process.exit(1)方法,可以实现在脚本出错时立即中断构建并标记为失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jenkins构建node脚本的时候,如果你的主程序最后是个返回promise的话就不能中断构建脚本,但有时我们需要在node出错的时候就终止运行,并让jenkins构建状态变成FAILURE。比如:
构建脚本:

node a.js
echo 构建程序后面的步骤

想要在a.js 出错时就终止,不要再执行到echo 构建程序后面的步骤。

a.js 内容:

(async function main(){
    // try{
        await new Promise((resolve, reject)=>{
            setTimeout(()=>{
                console.log('timeout');
                reject('reject')
            }, 1000);
        })
        console.log('after await')
    // }catch(e){
    //     console.log('try catch');
    //     throw new Error(e);
    // }
    // console.log('after try')
})

就算你打开try catch,jenkins也是只能看到错误:UnhandledPromiseRejectionWarning: Unhandled promise rejection,而jenkins状态却仍然是success的,不会变成 Finished: FAILURE。

方法:利用 process.exit(1);

(async function main(){
        // try{
            await new Promise((resolve, reject)=>{
                setTimeout(()=>{
                    console.log('timeout');
                    reject('reject')
                }, 1000);
            })
            console.log('after await')
        // }catch(e){
        //     console.log('try catch');
        //     throw new Error(e);
        // }
        // console.log('after try')
    })().catch(function(e){
        process.exit(1);
        // throw new Error(e);
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值