Ответ
GitLab CI/CD Variables — это пары «ключ-значение», которые используются для передачи конфигурационных данных и секретов в пайплайны. Они позволяют отделить код пайплайна от чувствительных данных (токены, пароли) и переменных окружения.
Основные типы переменных:
- Project Variables: Доступны только в рамках конкретного проекта.
- Group Variables: Наследуются всеми проектами внутри группы.
- Instance Variables: Глобальные переменные уровня всего GitLab-инстанса.
Пример использования в .gitlab-ci.yml:
variables:
APP_VERSION: "1.0.0"
deploy_to_prod:
stage: deploy
script:
- echo "Deploying version $APP_VERSION"
# Использование переменной, заданной в настройках CI/CD
- deploy-script --api-key $PRODUCTION_API_KEY
only:
- main
Ключевые атрибуты переменных:
- Masked (
masked): Значение переменной скрывается в логах выполнения заданий. - Protected (
protected): Переменная доступна только для защищенных веток (например,main) и тегов. - File (
file): Значение переменной записывается в файл, что удобно для передачи сертификатов или ключей (например,$KUBECONFIG).
На практике я использую Group Variables для общих настроек, таких как DOCKER_REGISTRY_URL, а Project Variables — для специфичных для проекта секретов, помечая их как masked и protected.