2016-12-16 56 views
4

我想爲我的一個Web服務器應用程序執行持續集成。 我們使用Postgres作爲後端數據庫。爲了實現這一點,我們計劃使用NodeJS/Jenkins和GIT。NodeJS/Jenkins/GIT和Jenkins從站作爲Web服務器

一旦任何開發人員檢入其更改,構建必須立即啓動並進行一些基本測試。 這涉及啓動NodeJS服務器並執行一些測試用例。

我已經集成了Jenkins和GIT,因此每當git變更被通知Jenkins構建開始時。

我們可以在同一臺Jenkins機器上運行NodeJS網絡服務器,還是應該使用從機Windows機器進行操作?

請爲此建議最佳實踐?

假設服務器機器將安裝Postgres DB並安裝NPM。

謝謝。

回答

3

要有可重新編譯的版本,我建議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/...這樣的解決方案,那麼這不是一個解決方案。...