要有可重新編譯的版本,我建議Jenkins使用Docker integration。這允許多個構建被同時處理,所以如果構建需要比預期更長的時間,其他開發人員也可以推送。
由於每個容器都有自己的網絡,因此您可以同時運行任意多個容器,每個容器都有一個自己的節點服務器監聽相同的端口。只要您不需要從容器外部訪問節點服務器(例如從構建服務器本身),那麼您在那裏沒有問題。
對於Postgresql數據庫:你可以在你的容器中產生一個數據庫服務器,這意味着你有很多短命的數據庫服務器。根據您需要導入的測試數據量,這可能不是解決方案。另一種方法是在構建服務器上運行Postgresql服務器,並允許容器訪問它。在每個構建中,您都可以使用模板在Postgresql中創建一個新數據庫。之後你可以銷燬數據庫。
所以這個過程是:
[Developer pushes] -> [git notifies Jenkins] -> [Jenkins creates database] -> [Jenkins runs container] -> [Container builds and tests] -> [Container processes results] -> [Jenkins destroys database]
對於結果proceesing一步,有多種方法可以做到這一點。最簡單的方法(不需要任何額外的軟件)是讓Jenkins自動合併分支。每個開發人員都會爲他的工作推出一個新分支,如果測試成功,Jenkins會將分支合併到主分支中。您可以禁止用戶直接寫入主分支來執行此操作。
另一種方法是將Jenkins集成到你的git託管解決方案中(如果你使用的話)。 GitLab EE supports this這意味着您可以在GitLab中看到每次提交的測試結果。當然,如果你不使用像GitLab/Bitbucket/...這樣的解決方案,那麼這不是一個解決方案。...