управление ключами api в проекте gitlab

#gitlab

#gitlab

Вопрос:

У меня есть проект gitlab, который зеркалирует (извлекает) частное репозиторий github. Из-за своего происхождения репозиторий имеет «config/private.js » файл со всеми ключами api и конфигурацией сервера, которые ему нужны. Или, скорее, этот файл находится не в репозитории, а в .gitignore.

Как мне заполнить мою среду gitlab этим файлом? Было бы идеально, если бы я мог зарезервировать специальный файл, которого нет в репозитории и который не обновляется с помощью коммитов, а используется для заполнения среды dist командой сборки типа:

 - cat secrets.file > src/config/private.js
  

Но — мне не повезло найти это в документации. Я вижу секреты проекта и группы — но 1. было бы утомительно просто добавлять их и 2. Мне нужно было бы переписать код или создать другой, столь же утомительный скрипт для повторения каждого из них в файле.

Ответ №1:

это было немного сложно.

Gitlab не устанавливает репозиторий, он устанавливает результаты сборки, таким образом, вы можете вставить файлы ключей api на компакт-диск CI gitlab, но вам придется изменить его / перестроить для каждого env. (Вы не смогли протестировать результаты, а затем повторно развернуть известные рабочие результаты в prod.) В моем случае я создавал один раз и обязался применять соответствующие ключи только к stage и prod.

Что я делаю, так это сохраняю секреты в виде переменных в месте назначения. Я внедряю файл ключа, который ссылается на env во время CI CD. Например, он может установить ключ на __MY_API_KEY__ . Я использую скрипт postinstall в deployment для применения этих ключей env к встроенным скриптам, которые установлены (это просто команда tr над набором переменных env и / файлов сборки).

Таким образом, я могу использовать жестко закодированный, gitignored закрытый файл локально и по-прежнему вводить закрытые ключи, специфичные для каждой среды по отдельности.