我正在尝试运行一些ruby脚本来自动导出。由于这些远程运行,我们在Docker容器中构建它们并将它们推送给铁工人。
我们使用GemFury为这些脚本托管一些重要的私有宝石。
为了保持GemFury的凭据不在Git中,我们使用全局捆绑配置bundle config gem.fury.io MY_SECRET_TOKEN
。
如何设置bundle的配置,以便从GemFury中获取宝石而不将它们显示在源代码管理中?
答案 0 :(得分:1)
将全局包配置属性设置为特定于应用程序的属性。将更改推送到公共存储库。更新bundle-config文件(SECRET_TOKEN
)中的$APP_DIR/.bundle/config
值并运行$ git update-index --assume-unchanged <file>
命令从git tracking中删除该文件,并阻止更新公共存储库中的实际SECRET_TOKEN值。 / p>
$ bundle config --local gem.fury.io SECRET_TOKEN
$ git commit -a -m "adding application bundle config properties"
$ git push origin master
$ bundle config --local gem.fury.io d1320f07ac50d1033e8ef5fbd56adf360ec103b2
$ git update-index --assume-unchanged $APP_DIR/.bundle/config
这会在公共存储库上创建模板文件。向存储库贡献者提供指令以添加秘密令牌并执行相同的--assume-unchanged命令。
$ APP_DIR / .bundle / config 文件:
---
BUNDLE_GEM__FURY__IO: MY_SECRET_TOKEN
$ APP_DIR / .bundle / config 归档本地计算机
---
BUNDLE_GEM__FURY__IO: d1320f07ac50d1033e8ef5fbd56adf360ec103b2
有关说明和更多详细信息,请参阅bundle-cofig文档
注意:这种方法的缺点有两个方面:
SECRET_TOKEN
值的开发人员必须通过一些外部手动过程获得它(良好的安全实践,但设置很痛苦)git update-index --no-assume-unchanged <file>
以启用跟踪,并将所有私有值还原为其伪值。这种模板方法也存在风险,即贡献者忘记禁用对文件的跟踪并将其私有值推送到公共存储库(但至少它们不是您的秘密值)。这种模板方法的优点是,您可以尽可能地为开发人员提供能够开始为存储库做贡献的方法。