Мы используем проект Gitlab в команде. У каждого разработчика есть свой кластер Kubernetes в облаке и собственный филиал в GitLab. Мы используем GitLab-CI для автоматического создания новых контейнеров и их развертывания в наших кластерах Kubernetes.Названия переменных Concat в GitLab
В настоящее время у нас есть .gitlab-ci.yml
выглядит примерно так:
variables:
USERNAME: USERNAME
CI_K8S_PROJECT: ${USERNAME_CI_K8S_PROJECT}
REGISTRY_JSON_KEY_FILE: ${USERNAME_REGISTRY_JSON_KEY_FILE}
[...]
stages:
- build
- deploy
- remove
build-zeppelin:
stage: build
image: docker:latest
variables:
image_name: "zeppelin"
only:
- ${USERNAME}@Gitlab-Repo
tags:
- cloudrunner
script:
- docker login -u _json_key -p "${REGISTRY_JSON_KEY_FILE?}" https://eu.gcr.io
- image_name_fqdn="eu.gcr.io/${CI_K8S_PROJECT?}/${image_name?}:latest"
- docker build -t ${image_name_fqdn?} .
- docker push ${image_name_fqdn?}
- echo "Your new image is '${image_name_fqdn?}'. Have fun!"
[...]
Таким образом, в начале мы ссылаемся на важную информацию, используя USERNAME префикс. Это работает очень хорошо, но проблематично, так как мы должны исправлять их после каждого запроса на растяжение от другого пользователя.
Итак, мы ищем способ сохранить файл gitlab-ci одинаковым для каждого разработчика, все еще ссылаясь на некоторые переменные gitlab, разные для каждого разработчика.
Вещи мы думали о том, что не похоже на работу:
Использование нескольких YML файлов и импортировать их друг в друга =>not supported.
Попробуйте комбинировать переменные Gitlab среды в качестве префикса:
CI_K8S_PROJECT: ${${GITLAB_USER_ID}_CI_K8S_PROJECT}
или
INDIVIDUAL_CI_K8S_PROJECT: ${GITLAB_USER_ID}_CI_K8S_PROJECT
CI_K8S_PROJECT: ${INDIVIDUAL_CI_K8S_PROJECT}
Это изображение не использует оболочку bash. –
Поскольку файлы YAML структурированы, их очень просто обрабатывать и комбинировать. Просто сделайте это автоматическим шагом, который выполняется вашим vcs после проверки. – Anthon