rco*_*rre 6 continuous-integration gitlab gitlab-ci
我想要一个阻塞手动操作,它将在下一阶段触发多个并行作业。我怎样才能实现这个目标?例如:
这是我尝试过的:
stages:
- deploy-dev
- deploy-prd-1
- deploy-prd-2
deploy-dev:
stage: deploy-dev
script:
- echo deploy-dev
deploy-prd-1:
when: manual
allow_failure: false
stage: deploy-prd-1
script:
- echo deploy-prd-1
deploy-prd-2:
stage: deploy-prd-2
script:
- echo deploy-prd-2
Run Code Online (Sandbox Code Playgroud)
这实现了1和2,但在3上失败了,因为deploy-prd-1和deploy-prd-2是串联的,而不是并行的
stages:
- deploy-dev
- deploy-prd
deploy-dev:
stage: deploy-dev
script:
- echo deploy-dev
deploy-prd-1:
when: manual
allow_failure: false
stage: deploy-prd
script:
- echo deploy-prd-1
deploy-prd-2:
stage: deploy-prd
script:
- echo deploy-prd-2
Run Code Online (Sandbox Code Playgroud)
这在 2 上失败,因为部署-prd-2 将自动运行,无需等待手动触发
stages:
- deploy-dev
- deploy-prd
deploy-dev:
stage: deploy-dev
script:
- echo deploy-dev
deploy-prd-1:
when: manual
allow_failure: false
stage: deploy-prd
script:
- echo deploy-prd-1
deploy-prd-2:
when: manual
allow_failure: false
stage: deploy-prd
script:
- echo deploy-prd-2
Run Code Online (Sandbox Code Playgroud)
这并不理想,因为它需要单独手动触发每个并行作业。
stages:
- deploy-dev
- approve
- deploy-prd
deploy-dev:
stage: deploy-dev
script:
- echo deploy-dev
approve:
when: manual
allow_failure: false
deploy-prd-1:
stage: deploy-prd
script:
- echo deploy-prd-1
deploy-prd-2:
stage: deploy-prd
script:
- echo deploy-prd-2
Run Code Online (Sandbox Code Playgroud)
这是我尝试设置手动“门”,但 gitlab 拒绝了带有Error: jobs:approve script can't be blank. 我可以设置一个类似的无操作script: [":"],但现在 gitlab 将启动一个容器而不执行任何操作,这会浪费时间和资源。
小智 0
I\xe2\x80\x99m 假设您想要手动门的原因是因为您想在发布应用程序之前进行一些测试。
\n与其一次性完成所有事情,改变心态可能会效果更好。
\n使用 gitlab ci 规则关键字使两组作业中的每组作业都按自己的时间表运行(这些作业可以关闭它们的时间,因此它们成为需要您按下按钮的手动触发器)。
\n然后分解你的 ci,首先构建并部署到你的开发环境。进行测试,然后当您满意时触发部署到生产作业。
\n