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

GitLab CI受保护环境中on_success失效,验证作业需手动触发如何解决?

问题原因

你把prod设成受保护环境后,GitLab的安全机制会对所有关联这个环境的作业强制要求手动审批——哪怕你给test作业加了action: verify,只要它关联了prod受保护环境,就会触发这个规则,不会自动跟着deploy跑。这是受保护环境的默认逻辑,防止未授权作业随意操作生产环境。

用action: verify实现自动测试的方法

要让验证作业自动执行,需要调整受保护环境的权限配置:

  • 进入项目的「设置」→「CI/CD」→「受保护环境」页面,找到prod环境
  • 在「允许部署」列表中,添加执行test作业的主体:比如你的CI Runner对应的服务账号、负责测试的用户组,或者有权限运行该作业的用户
  • 保存配置后,当deploy作业获批执行成功,test作业就会自动触发,无需手动审批

你的原有CI配置无需修改,继续使用带action: verify的版本即可:

deploy:
  stage: deploy
  script:
    - echo "deploy"
  environment:
    name: prod
    action: start
    
test:
  stage: test
  script:
    - echo "test"
  environment:
    name: prod
    action: verify
  when: on_success
为什么移除environment段能自动执行?

移除该段后,test作业不再关联prod受保护环境,自然不受审批规则限制,会按照when: on_success的设置自动执行,但这也丢失了action: verify的设计初衷——无法将测试与生产环境的部署验证绑定,也无法在GitLab的环境页面查看本次部署的验证记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:41:12