Automation
Hudson 部署特定的 git 修訂版
我正在使用 hudson 將我的 Rails 應用程序自動部署到 heroku。在我的主要建構工作中,我從 Git 儲存庫(在同一台機器上使用 gitosis 託管)拉取主分支,其中包含以下內容:
URL of repository: /home/git/repositories/my_app.git Name of repository: origin Refspec: +refs/heads/master:refs/remotes/origin/master Branches to build: master
然後,假設所有測試都通過了,我想開始一個新的建構,即部署到 Heroku。
但是,我無法弄清楚如何讓該部署建構檢查該建構使用的特定修訂版。我知道有一個參數化的觸發器外掛可以讓我傳遞這個修訂號,但我不知道如何告訴 hudson 在部署建構中籤出這個特定的修訂。
我很確定這與我對 git 的有限知識有關,但是在 hudson git config 的哪裡可以選擇檢查特定的修訂版?
否則,我可能會在建構發生時發生許多送出,並且當它啟動部署建構時,該部署建構只會檢查分支的 HEAD,這可能與觸發的推送程式碼不同這個建構。
我不完全明白為什麼我在 Hudson 有一個 refspec,然後還要指定一個要建構的分支,我認為這是同一回事。refspec 可以以某種方式指定修訂號嗎?如果它是通過參數化觸發器外掛傳遞的,它將如何被引用?
(我從未使用過該外掛,但其他人推薦它作為將 vars 傳遞給新版本的一種方式,如果有另一種方式我全神貫注)
我認為您可以通過在 hudson 中設置步驟來執行測試然後推送,如果您的測試在失敗時返回非零退出,您可以更輕鬆地做到這一點。這是可行的,因為我認為一旦出現故障(非零退出狀態),hudson 將停止執行建構步驟鏈。
有關 git 的解釋,請參見此處。
順便說一句,您是將可部署的工件儲存在 git 中還是在部署之前重建您的應用程序?否則,讓您的第一個作業將工件推送到儲存庫中(可能與原始碼不同,我們在文件系統上有一個指定的空間),第二個作業將其從儲存庫中提取並部署。