我想将一些代码推送到我的GitHub存储库。这些代码使用不同的语言,如Javascript
,Java
,Python
等。其中一些代码包含一些我不想发布的私有API
密钥。
有没有办法自动隐藏密钥。我应该手动将其从我的代码中删除吗?
有很多项目我想推送给GitHub。因此,手动删除不是一个好选择。
任何时候你有像敏感数据的文件
config.yml
你不能在你的存储库中提交它们。我会告诉你一个例子。
假设您有一个带有一些用户名和密码的yaml文件:
# app/config/credentials.yml
credentials:
username: foo
password: bar
如果要隐藏foo
和bar
值,请从存储库中删除此文件,但只添加一个distribution
文件,该文件旨在维护用户名和密码字段,但没有实际值:
# app/config/credentials.yml.dist
credentials:
username: ~
password: ~
在安装过程中,您可以获取此文件,将app/config/credentials.yml.dist
复制到app/config/credentials.yml
。
此外,请记住将app/config/credentials.yml
添加到您的.gitignore
文件中。
对api键也一样:
# app/config/config.yml
config:
credentials:
username: foo
password: bar
api_stuffs:
api_foo: fooooo
api_secret: baaaaar
api_token: tooooken
这适用于配置文件,并且是一种很好的模式,可以在每次需要共享配置结构而不是合理数据时为您节省时间。 Ini文件,配置等。
无论如何,在代码中使用API密钥可能是一个坏主意。这意味着任何想要使用您的代码的人都必须编辑代码并重建它。
此类用例的教科书解决方案是将凭据移动到某个配置文件,并在README.md
文件中添加有关配置文件的结构和位置的清晰文档。您还可以在gitignore
文件中为其添加条目,以防止您(以及其他任何人)错误地将您的私人信息推送到GitHub。
您可以在服务器中添加enviornment variables以隐藏API密钥。所有流行的编程语言都有默认方法来访问环境变量。