2015-10-17 87 views
0

我想設置下面的工作流程。Vagrant for development and CI

  • 每個項目都有版本控制下的Vagrant文​​件和爲每個配置更改構建虛擬機的Jenkins作業。該虛擬機旨在用於持續集成和開發。
  • 開發人員加入一個項目。他從Jenkins那裏抓取了相應的虛擬機,這些虛擬機都是安裝和配置好的。
  • 他運行他下載的虛擬機。他的所有偏好例如。 .gitconfig .vimrc等已經在該虛擬機的主目錄中,即,他使用虛擬機進行編碼,而不僅僅是運行和測試。
  • 當詹金斯下的項目的構建工作檢測庫的變化,它抓住了虛擬機從同一作業中使用的開發製造品和運行構建

這將允許新的開發者做好準備在完全相同的環境中,持續集成服務器可以在任何地點使用和部署代碼,這要歸功於虛擬機。

我想我可能會嘗試這與流浪和廚師,但我不知道他們真的是要這樣使用。有什麼想法嗎?

+0

我不明白你爲什麼需要從開發人員啓動虛擬機?我的意思是所有虛擬機應該是相同的 - 有一個詹金斯流浪者插件,但你似乎添加了一些更多的邏輯比我需要從我的角度來看 –

+0

因此,每個開發人員都有自己的副本,具有相同的確切環境。例如,他們可以離線工作。 – Deimos

+0

明確,但所有的虛擬機都是一樣的,它使用流浪的點,你從同一個盒子開始,並應用相同的供應,所以詹金斯會從同一個流浪文件啓動一個虛擬機,他們將全部相同 –

回答

1

每個項目都有版本控制下的流浪文件和Jenkins 作業,該作業爲每個配置更改構建虛擬機。 此虛擬機旨在用於連續的 集成和開發。

Vagrantfile定義了什麼是您的應用程序環境應該看起來像什麼。 除配備(Chef,Puppet,Ansible或Shell ...)外,您還將爲每個正在處理項目的團隊成員創建完全相同的VM。 然後您不需要創建虛擬機,並使用來自CI或開發人員的同一個虛擬機實例。每個人都有自己的環境。

開發人員加入一個項目。他從詹金斯那裏抓取了相應的虛擬 機器,這些機器都是安裝和配置好的。

每個開發者都會從同一個Vagrantfile啓動在筆記本電腦上運行的虛擬機 - 不需要共享虛擬機。

當詹金斯下的項目的構建工作檢測到 庫的變化,它抓住了虛擬機從同一 作業中使用的開發製造品和運行構建

您可以使用Jenkins vagrant-plugin從與您的項目相對應的相同Vagrant文​​件中啓動VM。您不會從現有VM運行作業。

注意:如果您擔心配置需要太多時間,並且您爲什麼說要使用現有VM,則可以創建一個新盒子,並安裝所有依賴項並重新打包以將其用作新基準盒

+0

謝謝。是的,我不是很清楚:當我說「虛擬機」時,我的意思是「任何虛擬機的克隆」,而不是「同一個實例」。重要的是CI和發展的環境是相同的。從Jenkins獲取虛擬機的想法是,它可以幫助開發人員避免安裝Vagrant。他/她只是獲取虛擬磁盤並運行它:不需要重新生成虛擬機。如果Vagrant文​​件發生變化,Jenkins可以發送電子郵件通知開發人員更新他們的虛擬機。我不明白你的最後一句話:我如何重新包裝? – Deimos

+0

坦率地說,我認爲如果你打算使用虛擬機,流浪漢對於開發人員來說可以加以管理。共享文件夾,ssh,重新加載。 「重要的是CI和開發的環境是相同的。」yes Vagrantfile + provisioning將確保這一點。你可以閱讀更多[這裏](https://docs.vagrantup.com/v2/virtualbox/boxes.html)關於流浪盒和(重新)包裝 –