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

如何让GitLab CI在脚本“失败”后仍将环境指向最新作业?

解决环境始终指向最新作业的问题

核心原因

默认CI环境只会关联成功状态的作业,即便你设置了allow_failure: true,作业最终仍会被标记为失败,因此环境不会更新到该作业。

可行方案

方案1:修改环境跟踪策略

在部署作业的environment配置中添加track: always参数,强制环境关联最新作业,忽略作业成功/失败状态:

deploy_openstack:
  script:
    - ./your-deploy-script.sh
    - ./your-self-test-script.sh
  allow_failure: true
  artifacts:
    when: always
  environment:
    name: production  # 替换为你的环境名称
    track: always  # 关键配置:强制环境绑定最新作业实例

方案2:拆分部署与自测流程

将部署和自测拆分为两个独立作业,确保部署作业始终成功,自测作业允许失败且不关联环境:

deploy:
  script:
    - ./your-deploy-script.sh
  artifacts:
    when: always
  environment:
    name: production

self_test:
  script:
    - ./your-self-test-script.sh
  allow_failure: true
  needs: [deploy]  # 依赖部署作业完成后执行

这种方式下,环境会始终关联成功的部署作业,自测失败不会影响环境指向。

方案3:强制标记作业为成功(不推荐)

在脚本中捕获自测错误,强制让作业返回成功状态,从而触发环境更新:

deploy_openstack:
  script:
    - ./your-deploy-script.sh
    - ./your-self-test-script.sh || echo "自测失败,但部署已完成"  # 捕获错误,避免作业终止
  artifacts:
    when: always
  environment:
    name: production

缺点是无法在CI界面直观识别自测失败,需单独处理日志记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:02:16