You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中检查Jenkins任务状态并处理构建失败?

Jenkins PowerShell构建步骤问题解答

关于BUILD_STATUS与try-catch的使用

  • 不是必须用try-catch,但如果要精准捕获脚本中途的失败并控制构建状态,try-catch是最可靠的方式。
  • Jenkins的BUILD_STATUS是由构建步骤的退出码自动更新的:当PowerShell脚本返回exit 0,状态为SUCCESS;返回非0值(比如exit 1),状态会被设为FAILURE。
  • 如果要在脚本里主动感知或设置:你可以在try块里执行正常逻辑,catch块里捕获错误后,先把$env:BUILD_STATUS显式设为FAILURE(可用于脚本内日志输出),再执行exit 1,确保Jenkins识别到构建失败。

处理ResourceGroup参数错误并终止脚本

针对你提供的New-AzSqlDatabaseExport命令,需要先让命令在出错时抛出终止错误,才能被try-catch捕获。具体实现如下:

# 设置全局错误行为为终止错误(也可单独给目标命令加-ErrorAction Stop参数)
$ErrorActionPreference = 'Stop'

try {
    New-AzSqlDatabaseExport -ResourceGroupName "RG01" `
        -ServerName "Server01" `
        -DatabaseName "Database01" `
        -StorageKeyType "StorageAccessKey" `
        -StorageKey "StorageKey01" `
        -StorageUri "http://account01.blob.core.contoso.net/bacpacs/database01.bacpac" `
        -AdministratorLogin "User" `
        -AdministratorLoginPassword (ConvertTo-SecureString "secure password" -AsPlainText -Force)
}
catch {
    # 根据错误消息或错误代码判断是否为ResourceGroup相关错误
    if ($_.Exception.Message -match "Resource group 'RG01' could not be found" -or $_.Exception.ErrorCode -eq "ResourceGroupNotFound") {
        Write-Host "ResourceGroup参数错误,终止构建"
        exit 1
    }
    # 其他错误可按需处理,统一返回exit 1标记构建失败
    else {
        Write-Host "执行出错:$($_.Exception.Message)"
        exit 1
    }
}

说明:

  • 用$ErrorActionPreference = 'Stop'让未处理的错误触发终止逻辑,确保进入catch块;如果只想针对该命令生效,可改为在New-AzSqlDatabaseExport后追加-ErrorAction Stop参数。
  • 在catch块中通过错误特征判断是否为ResourceGroup不存在的问题,确认后输出日志并执行exit 1,直接终止脚本并让Jenkins标记构建失败。
  • 建议用ConvertTo-SecureString处理密码参数,避免明文暴露风险。

内容的提问来源于stack exchange,提问作者Melissa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:30:05