добавление задания gitlab-ci при включении шаблона gitlab-ci

#gitlab #gitlab-ci #pipeline

#gitlab #gitlab-ci #конвейер

Вопрос:

вот моя проблема: у меня есть шаблон GitLab-ci.yml в отдельном репозитории со всеми основными этапами / шагами. В другом репозитории с фактическим кодом я включаю этот шаблон и перезаписываю переменную, например, для модульного тестирования.

Вот как выглядит базовый шаблон:

 ---
image: docker:git

variables:
  TEST_CMD: unit-test $UNIT_TEST_CMD_OPTIONS

stages:
  - pre-build
  - build
  - test

actual_build:
  stage: build
  <<: *only-default
  script:
    - echo "build it"
    - ...

....
  

Теперь я включаю этот шаблон в свой фактический файл репозитория gitlab-ci.yml для выполнения всего конвейера:

 ---
include:
  - project: blahfubar/gitlab-ci-template
    ref: master
    file: basic.gitlab-ci.yml

variables:
  UNIT_TEST_CMD_OPTIONS: --testsuite unit
  

Теперь проблема:
Я хочу добавить дополнительное задание только в это репозиторий, т.Е. Выполнить там проверку безопасности, но это не работает, и с помощью ключевого слова «extends:» могут быть расширены только задания.

 ---
include:
  - project: blahfubar/gitlab-ci-template
    ref: master
    file: basic.gitlab-ci.yml

variables:
  UNIT_TEST_CMD_OPTIONS: --testsuite unit

security-step:
  stage: test
  script:
    - ./security-check

  

Если я сделаю это так, будет выполнен только «шаг безопасности», но не все остальные шаги из включенного шаблона.

Может у кого-нибудь есть решение для этого, потому что я ничего не нашел в документах gitlab-ci.

Заранее спасибо 🙂

Ответ №1:

Если я правильно понимаю, !reference ключевое слово в Gitlab может вам помочь, но, вероятно, не полностью решит вашу проблему: https://docs.gitlab.com/ee/ci/yaml/#reference-tags

Ваш security-step может выглядеть так:

 security-step:
  stage: test
  script:
    - !reference [actual_build, script]
    - ./security-check
  

Это будет включать все строки вашего сценария сборки перед этапом безопасности.