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

如何确保CodeBuild阶段即使出现错误也永不失败?

解决方案

1. 配置3个并行运行的阶段

CodeBuild 通过为多个阶段设置相同的 run-order 值实现并行执行。默认情况下,pre_build 阶段的 run-order 为0,会优先执行;将需要并行的3个阶段的 run-order 设为1,就能让它们在 pre_build 完成后同时启动。

2. 解决命令返回非0导致构建失败的问题

仅设置 on-failure: CONTINUE 只能让阶段内某条命令失败后继续执行后续命令,但无法阻止整个阶段被标记为失败,进而导致构建终止。finally 块里的 exit 0 也无法覆盖阶段的失败状态——因为CodeBuild的阶段状态由其内部命令的最终退出码决定。

可行的解决方式是给每个可能返回非0的命令添加 || true,强制命令无论执行结果如何都返回0退出码;也可以用脚本包裹命令,捕获错误后返回0。

修改后的buildspec.yaml示例

version: 0.2
phases:
  pre_build:
    commands:
      - echo Installing SCA tool...
      - pip install pip-audit
  build_phase_1:
    run-order: 1
    on-failure: CONTINUE
    commands:
      - echo Running build phase 1...
      - pip-audit -r requirements.txt || true
  build_phase_2:
    run-order: 1
    on-failure: CONTINUE
    commands:
      - echo Running build phase 2...
      - some-potentially-failing-command || true
  build_phase_3:
    run-order: 1
    on-failure: CONTINUE
    commands:
      - echo Running build phase 3...
      - another-failable-command || true

关键说明

  • run-order: 1:指定3个构建阶段并行执行,且在 pre_build 完成后启动。
  • || true:强制命令返回0退出码,避免单条命令失败导致阶段被标记为失败,从而保证整个构建不会终止。
  • on-failure: CONTINUE:确保阶段内某条命令失败时,该阶段的后续命令仍能正常执行,配合 || true 实现演示所需的“永不失败”效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:05:45