Каким образом вышифруете переменные в CI
Я шифрую и храню чувствительные данные в CI через встроенные механизмы секретов (например, Secrets в GitHub Actions, переменные/секреты в GitLab CI, Credentials в Jenkins), чтобы они были зашифрованы "в покое" и не попадали в код или логи. В пайплайне такие значения пробрасываются через переменные окружения и помечаются как скрытые, чтобы не выводиться в вывод сборки. При необходимости использую внешние хранилища секретов (Vault, AWS Secrets Manager и т.п.) и получаю секреты динамически во время запуска пайплайна.
Цель шифрования переменных в CI — безопасно работать с паролями, токенами и ключами, не сохраняя их в репозитории и не светя в логах. Обычно я опираюсь на встроенные механизмы CI-систем и при необходимости дополняю их внешним хранилищем секретов.
Типичный подход выглядит так:
Settings → Secrets and variables, в GitLab CI — Settings → CI/CD → Variables, в Jenkins — Credentials. Секреты там хранятся зашифрованными, имеют ограниченный доступ и автоматически маскируются в логах.yaml-конфиг или скрипт в открытом виде, а лишь подставляется через переменные окружения, которые CI сам подставляет на этапе запуска job'а.Например, в GitHub Actions секрет можно сохранить в настройках репозитория как MY_API_KEY и использовать его в job'е через переменную окружения:
В GitLab CI секреты/переменные задаются в настройках проекта, после чего их можно использовать в конфигурации .gitlab-ci.yml также через переменные окружения:
Отметьте свой прогресс