如何为多个并行作业创建手动触发器

rco*_*rre 6 continuous-integration gitlab gitlab-ci

我想要一个阻塞手动操作,它将在下一阶段触发多个并行作业。我怎样才能实现这个目标?例如:

  1. deploy-int 在合并时运行
  2. 管道等待单个手动触发器
  3. deploy-prd-1 和deploy-prd-2 并行运行

这是我尝试过的:

1

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是串联的,而不是并行的

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 将自动运行,无需等待手动触发

3

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)

这并不理想,因为它需要单独手动触发每个并行作业。

4

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