首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在gitlab-ci.yml中合并或添加一个新阶段,其中包括包含默认阶段列表和作业定义的公共模板yml

如何在gitlab-ci.yml中合并或添加一个新阶段,其中包括包含默认阶段列表和作业定义的公共模板yml
EN

Stack Overflow用户
提问于 2020-09-08 21:48:17
回答 1查看 7.2K关注 0票数 6

目前,在我们的项目中,gitlab-ci.yml包含一个具有默认阶段和作业定义的通用模板yml。我希望包含一个特定于这个项目的阶段和相应的作业,它需要在模板yml中定义的阶段之间运行。下面是示例yml文件,它代表了我正在处理的场景。

  1. .mvn-template.yml

代码语言:javascript
复制
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-test

  1. gitlab-ci.yml

代码语言:javascript
复制
include:
  - project: 'xxx/common-pipeline'
    ref: x.x.x
    file: '/.mvn-template.yml'
...

现在我想包括一个新的阶段,这个项目,说合同测试,在两者之间。

  • package
  • integration-test

因此,合同测试应该在包后和集成测试之前运行。

由于这是特定于此项目,我不能包括在公共模板。因此,需要包含在gitlab-ci.yml中。

不知道该怎么做。我之前使用过GitHub,最近刚开始使用GitLab的项目。

我是否可以在普通模板中包括阶段,但不要在那里定义各自的工作。并将工作定义包含在gitlab-ci.yml中?不知道这是不是正确的方法。可能有更好的选择来处理这种情况。

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2020-09-15 11:25:41

在我看来,你可以用两种不同的方式来做:

  1. 在模板文件中添加stage contract-testing,并在项目的.gitlab-ci.yml中定义特定的作业。配置将是有效的: gitlab将连接并展开包含/锚,以便在最后构建一个gitlab。注意事项:您可以定义一个阶段,即使没有任务使用这个阶段(一种空阶段),它也不会生成错误。

  1. 如果不希望在引用include的所有项目中包含这个“空阶段”,则可以将stages移出模板,并将其放到项目的.gitlab-ci.yml中。与解决方案1一样,您需要在项目的.gitlab-ci.yml (而不是模板中)中定义作业。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63801989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档