GitLab手动部署配置疑问:Web与分支推送规则解析
GitLab CI手动生产部署任务规则疑问解答
先看你提供的GitLab CI配置:
deploy_prod: stage: deploy_prod rules: - if: $CI_PIPELINE_SOURCE == 'web' when: manual - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == 'master' when: manual script: echo 1
问题1:是否可以无需点击「运行流水线」,直接生成该阻塞式流水线(仍需点击播放按钮启动)?
完全可以。你当前配置里的第二条规则已经能实现这个效果:当有代码推送到master分支时(包括直接提交、合并PR等操作),GitLab会自动触发流水线,并且deploy_prod任务会处于等待手动触发的状态(显示播放按钮)。你不需要手动点击「运行流水线」,直接去对应的流水线页面点击播放按钮就能启动部署任务。
如果想去掉手动触发流水线的选项(只保留自动生成带手动任务的流水线),可以删掉第一条规则($CI_PIPELINE_SOURCE == 'web'的规则),只保留第二条规则即可。
问题2:保留when: manual时第二条规则的预期行为是什么?
当满足$CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == 'master'条件时(也就是代码推送到master分支时):
- GitLab会自动创建并启动流水线,但
deploy_prod任务不会自动执行 - 该任务会被标记为手动任务,处于等待状态,需要你手动点击播放按钮才能运行
- 这样既实现了代码变动时自动触发流水线的自动化流程,又通过手动确认的方式避免了生产部署被意外自动执行,保证了部署操作的可控性
内容的提问来源于stack exchange,提问作者adaba
相关产品推荐
相关产品推荐

