持续集成 - 敏感文件和构建代理程序的依赖项

时间:2017-12-21 15:54:18

标签: docker continuous-integration teamcity credentials

我想设置多个执行以下任务的CI任务:

  1. 从VCS检出项目源(由代码更改触发)
  2. 下载敏感配置文件(未签入VCS)
  3. 构建项目
  4. 部署项目
  5. 我特意使用TeamCity,但我认为相同的概念适用于其他地方。我设置了一个CI服务器和多个构建代理(在同一台服务器上作为Docker容器,或者可能分散在其他机器上)。我的理解是这些构建代理都以相同的方式进行了最低限度的配置,并且可以随时构建任何项目。

    我的问题是如何处理敏感文件。我的许多构建都需要包含敏感信息/凭据的属性文件,而不会检入VCS。我正在考虑拥有一些全局存储库(即AWS S3),我可以在其中加密敏感文件,并让构建代理在需要时下载它们。但是,这将要求所有构建代理都安装了AWS CLI软件,以便他们可以下载这些文件。

    如何将包含敏感信息的文件传递给分布式构建代理?

    如果我继续推进全球存储,那么我需要在构建代理上安装AWS CLI。虽然我的问题是关于AWS CLI的,但我可以想象其他需要在构建之前安装其他软件的项目。 如何设置构建代理环境,以便他们可以构建具有不同依赖关系的多个项目?

    我是否使用构建所有项目所需的所有软件设置所有构建代理?像常见的Docker图像一样?这似乎是个坏主意,因为它将构建配置放在不同的位置(TeamCity服务器和单独的Dockerfile)。它也可能导致单片,常见的Docker镜像。

    或者,我是否创建了一个构建步骤(每个项目),为一个项目下载并安装所需的软件?这似乎是一个更好的主意,但我每次构建时都会安装软件(如AWS CLI)。无论该构建代理是否已安装该软件。我还需要担心来自多个项目冲突的软件。我是否必须添加一个删除软件的清理步骤?或者我应该考虑制作一个Docker容器来构建每个项目吗?

    还有其他方法吗?提前谢谢!

0 个答案:

没有答案