Использование gitignore для разделения сред разработки и производства - PullRequest
1 голос
/ 02 июня 2019

Итак, я работаю над изучением python с библиотекой discord.py и играю с ботами.Боты требуют токен API, и я хотел бы отделить функционального бота на сервере от тестового бота, над которым я работаю.

Моя среда будет настроена с главной веткой и разработчикомветка.Я бы хотел, чтобы кодовая ветка master работала с Test Bot, а кодовая база ветки разработки - с Test Bot Dev.Моя идея состояла в том, чтобы иметь переменную токена API, сохраненную в неотслеживаемом файле, и поместить этот файл на сервер.Затем запустите локальный файл на моем ПК, который имеет тот же файл, но с другим токеном, установленным в качестве переменной.

Хотя это кажется немного хакерским.Мне просто интересно, есть ли лучшая стандартная практика для ситуаций, когда вы хотите использовать один репозиторий для своей базы кода, но вам нужно, чтобы конкретная переменная отличалась для ваших сред разработки и разработки.Это своего рода запутанный вопрос, поэтому я изо всех сил стараюсь найти предложения для этой ситуации с помощью поисков.

1 Ответ

1 голос
/ 02 июня 2019

Поместите приложение с требуемым профилем в управление конфигурацией (git) и игнорируйте любой (локальный) файл переопределения.

Например, поместите файл с именем .env.dist под контроль версий, тогда как файл .env находится в файле .gitignore того же проекта (по тому же пути):

# dot env
/.env

Заставьте вашу утилиту / бот загружать любой файл .env.dist по умолчанию и файл .env, переопределяющий этот файл .env.dist. Это позволяет документировать, планировать и определять необходимые переменные среды, в то же время позволяя пользователю сохранять локальную копию со всеми производственными учетными данными (при необходимости).

Затем дайте вашему боту другой параметр, чтобы загрузить другой файл среды имен (точка env), взяв на себя инициативу. Это позволяет запускать бота с любой другой конфигурацией.

Если вы следуете синтаксису файлов окружения, используемому утилитой Docker CLI , вы, скорее всего, достаточно совместимы и можете достичь многого, не отказываясь от большей части своих свобод.

Так что примите это за предложение.

Еще один: если вы хотите использовать diff-утилиты для быстрого сравнения между файлами среды, я могу предложить один совет: если вы создаете разделы (как в противном случае вы должны упорядочить имена параметров (переменных) среды по имени), дать каждому разделу заголовок с (если не сверху файла) пустой строкой, отдельным # комментарием, другим комментарием с именем раздела # name of section и еще одной единственной # строкой. Это дает инструментам различий на основе текста достаточно пищи, чтобы разделить разделы друг от друга (и помимо других однострочных комментариев).

#
# DISCORD API
#
DISCORD_ID
DISCORD_KEY

#
# MYSQL DATABASE
#
MYSQL_HOST
MYSQL_PASS
MYSQL_PORT
MYSQL_USER

(примерный .env.dist файл, подсказывающий обязательный параметр, но не предоставляющий никаких секретов)

#
# DISCORD API
#
DISCORD_ID=42
DISCORD_KEY=aefdcd8d71d200efaefdcd8d71d200ef


#
# MYSQL DATABASE
#
MYSQL_HOST=example.com
MYSQL_PASS=root
MYSQL_PORT=34732
MYSQL_USER=root

(примерный .env файл, содержащий секреты и исключенный (не добавляйте!) Через .gitinore непосредственно в проект git).

Добавьте больше файлов "dot env" в .git/info/exclude и / или если вы примете этот шаблон для всей вашей системы разработки в global .gitignore. Прочтите описание в Git gignore Документация как используется (многоуровневый) gitignore и когда он не игнорирует ни один из файлов, даже если он указан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...