目前,在我们的项目中,gitlab-ci.yml包含一个具有默认阶段和作业定义的通用模板yml。我希望包含一个特定于这个项目的阶段和相应的作业,它需要在模板yml中定义的阶段之间运行。下面是示例yml文件,它代表了我正在处理的场景。
stages:
- build
- static-analysis
- unit-test
- package
- integration-test
compile:
stage: build
tags:
- docker
artifacts:
paths:
- target/
expire_in: 14 days
script:
- mvn $MAVEN_CLI_OPTS compile
interruptible: true
//and job definitions for - static-analysis
// - unit-test
// - package
// - integration-testinclude:
- project: 'xxx/common-pipeline'
ref: x.x.x
file: '/.mvn-template.yml'
...现在我想包括一个新的阶段,这个项目,说合同测试,在两者之间。
因此,合同测试应该在包后和集成测试之前运行。
由于这是特定于此项目,我不能包括在公共模板。因此,需要包含在gitlab-ci.yml中。
不知道该怎么做。我之前使用过GitHub,最近刚开始使用GitLab的项目。
我是否可以在普通模板中包括阶段,但不要在那里定义各自的工作。并将工作定义包含在gitlab-ci.yml中?不知道这是不是正确的方法。可能有更好的选择来处理这种情况。
请帮帮忙。
发布于 2020-09-15 11:25:41
在我看来,你可以用两种不同的方式来做:
contract-testing,并在项目的.gitlab-ci.yml中定义特定的作业。配置将是有效的: gitlab将连接并展开包含/锚,以便在最后构建一个gitlab。注意事项:您可以定义一个阶段,即使没有任务使用这个阶段(一种空阶段),它也不会生成错误。include的所有项目中包含这个“空阶段”,则可以将stages移出模板,并将其放到项目的.gitlab-ci.yml中。与解决方案1一样,您需要在项目的.gitlab-ci.yml (而不是模板中)中定义作业。https://stackoverflow.com/questions/63801989
复制相似问题