用于存储派生信息的存储库(构建工件)

Ber*_*rtR 1 binaryfiles repository archiva nexus artifactory

我正在寻找一个"存储库"来存储派生信息(构建工件).我们有一个存储库(目前是Mercurial)来存储我们的源代码.当某些东西被推送到源存储库时,代码会通过一个持续集成服务器,我们会进行增量构建,因此会更改一些dll.这应该添加到一些"存储库",以便每个人都可以使用该版本,而无需再次进行构建.我正在寻找以下功能:

  • 应该很容易更新源代码并获取相应的二进制文件(我们可能会为此创建一个脚本)
  • 您应该轻松地立即获取所有二进制文件(不仅是在上一次增量构建期间更改的那些二进制文件.
  • 未更改的二进制文件只能在存储库中存储一次.
  • 更新源代码和二进制文件时,只应传输更改的二进制文件(而不是所有二进制文件).这类似于源代码所发生的情况.
  • 更新到某个版本时,只应在本地存储该版本,而不是完整的历史记录.
  • 我们应该能够在一段时间后从二进制"存储库"中删除某些版本.但是,如果后续增量构建仍然需要dll,那么这些dll当然不应该从"存储库"中完全删除

什么符合这些要求?

Dro*_*sky 8

我同意Manfred,你要找的是二进制存储库管理器.除了Nexus存储库管理器,您还应该考虑Artifactory.
至于您询问的功能列表:

  • 正如您所提到的,CI服务器应负责识别版本控制中的更改并启动创建二进制文件的构建过程.如果构建成功,CI服务器/构建工具还应将生成的二进制文件部署到存储库管理器.Artifactory提供了一个构建集成功能,它负责将二进制文件与构建元数据一起部署.
  • 使用Artifactory的构建集成功能,您可以获取特定构建生成的所有二进制文件的列表,并将其下载为存档.Artifactory为这些操作提供REST API.
  • 存在用于将工件存储在存储库管理器中的不同方法.某些工具存储同一二进制文件的多个副本.其他,例如Artifactory,使用基于校验和的存储,每个二进制只保留一个副本(基于其校验和).如果您在不同的存储库中保留相同二进制文件的多个副本,尤其是在处理大型二进制文件(war文件,docker镜像,ISO等)时,这将付出代价.另一个好处是存储库之间的廉价副本/移动,这是促销工作流程的常见做法.
  • Artifactory构建集成使用基于校验和的部署,该部署仅部署Artifactory中不存在的二进制文件.对于确实存在且未更改的二进制文件,它仅创建对现有二进制文件的新引用,从而节省了发送实际字节的需要.
  • Artifactory提供了清理二进制文件的多种选项,包括内置的清理策略以及使用用户插件Artifactory查询语言(AQL)开发自己的自定义逻辑的选项

另外,我强烈建议您查看二进制存储库比较矩阵.

免责声明:我正在为ArtFory背后的公司JFrog工作