Управляю чувствительными данными в GitLab CI преимущественно с помощью предопределенных переменных окружения, групп CI/CD переменных и секретов Kubernetes.
Передача происходит следующим образом:
- Предопределенные переменные: Автоматически предоставляются GitLab Runner'ом во время выполнения пайплайна. К ним относятся ID проекта, имя ветки, статус сборки и т.д. Некоторые из них могут быть чувствительными (например, служебные токены, если настроены). Доступ к ним ограничен контекстом выполнения задачи.
- CI/CD переменные: Определяются в настройках проекта или группы GitLab и могут быть помечены как "Protected" (доступны только в protected-ветках и тегах) и "Masked" (скрываются в логах при выводе). Могут содержать пароли, ключи API и т.д. Передаются ранеру в зашифрованном виде.
- Группы CI/CD переменных: Позволяют централизованно управлять переменными для нескольких проектов в группе. Удобно для общих секретов. Работают аналогично переменным проекта с точки зрения передачи и защиты.
- Секреты Kubernetes: Если проект разворачивается в кластере Kubernetes,