我正在制作一个经济不平衡机器人,我想使代码开源。目前,我有一个私有代码仓库。该机器人托管在Heroku上,并设置为每当“ Master”分支更新时,它将自动部署该应用程序。但是我有2个我不希望开源回购包含的细节。机器人令牌和用于存储用户数据的服务器URL。我不希望开源存储库具有服务器url和令牌。
令牌和服务器url都存储在.JSON文件中,该文件将从主index.js文件访问。看起来是这样的:
{
token: "Token_here",
server: "Server_URL_Here"
}
有没有一种方法可以使Heroku和我可以访问JSON文件,但是正在查看开放源代码存储库的人看不到JSON文件?这可能吗?
有几种选择,包括“ 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
好的,我创建了.bashrc文件用于本地测试
看起来像
TOKEN="tokenhere"
但是当我在代码中引用它时,
client.login(ENV[token])
我没有定义ENV现在可以正常工作了,我必须使用.env而不是.bashrc,而不是ENV,我必须使用process.env.TOKEN,而且我还必须在文件开头使用dotenv模块(npmjs.com/package/dotenv)