为了组织我们的构建、测试和部署配置,我们需要知道如何将作业放入各个阶段。

  • 查看默认的构建阶段
  • 声明自定义构建阶段和顺序
  • 指定使用特定的 Runner

1. 默认的构建阶段

默认的构建阶段有三个阶段:

  • build
  • test
  • deploy

阶段的执行顺序按照上面的排序执行。所有未指定的阶段默认为 test 阶段

  1. job1:
  2. stage: test
  3. script: echo "test"
  4. job2:
  5. stage: build
  6. script: echo "build"
  7. job3:
  8. stage: deploy
  9. script: echo "deploy"
  10. job4:
  11. script: echo "job4"

2. 声明自定义阶段和顺序

  • 每个阶段(stage)包含一个或多个 Jobs
  • 阶段按其声明的顺序运行
  • 任何作业失败都将阶段标记为失败
  1. stages:
  2. - build
  3. - test
  4. - review
  5. - deploy
  6. job1:
  7. stage: test
  8. script: echo "test"
  9. job2:
  10. stage: build
  11. script: echo "build"
  12. job3:
  13. stage: deploy
  14. script: echo "deploy"
  15. job4:
  16. script: echo "job4"
  17. job5:
  18. stage: review
  19. script: echo "review"

3. 使用特定的 Runner

如果Runner 有多个可用,会使用轮询的方式。如果需要使用指定的 Runner 运行,可以使用 tag 标签。

  1. stages:
  2. - build
  3. - test
  4. - review
  5. - deploy
  6. job1:
  7. stage: test
  8. script: echo "test"
  9. tags:
  10. - aishangwei-group
  11. - docker
  12. job2:
  13. stage: build
  14. script: echo "build"
  15. ...

[info]如果有多个符合条件的 Runner ,也许是随便选择一个,目前没发现选择规律。

4. 代码构建示例

使用 feature-1 分支。

  1. stages:
  2. - build
  3. build:
  4. stage: build
  5. image: harbor.xiodi.cn/tools/openjdk:11.0.6
  6. tags:
  7. - docker
  8. - host20133-docker
  9. script:
  10. - chmod +x ./mvnw && ./mvnw package