2

假設我想將mu當前驗收測試CI環境移動到碼頭工人,所以我可以利用性能改進,並快速設置多個克隆進行慢速驗收測試。我將如何去創建碼頭環境的CI與大量的服務

我會有很多服務。 簡單的將是postgres,mongodb,reddis等,這些很少更新。

但是,如果我自己的產品有很多服務,我該怎麼辦? - 超過10-20項服務,都需要一起進行測試。用docker處理這個問題甚至是可行的,也就是說,CI如何有效地自動控制這麼多容器,並使它們克隆並行運行驗收測試。

另外,我將如何自動更新CI的容器容易? CI是否需要在每次運行開始時用每個服務分支的HEAD重建每個容器?或者CI會在每項服務上運行git pull和一些update/migrate command

在VM-s中它很容易控制這些服務,但是我想確信docker對它也是好的或者更好的。

回答

2

我和你一樣處於同樣的位置,並且最近得到了所有符合我的喜好的工作。

首先,儘管docker通常用於運行單個進程,但對於測試,我發現它更適合docker容器運行所需的所有服務。這條路線有一些重複,但您不必擔心共享服務,如Mongo或PostgreSQL。這可以通過使用像監督員這樣的事情來完成:http://docs.docker.com/articles/using_supervisord/

這個想法是配置主管在容器內啓動所有必要的服務,因此他們完全與其他容器隔離。在我的環境中,我有mongo,xvfb,chrome和firefox全部運行在一個容器中。所以真的,你還在運行一個進程(主管),但它啓動了許多其他進程。

至於將存儲庫添加到您的容器,我只需讓主機簽出代碼,然後在運行docker時,我使用-v標誌將回購添加到容器。這樣你就不需要每次重建容器。我每晚都用最新的代碼構建容器,以便能夠在測試時添加所有必需的寶石,以便更快地進行「寶石安裝」。

最後,我有一個腳本作爲容器的入口點,允許我通過我想要運行的測試。

然後Jenkins運行docker命令並通過測試運行。這些可以並行,按順序或任何其他方式完成。我目前正在考慮讓這些測試在AWS的自動擴展組中的從屬Jenkins實例上運行。

希望有所幫助。

2

drone是一個泊塢窗基於開源CI以及在線服務:https://drone.io

一般運行建立和搬運工容器測試,卸下建成後所有的容器。您只需提供一個名爲.drone.yml的文件,並使用.travis.yml等類似的配置來配置您的版本。

它將管理您的服務,如數據庫,緩存作爲鏈接的容器。

對於您的構建環境,您可以使用退出的泊塢窗圖像作爲依賴關係的模板。

到目前爲止,它支持github.com和gitlab。對於您自己的CI系統,您只能使用無人機CLI或其Web界面。

+0

謝謝你。雖然我很感激你向我介紹了這個有趣的技術,但它確實回答了這個問題。 – user1047833

1

我推薦使用Jenkins docker plugin,儘管它是新的,但它開始揭示jenkins中使用的docker的功能,配置寫得很好。 (讓我知道如果你有問題)

我計劃使用它的戰略。

  • 創建不同應用圖片服務一樣的Postgres,MongoDB的,reddis和這樣的不同的服務,因爲它是罕見的更新,他們將在全球範圍內預先「雲」模板配置,每臺虛擬機都會有標籤指示服務
  • 在每種詹金斯作業,各圖像將被選擇爲從節點(使用該標籤作爲名稱)

當作業被觸發時,它會自動啓動搬運工容器作爲從以秒

它應該工作 爲你。

順便說一句:正如我回答(2014.5)的時候,插件還不夠成熟,但它是正確的方向。

+0

謝謝,我會看看。這可能正是我在尋找的東西,如果它允許我在一項工作中輕鬆地創建大量的從屬節點,並且稍後將它們剝離。我可能想爲每個構建創建postgres,mongo等,所以我可以並行運行測試。 – user1047833

相關問題