Как настроить переменную GitLab Enviroment в сохраненном виде? - PullRequest
1 голос
/ 18 марта 2020

Я не хочу помещать конфиденциальные учетные данные (например, API-ключи, пароли ...) в мою ветку. Для этого GitLab (и другие CI / CD-Services) могут устанавливать переменные окружения. Они будут внедрены в процесс развертывания в сценарий.

Я знаю о двух способах их установки в GitLab:

  1. через пользовательский интерфейс (Проект ⇒ Настройки ⇒ CI / CD ⇒ Переменные )
  2. Через .gitlab-ci.yml

Как я считаю, первый способ является безопасным, поскольку ни один из файлов с учетными данными не сохраняется в git -реп, это также более сложный способ ... потому что я должен установить каждую переменную вручную через GitLab- GUI

При втором способе я вижу проблему, что .gitlab-ci.yml сохраняется в gitlab-repo, поэтому учетные данные не защищены.

Вопрос: Есть ли способ определить ENV-переменные в файле и предоставить их GitLab, не помещая их в филиал? Или есть другой способ сделать эти ENV-Vars простыми и безопасными в GitLab?

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Есть ли способ определить ENV-переменные в файле?

Да, в упомянутых вами настройках пользовательского интерфейса вы можете указать тип переменной variable (ключ: значение) ) или file (в ключе будет указан путь к секретному файлу с содержимым из введенного значения).

Итак, переменная файла выглядит как то, что вы ищете.

Readme и docs обеспечивают хорошее описание переменных. Лично я нахожу очень полезными другие варианты: маскирование переменных и защищенное состояние.

0 голосов
/ 19 марта 2020

Спасибо, makozaki, это хороший совет, но есть некоторые особые требования:

Сначала go к вашему проекту ⇒ Настройки ⇒ CI / CD ⇒ Переменные и добавьте их следующим образом: enter image description here

Key будет преобразовано в имя файла, а введенные вами значения будут как данные внутри этого файла.

в Job-Logs CI -Процесс он обеспечивает полный путь к вашему новому сгенерированному файлу ... он выглядит следующим образом: ENV_PRODUCTION: '/builds/yourProjectGroup/gatsby_netlifycms_starter.tmp/ENV_PRODUCTION',

Уведомление

вы не можете выбрать простой способ и назовите его .env.production, чтобы использовать его с dotenv Поскольку поле ключа не позволяет использовать специальные символы, такие как .,

Теперь, когда вы получили File Со всеми вашими значениями конфигурации вы можете легко реализовать это в своем Приложении (например, с помощью dotenv).

Для моей реализации Gatsby это выглядит так.

require("dotenv").config({
  path: process.env.ENV_PRODUCTION ? process.env.ENV_PRODUCTION : `.env.${process.env.NODE_ENV}`,
})
const config = require('gatsby-plugin-config').default;

Что здесь происходит? Dotenv.config () проверяет, существует ли созданный вами самостоятельно ENV_PRODUCTION ... если да, он будет использован. В противном случае он будет использовать общий .env.<yourNodeEnviroment> один.

Таким образом, с помощью указанных выше значений в ENV_PRODUCTION вы можете получить доступ к FIRST_VALUE в вашем приложении.

Таким образом, это легко иметь .env.development для запуска приложения на локальном компьютере и использовать ENV_PRODUCTION env от Gitlab на производстве.

...