#1 楼
在开发期间,您会生成大量不同的工件。其中可能包括:源代码
已编译的应用程序
可部署程序包
文档
以及可能的其他很好
尽管您可以使用源代码控制系统来存储所有文件,但是由于源代码控制系统通常设计用于处理基于文本的文件,而不是二进制文件,因此通常效率非常低下。如果大多数发行版都是基于文本的,并且您不必存储大量的二进制数据,则可以将它们用作简单的存储机制。
工件存储库旨在存储各种文件,包括二进制文件。这包括压缩的源代码,构建结果以及docker映像之类的所有内容。此外,它们通常不仅存储这些工件,而且还使用各种其他功能帮助管理它们,例如:版本支持:正确存储一些元数据,例如何时构建每个工件,什么?它们的版本号是,存储其哈希等。
保留:确保您仅保留重要的工件,并根据可以设置的各种标准自动删除仅是快照/不再需要的工件。
br />访问控制:设置谁可以发布和谁可以下载各种工件
促销:提升工件的能力。例如,您可以在编码器附近的服务器上具有较短保留期的快照工件,而在实时服务器附近具有单独的存储库,其中仅显示被认为可部署的工件。这还包括对各种版本通道的支持,以及在它们之间移动构件(例如将特定版本从beta升级到稳定版)。
充当工件的本机存储库。意味着您可以将其用作Maven,rubygems,docker等的主要存储库。这也可以包括来自官方存储库的工件缓存。
#2 楼
有存储库管理器和通用软件包存储库管理器(UPM)。UPM可以存储Jenkins,teamcity等的所有构建工件,并且通常还可以充当Maven,npm,NuGet等许多不同类型的二进制工件的存储库管理器。
这些将是Jfrog Artifactory,Inedo ProGet和Sonatype Nexus之类的工具。
这里是一个相当不错的比较:https://binary-repositories-comparison.github.io/
评论
可能值得在Versionning支持的基础上增加“通道”功能,具有使某些计算机在通道“ develop”中针对最新版本,而使生产机在“稳定”通道中针对特定版本的能力。
–滕西拜
17 Mar 10 '17 at 8:59
@ Pierre.Vriens添加了一些小意见,但也许也可以在单独的问题中解决
– SztupY
17 Mar 10 '17 at 15:19
谢谢,但以防万一,这是您进一步提出我的补充评论的机会...
– Pierre.Vriens♦
17 Mar 10 '17 at 15:39
在此类存储库中还跟踪配置文件或固定装置是否有意义?
–图图卡
17年11月1日在12:23