2014-10-08 44 views

回答

6

我們有一個工作系統可以自動執行此操作;我無法分享代碼,但我可以總結一下。

  1. 我們維持git的項目,我們的deployables在一個單獨的混帳回購協議(每詹金斯的工作之一,例如project-devproject-qa等)。
  2. 我們將我們的依存關係列表維護在cpanfile中,並使用carton install使其保持最新狀態。
  3. 創建項目後,每當依賴關係發生變化時,我們提交cpanfile.snapshot
  4. 詹金斯的工作檢查了源代碼回購並運行carton install --deployment(實際上它在每個回購中運行一個腳本,加上該項目的任何其他必要的構建任務)。
  5. 測試等運行。
  6. 如果這是第一個jenkins構建,它會將整個樹(包括由紙箱創建的local目錄,但不包括.git)複製到一個新目錄git init,創建一個新的提交併將其推送到部署回購。
  7. 否則,它會檢查出部署庫中最後一個成功構建的新目錄,rsync s構建樹的內容(不包括.git)到部署樹上,並提交併推送爲新的建立。

在所有情況下,構建都會作爲以內部版本號命名的分支推送到部署回購。然後,部署工具可以向jenkins詢問成功構建的列表,並通過讓服務器在部署回購結算中執行git fetch ; git reset --hard origin/$BUILDNUMBER來部署構建。

+0

感謝你的回答,這絕對是我們需要採取的方向。 – NickJHoran 2014-10-09 08:45:07