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
相关产品推荐
相关产品推荐

