我正在尝试设置一个手动作业以在生产中部署,我想了解第二条规则:
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
第一条规则允许我通过在分支主机上点击运行管道在生产中进行部署,这将创建一个";"阻塞";管道需要我点击播放按钮才能运行。
有可能拥有";"阻塞";创建的管道不需要我点击运行管道(我的意思是在管道列表中,我仍然需要点击播放按钮来运行它,但这少了一步(
关于第二条规则,我知道如果我删除
when: manual
,任何对master的推送(提交、合并分支(都会立即触发作业,那么使用when: manual
时应该有什么行为呢?
提前感谢的帮助
要使第一条规则自动运行而不必手动启动,您可以将when: manual
更改为when: always
,它将始终运行,也可以完全删除第一条规则。这是因为您没有默认的规则集(即"else"子句(。按照你现在的规则,除了web和推送之外,每个管道源都将自动运行,因此删除其中任何一个规则都意味着无论源是什么,它们的作业都将自动执行。但是,如果不希望作业为triggers
、schedules
或merge_requests
运行,但希望web
自动运行,则必须使用when: always
。
对于你的第二条规则,最好在单独的问题中澄清你在问什么,但实际上行为取决于你。