Используя gitlab ci, у меня есть репозиторий, в котором созданы все мои шаблоны. Например, у меня есть шаблон задания сканера сонаров с именем .sonar-scanner.yml
:
sonar-analysis:
stage: quality
image:
name: sonar-scanner-ci:latest
entrypoint: [""]
script:
- sonar-scanner
-D"sonar.projectKey=${SONAR_PROJECT_NAME}"
-D"sonar.login=${SONAR_LOGIN}"
-D"sonar.host.url=${SONAR_SERVER}"
-D"sonar.projectVersion=${CI_COMMIT_SHORT_SHA}"
-D"sonar.projectBaseDir=${CI_PROJECT_DIR}"
. Я включил этот шаблон как проект в файл ci основного gitlab:
include:
- project: 'organization/group/ci-template'
ref: master
file: '.sonar-scanner.yml'
Так как вы понимаете, у меня есть репозиторий ci-templates, в котором созданы все мои шаблоны. И в другом репо я расширяю, используя , включая эти шаблоны.
Наконец, в репо, когда создается новый запрос на слияние, моя работа для сонара выполняется под другим файлом в моем проекте test/quality.yml
:
sonar:
stage: quality
extends:
- sonar-analysis
allow_failure: true
only:
refs:
- merge_requests
Все работает хорошо, кроме замены или переопределения моего env var. Действительно моего шаблона. У меня много имен серверов или проектов сонара. Я хотел бы знать, как переопределить эти переменные SONAR_SERVER
и SONAR_PROJECT_NAME
при расширении задания из шаблона.
В моем основном файле .gitlab-ci.yml
у меня есть объявление раздела переменных, и когда я переопределяю эти переменные, это работает. Но это не совсем то, чего я хочу. Используя много этапов и множество микро-услуг, можно повторно использовать одну и ту же работу по-разному. Что я действительно хочу сделать, это переопределить эти переменные непосредственно в файле test/quality.yml
.
Это, например, не работает:
sonar:
stage: quality
extends:
- sonar-analysis
variables:
SONAR_PROJECT_NAME: foo
SONAR_SERVER: bar
allow_failure: true
only:
refs:
- merge_requests
Это тоже не работает:
variables:
SONAR_PROJECT_NAME: foo
SONAR_SERVER: bar
sonar:
stage: quality
extends:
- sonar-analysis
allow_failure: true
only:
refs:
- merge_requests
Как лучше всего сделать эту работу?