Warm tip: This article is reproduced from serverfault.com, please click

github-隐藏来自Git公共仓库的特定文件

(github - Hide specific file from Git public Repo)

发布于 2020-11-28 21:24:33

我正在制作一个经济不平衡机器人,我想使代码开源。目前,我有一个私有代码仓库。该机器人托管在Heroku上,并设置为每当“ Master”分支更新时,它将自动部署该应用程序。Heroku设置设置为从master分支自动部署但是我有2个我不希望开源回购包含的细节。机器人令牌和用于存储用户数据的服务器URL。我不希望开源存储库具有服务器url和令牌。

令牌和服务器url都存储在.JSON文件中,该文件将从主index.js文件访问。看起来是这样的:

{
token: "Token_here",
server: "Server_URL_Here"
}

有没有一种方法可以使Heroku和我可以访问JSON文件,但是正在查看开放源代码存储库的人看不到JSON文件?这可能吗?

Questioner
Coder Gautam YT
Viewed
22
paulsm4 2020-12-02 08:04:17

有几种选择,包括“ git-crypt

由于你使用的是Heroku,因此最好的选择是:

https://softwareengineering.stackexchange.com/a/182074/76526

在heroku上将密码/ api密钥保密的首选方法是通过heroku命令行应用程序设置配置值。以下示例摘自heroku开发中心文章

(下面的示例,我的整个答案都与Rails应用有关)

$ cd myapp
$ heroku config:add S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190
Adding config vars and restarting myapp... done, v14
S3_KEY:     8N029N81
S3_SECRET:  9s83109d3+583493190

然后使用ENV []变量在代码中引用这些配置值

AWS::S3::Base.establish_connection!(
  :access_key_id     => ENV['S3_KEY'],
  :secret_access_key => ENV['S3_SECRET']
)

这样,你的敏感密码就不会存储在git存储库中。(注意:在本地运行应用程序时,请在.bashrc文件中设置这些值

另外,我不确定你正在运行哪种类型的应用程序,但是在Rails中,heroku不使用你的database.yml文件,它只是根据你的应用程序设置来设置数据库用户名/密码。因此,你可以避免将这些凭据保存在git中

另外,如果你正在运行自己的应用程序并希望将其保留为私有,那么github的一个很好的替代选择是 bitbucket,它提供了免费的私有存储库。


附录:

现在可以正常工作了,我必须使用.env而不是.bashrc,而不是ENV,我必须使用process.env.TOKEN,而且我还必须在文件开头使用dotenv模块(npmjs.com/package/dotenv)–编码员Gautam YT