按顺序运行 gitlab 作业

时间:2021-02-20 11:12:17

标签: gitlab sequential

我有两个简单的阶段。 (构建和测试)。我希望管道中的作业按顺序运行。

实际上,我希望当我运行测试作业时,它在构建作业完全通过之前不会运行。

我的 gitlab 文件:

stages:
  - build
  - test

build:
  stage: build
  script:
    - mvn clean package
    only:
    - merge_requests

test:
  stage: test
  services:
  script:
    - mvn verify
    - mvn jacoco:report
  artifacts:
    reports:
      junit:
        - access/target/surefire-reports/TEST-*.xml
    paths:
      - access/target/site/jacoco
    expire_in: 1 week
  only:
    - merge_requests

我可以添加吗

needs:
    - build

在测试阶段?

1 个答案:

答案 0 :(得分:1)

基于您的构建文件的简单性,我认为您并不需要 needs。基于 documentation,所有阶段都按顺序执行。

您现在的陷阱是 only 引用。构建阶段将针对任何分支运行,并为此忽略合并请求。如果您向 only 作业添加 build 指令,您可能会得到您想要的结果:


build:
  stage: build
  script:
    - mvn clean package
  only:
    - merge_requests
    - master # might be main, develop, etc. what ever your longliving branches are

这样就不会为每个分支触发它,而只会为合并请求和长期存在的分支触发。见only documentation。现在执行不是分配给分支而是分配给合并请求,您将获得预期的结果(至少我假设)

相关问题