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集成。

  • 發佈的歷史(什麼時候,什麼和誰)。
  • 原子操作(防止發生併發和錯誤回滾)。