.gitlab-ci 阶段执行顺序

.gitlab-ci stages execution order

我有这个 .gitlab-ci.yml 文件:

stepA:
  script:
    - echo "A"
deploy:
  script:
    - echo "1"
stepB:
  script:
    - echo "B"

如何设置第一个 运行 阶段? 一些作业可以由多个 gitlab 运行 人员并行 运行。 我只想确保步骤 A 到 B 在 运行 部署阶段

之前完成

这正是 stages 的用途。在实际描述 "job" 时,您在这里使用了 "stage" 这个词。

同一阶段的作业可能会 运行 并行(如果您有 运行 支持它的人),但会按顺序 运行 进行。

首先在 .gitlab-ci.yml 的顶层定义您的 2 个阶段:

stages:
  - build
  - dist

然后在每个作业上,指定它所属的阶段:

stepA:
  stage: build
  script:
    - echo "A"
deploy:
  stage: dist
  script:
    - echo "1"
stepB:
  stage: build
  script:
    - echo "B"

现在 stepAstepB 将首先 运行(以任何顺序甚至并行)然后是 deploy,前提是第一阶段成功。

Below code uses in inheritance

Stages:
  - Step-A
  - Step-B
  - Deploy

.Perform-Step-A:
  stage: Step-A
  script:
   - echo "A"

.Perform-Step-B:
  stage: Step-B
  script:
   - echo "B"

.Perform-Deploy:
  stage: Deploy
  script:
   - echo "1"

Server1-Step-A:
  extends: .Perform-Step-A
  tags: Server-1-As-Runner //Else add SSH steps in Perfrom-A block

Server1-Step-B:
  extends: .Perform-Step-B
  tags: Server-1-As-Runner //Else add SSH steps in Perfrom-B block

Server1-Step-Deploy:
  extends: .Perform-Deploy
  tags: Server-1-As-Runner //Else add SSH steps in Perfrom-Deploy block

假设:

  1. 您正在为您的应用程序和在同一台机器上配置的运行器使用专用运行器。如果不是,请随时修改和 ssh 步骤。
  2. 这是我在这里回答的概念构建块,可以根据需要进行调整。

  3. 一次在多台服务器中部署时在我的案例中效果最好。

注意:出于隐私原因,标签已从图像中删除。