#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
Это будет включать все строки вашего сценария сборки перед этапом безопасности.