Dal*_*eri 5 python git discord.py
所以我正在努力使用discord.py 库学习Python 并使用机器人。这些机器人需要 API 令牌,我想将服务器上的功能机器人与我正在开发的测试机器人分开。
我的环境将设置一个 master 分支和一个 dev 分支。我希望主分支的代码库能够与 一起使用Test Bot,并且开发分支的代码库能够与 一起使用Test Bot Dev。我的想法是将 API 令牌变量存储在未跟踪的文件中,并将该文件放置在服务器上。然后,我的 PC 上有一个本地文件,该文件具有相同的文件,但设置了不同的标记作为变量。
不过感觉有点老套。我只是想知道,对于您想要为代码库使用一个存储库,但需要为您的开发和生产环境使用不同的特定变量的情况,是否有更好的标准实践。这是一个令人费解的问题,因此我正在努力通过搜索来成功找到针对这种情况的建议。
将具有所需配置文件的应用程序置于配置管理 (git) 下,并忽略任何(本地)覆盖文件。
例如,将一个名为.env.dist版本控制的文件放在同一个项目的文件.env中.gitignore(在同一路径中):
# dot env
/.env
Run Code Online (Sandbox Code Playgroud)
.env.dist让您的实用程序/机器人默认加载任何文件并.env覆盖该.env.dist文件。这允许您记录、规划和定义所需的环境变量,同时允许用户保留包含所有生产凭据的本地副本(如果需要)。
然后给你的机器人另一个参数来加载不同名称的环境(dot env)文件。这允许您使用任何不同的配置运行机器人。
如果您遵循Docker CLI 实用程序所使用的环境文件的语法,那么您很可能具有良好的互操作性,并且可以达到很远的目标,因此无需放弃大部分自由。
所以将此作为一个建议。
另一种:如果您想使用 diff-utilities 快速比较环境文件,我可以提供的一个提示是,如果您创建部分(否则您应该按名称对环境参数(变量)名称进行排序),请给每个部分一个带有空行(如果不在文件顶部)的标题、一个注释#、另一个带有节名的注释# name of section和另一个#单行。这为基于文本的差异工具提供了足够的资源来保持各个部分彼此分开(并且与其他单行注释分开)。
#
# DISCORD API
#
DISCORD_ID
DISCORD_KEY
#
# MYSQL DATABASE
#
MYSQL_HOST
MYSQL_PASS
MYSQL_PORT
MYSQL_USER
Run Code Online (Sandbox Code Playgroud)
(示例.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
Run Code Online (Sandbox Code Playgroud)
(包含秘密并直接在 git 项目中.env排除(不要添加!)的示例文件)。.gitinore
添加更多“dot env”文件到.git/info/exclude和/或如果您将这种模式应用于您的整个开发系统到您的全局.gitignore. 阅读Git gignore 文档中的描述,了解如何使用(多级)gitignore,以及即使指定,它何时也不会忽略任何文件。