【问题标题】:Integrate private files for open source application code in devops pipeline在 devops 管道中集成开源应用程序代码的私有文件
【发布时间】:2017-04-11 09:15:00
【问题描述】:

我有一个 Java 应用程序作为我们整个项目的后端,我们所有的软件都是完全开源的。问题如下:

我们使用来自 Google 的多个 API 密钥、SendGrid 到 MySQL 数据库身份验证密钥。所有这些都存储在application.properties 文件中。我们在 GitHub 上的代码同上,只是缺少这些文件。目前的解决方法是它们仅在我们部署到 Heroku 的 Heroku 遥控器上可用。每当我们希望部署更改时,我们切换到 heroku 分支,从 master 拉取更改并重新设置此分支,最后推送它。

我们很快就会转移到 cycle.io 运行容器化应用程序,所以基本上我们正在转移到 Docker。我们将部署 dockerized 应用程序和一个 MySQL Docker 实例并相互通信。引用循环

环境允许您在您的团队之间进行组织和交流 容器。当您从环境中单击容器上的“开始”时, 网络自动配置,并通知任何其他 容器在其存在的环境中。

Cycle.io 允许我们自动链接来自Docker Hub 的图像或拥有一个带有Dockerfile 的git 存储库。它从那里拾取它,然后自动部署它。

我的问题是,如何将这些私有文件集成到我的代码构建测试部署管道中?。天真地,我在想一些在构建之前“注入”这些文件的方法。我不知道该怎么做。我目前对 docker 部署的想法是

  • 在我的本地系统上构建一个可以运行的 docker 映像
  • 将其推送到 Docker Hub 到一个私有存储库并允许与 docker hub 集成的 cycle.io 从那里获取它
  • (我也想集成 Tavis/CI,不知道怎么做)

是否有任何 SENSIBLE,或者由于缺少另一个词,PRO 这样做的方式?我们是一群寻求遵循最佳实践的学生,这个应用程序将扩大规模。我们已经为部署和域名通行证等支付了全额费用,但我们并没有任何专家指导。

【问题讨论】:

  • 除非cycle.io 允许您为您的环境配置某种 秘密数据,否则您无法正确执行此操作。鉴于此,很容易利用更大的秘密。它可能是解密本地文件所需的加密密钥、访问数据库所需的密码等。如果没有来自 cycle.io 的某种支持,无法安全地执行此操作,因此他们应该提供一些东西。如果您只拥有私有 docker hub 凭据,那么您可以使用您的私有 docker 存储库,但依赖它们的安全性我不会很舒服。

标签: git docker private devops


【解决方案1】:

Cycle 允许您为每个环境配置环境变量,它们的处理方式与处理本地计算机上的环境变量的方式相同。这意味着您可以配置例如 SENDGRID_API_KEY 变量,在 Cycle 中将其设置为您的 API 密钥(导航到环境 -> 容器 -> 配置)并让您的代码直接读取该变量。

您可以声明 dockerfile (ENV SENDGRID_API_KEY="") 中存在的环境变量,Cycle 将预先填充这些变量,以便您只需填写框并点击保存即可。您需要重新启动容器,然后您的变量应该可供您的程序使用,而无需管理移动文件。

【讨论】:

  • 正是我所需要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多