2011-08-18 74 views
16

目前我们使用FTP来维护构建工件分发和第三方产品(仅供内部使用)。文件是docs(HTML/pdf/chm/...),libs(.dll/.so/.a/.jar/...),程序(.exe/.jar/...)和其他任何东西。它们不限于Java/.NET,可以来自不同的文化(固件,驱动程序,移动/工作站,GUI,Win/Linux/Mac/Solaris/AIX等)。建议构建工件库管理器

为了orginize hierarhy我们使用这样的路径:

 
ftp://3pp/VENDOR/PRODUCT/VERSION/... 
ftp://3pp/opensource/PACKAGE-x.x.x.tar.bz2 
ftp://dist/PRODUCT/VERSION/... 

为了保持工件的描述中,我们使用自述CHANGES平原测试文件(reStructuredText的)。

此模式中缺少什么?

  • 缺少权限(任何人都可能损坏存储)。
  • 缺少依赖关系跟踪(因此每个构建文件必须更新,如果版本依赖关系已更改)。
  • 缺少抓取活动(某些文件似乎不再需要,但我们不知道哪个)。

我不是在深入寻找现有解决方案。一些包管理器像rpm/dpkg,听说Maven回购等...

请推荐Build Artifact Repository Managers。也很高兴听到缺点和限制。

UPDATE

回答

39

您正在创建自定义软件工件存储库。有三个开放源代码项目,它已经做到这一点:

Artifactory的和Nexus也付费版本。

您可以在这些存储库中存储任何类型的文件,并且不需要使用Maven。您可以手动将工件部署到它们。您可以设置细粒度的访问控制。它们与自动构建工具很好地集成。

我认为使用这些工具可以为您节省大量的工作量!

Here这三者之间的公平性(社区驱动)比较矩阵。

+1

** Apache Archiva **仅与Java世界相关...... – gavenkoa

+1

此工具仅集成**到Java构建工具... – gavenkoa

+20

绝对不是这样。您可以在这些存储库中存储任何类型的软件工件。 Java可能有最成熟的工具,但没有限制阻止您将这些存储库与其他技术一起使用。看看Sonatype关于存储库管理的书籍,以了解工件存储库的工作原理以及如何将它们集成到工作流程中。 http://www.sonatype.com/books/nexus-book –

0

使用SVN + Apache的(mod_dav_svn.so,mod_authz_svn.so)看来我得:

  • 匿名只读通过宽协议的HTTP协议访问 支持客户端下载(GNU Make的wget/curl, Apache Ant的任务)。为用户/组
  • 易于维护的写访​​问(易语法):

     
    [repo:/path] 
    user = rw 
    

    通过尸体效用。

  • 与LDAP集成。

  • 发布的历史(什么时候,什么和谁)。
  • 原子操作(防止发生并发和错误回滚)。