在 devops 管道中集成开源应用程序代码的私有文件

Integrate private files for open source application code in devops pipeline

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

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

我们很快就会转向 cycle.io runs containerized applications, so basically we're shifting to Docker。我们将 dockerized 应用程序和 MySQL Docker 实例部署并相互通信。引用 Cycle

An environment allows you to organize and communicate between your containers. When you click 'start' on a container from the enviroment, the networking automatically configures, and notify any other containers within the environment of its presence.

Cycle.io 允许我们自动 link 来自 Docker Hub 的图像或具有 git 存储库和 Dockerfile。它从那里拾取它,然后自动部署它。

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

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

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

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