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