3

我有一組構成分佈式系統的全狀態服務。每個人都有一個Docker文件,可以構建它並運行其單元測試。我需要檢查他們如何以分佈式的方式與彼此進行交互。要運行測試,我需要:Jenkins或其他分佈式系統的開源CI是否存在?

  • 能夠在不同的節點上同時運行多個Docker文件,這將被視爲單個測試運行。
  • 能夠在每個Docker文件的命令執行順序中設置障礙。換句話說,假設所有Docker文件同時運行,我需要確保所有文件在啓動階段Y之前已完成階段X
  • 能夠停止任何節點的故障。

是否有Jenkins插件/擴展這樣的操作,或者是否有任何其他系統或方法可以解決此類問題?

回答

0

CloudBees的(後面詹金斯隊)投入了大量的精力在泊塢支持詹金斯2:https://jenkins.io/doc/pipeline/steps/docker-workflow/

在我看來仍然是一個有點不成熟,但它是在良好的方向發展的一步。

我更喜歡gitlab-ci(https://about.gitlab.com/gitlab-ci/)。這是非常容易使用和穩定的岩石堅實。不幸的是,對於我來說,嚴格的版本控制系統集成(如果你想使用Gitlab-CI,你必須把你的代碼放到GitLab中)是一個展示瓶塞(必須在Github上保留我的代碼)。

你也可以考慮一些SaaS產品,即: https://travis-ci.org/ https://buddybuild.com/

1

使用gitlab和gitlab-CI與自動縮放,

這是支持開箱即用,見autoscale runners Gitlab-CI它採用Docker Machine與司機根據需要自動部署資源,甚至在數字海洋上。

你描述您的構建和測試在.gitlab-ci.yml:

  • 定義不同階段(建立,測試1 ....)
  • 所有建立/每級測試在進入下一個階段之前必須完成
  • 並且每個階段都是平行的,當然取決於可用資源。

看到我的簡單碼頭管道here

備註1:當保密是一個問題,你可以

  • 一個。在gitlab上創建一個私有存儲庫
  • b。主機gitlab自己的服務器*

備註2:當代碼託管在其他地方(例如,github),你可以把它推送給每一次提交的gitlab來啓動構建管道。

如果你需要一個專業的設置這樣一個項目,你可以和我聯繫,但是這將是這個問題的範圍/回答

0

你總是可以寫一個bash或PowerShell腳本是詹金斯可以執行此操作。

0

開始移動你的集成測試你的泊塢窗構建步驟之外。單元測試仍然可以在那裏運行,但我更願意在容器外單獨執行這些測試,以最大限度地減少構建映像內的測試代碼的數量。

對於多容器集成測試,他們需要在docker run之後運行它們,而不是docker build。這允許您爲每個容器賦予dns連接的名稱,並控制每個測試運行的順序。您甚至可以將每個測試存儲爲docker-compose.yml並處理結果。

從圖像生成分開測試,您可以添加測試,在詹金斯管道一步,讓您同時運行部件和繼續之前等待每個階段完成的能力。