gpt4 book ai didi

ruby - 如何在 docker 容器中使用私有(private) gems(GemFury)?

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:15 24 4
gpt4 key购买 nike

我正在尝试运行一些用于自动导出的 ruby​​ 脚本。由于这些远程运行,我们将它们构建在 Docker 容器中并将它们推送给 iron worker。

我们使用 GemFury 为这些脚本托管一些重要的私有(private) gem。为了将 GemFury 的凭证保留在 Git 之外,我们使用全局 bundle 配置 bundle config gem.fury.io MY_SECRET_TOKEN

我如何设置 bundle 的配置,以便它从 GemFury 中提取 gems,而不让它们显示在源代码管理中?

最佳答案

将全局包配置属性设置为应用程序特定属性。将更改推送到公共(public)存储库。更新 SECRET_TOKEN bundle-config 文件中的值 ( $APP_DIR/.bundle/config ) 并运行 $ git update-index --assume-unchanged <file>命令从 git 跟踪中删除文件并防止更新公共(public)存储库中的实际 SECRET_TOKEN 值。

$ 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

这会在公共(public)存储库上创建一个模板 文件。向存储库贡献者提供说明以添加 secret token 并执行相同的 --assume-unchanged 命令。

示例文件

$APP_DIR/.bundle/config 公共(public) github 存储库上的文件:

---
BUNDLE_GEM__FURY__IO: MY_SECRET_TOKEN

$APP_DIR/.bundle/config 文件到本地机器

---
BUNDLE_GEM__FURY__IO: d1320f07ac50d1033e8ef5fbd56adf360ec103b2

参见 bundle-cofig用于澄清和更多详细信息的文档

注意:这种方法的缺点有两个:

  1. 克隆存储库并需要 SECRET_TOKEN 的开发人员值(value)将不得不通过一些外部手动过程获得它(良好的安全实践,但设置起来很痛苦)
  2. 如果你需要添加更多的 bundle-config 属性,你将不得不运行 git update-index --no-assume-unchanged <file>启用跟踪,并将所有 private 值恢复为其伪值。此模板方法还存在贡献者忘记禁用文件跟踪并将其私有(private)值推送到公共(public)存储库的风险(但至少它们不会成为您的 secret 值)

这种模板方法的优势在于,您为开发人员提供了尽可能多的机会,以便他们能够开始为存储库做贡献。

关于ruby - 如何在 docker 容器中使用私有(private) gems(GemFury)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com