Include gitlab runner tag lists in separate yml file

Viewed 165

We are using extensively Gitlab CI/CD pipelines for DevOps, configuration management etc. There is a long list of Gitlab runners which is now defined in gitlab-ci.yml in every project. By using "tags" and "only" we then define when to run jobs on different runners. The question is how to put the runner lists in separate files and then include them in required places? This is maybe now possible as Gitlab has evolved fast during last years. First we started with extends keyword:

gitlab-ci.yml

.devphase:
  stage: build
  when: manual
  only:
    - dev
  ...
Updating development environment (runner1):
  extends: .devphase
  tags:
    - runner1
Updating development environment (runner2):
  extends: .devphase
  tags:
    - runner2
...

This made the gitlab-ci.yml easier to read as we could list the runners separately at the end of the configuration file. However defining all these parameters for every runner is not very efficient or elegant. Somewhat later Gitlab introduced keywords "parallel" and "matrix". Now we can do this:

gitlab-ci.yml

.devphase:
  stage: build
  only:
    - dev
  tags:
    - ${DEV_RUNNER}
...
Updating development environment:
  extends: .devphase
  parallel:
    matrix:
    - DEV_RUNNER: runner1
    - DEV_RUNNER: runner2
...

Only one extends section and then list of runners which is pretty nice already. The next natural follow-up question is how one could put this list to a separate configuration file so that it would be easily copied and maintained without touching the main gitlab-ci.yml? I'm not sure how and where to use include keyword or is it even possible. For example this don't work (pipeline doesn't start).

gitlab-ci.yml:

.devphase:
  stage: build
  parallel:
    matrix:
      include: gitlab-ci-dev-runners.yml
  only:
    - dev
  tags:
    - ${DEV_RUNNER}
...

gitlab-ci-dev-runners.yml

- DEV_RUNNER: runner1
- DEV_RUNNER: runner2
...

Is Gitlab interpreting includes and variables in some "uncompatible" order orso? Is there any fellow coders who have faced this same problem here?

0 Answers
Related