我有两个简单的阶段。 (构建和测试)。我希望管道中的作业按顺序运行。
实际上,我希望当我运行测试作业时,它在构建作业完全通过之前不会运行。
我的 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
在测试阶段?
答案 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。现在执行不是分配给分支而是分配给合并请求,您将获得预期的结果(至少我假设)