按顺序运行gitlab作业



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

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

My gitlab file:

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

在测试阶段?

基于构建文件的简单性,我不认为您积极需要needs。根据文档,所有阶段按顺序执行。

您现在所处的陷阱是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文档。现在执行不是分配给分支,而是分配给合并请求,并且您将获得预期的结果(至少是我假设的)