示例gitlab管道只是我实际管道的简化版本。但基本上我有多个隐藏的作业,我想在一个阶段中依次运行这些作业。
.core:job:
script:
- ls
.job1:
extends:
- .core:job
before_script:
- cd ${CI_PROJECT_DIR}/job1
.job2
extends:
- .core:job
before_script:
- cd ${CI_PROJECT_DIR}/job2
# include all the jobs
.job:all:
extends:
- .job1
- .job2
.gitlab-ci.yml
stages:
- master
master:
stage: master
extends:
- .job:all
该管道不工作,它只合并最后一个作业(在本例中是job2)并只执行job2
处理这个问题的方法是使用关键字needs
,它允许您乱序执行作业。
https://docs.gitlab.com/ee/ci/yaml/需求有一点要记住:
在GitLab 14.1及以后版本中,您可以引用与您正在配置的作业。此功能已在GitLab.com和准备用于生产。在自我管理的GitLab 14.2和以后的版本功能默认可用。
的例子:
.core:job:
script:
- ls
job1:
extends:
- .core:job
before_script:
- cd ${CI_PROJECT_DIR}/job1
job2:
extends:
- .core:job
before_script:
- cd ${CI_PROJECT_DIR}/job2
needs: [ "job1" ]