簡體   English   中英

NodeJS / Jenkins / GIT和Jenkins Slave作為Web服務器

[英]NodeJS/Jenkins/GIT and Jenkins Slave as Web server

我想為我的一個Web服務器應用程序進行持續集成。 我們使用Postgres作為后端數據庫。 為實現這一目標,我們計划使用NodeJS / Jenkins和GIT。

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

我已經集成了Jenkins和GIT,因此無論何時通知git更改,Jenkins構建都會啟動。

我們可以在同一個Jenkins機器上運行NodeJS Web服務器,還是應該使用從機Windows機器?

請為此建議最佳做法?

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

謝謝。

為了具有可重新構建的構建,我建議使用Jenkins的Docker集成 這允許同時處理多個構建,因此如果構建需要比預期更長的時間,其他開發人員也可以推送。

由於每個容器都有自己的網絡,因此您可以同時運行任意數量的容器,每個容器都有一個自己的節點服務器在同一端口上偵聽。 只要您不需要從容器外部訪問節點服務器(例如從構建服務器本身),就沒有問題。

對於Postgresql數據庫:您可以在容器中生成數據庫服務器,這意味着您有許多短期數據庫服務器。 根據您需要導入的測試數據量,這可能不是解決方案。 另一種方法是在構建服務器上運行Postgresql服務器,並允許容器訪問它。 在每個構建中,您可以在Postgresql中創建一個新數據庫,可能帶有模板。 你可以在之后銷毀數據庫。

所以這個過程是:

[Developer pushes] -> [git notifies Jenkins] -> [Jenkins creates database] -> [Jenkins runs container] -> [Container builds and tests] -> [Container processes results] -> [Jenkins destroys database]

對於結果執行步驟,有多種方法可以執行此操作。 最簡單的方法(不需要任何其他軟件)是讓Jenkins自動合並分支。 每個開發人員都會為他的工作推出一個新分支,如果測試成功,Jenkins會將分支合並到master。 您可以禁止用戶直接寫入主分支以強制執行此操作。

另一種方法是將Jenkins集成到您的git托管解決方案中(如果您使用任何)。 GitLab EE 支持這一點 ,這意味着您可以在GitLab中查看每個提交的測試結果。 當然,如果你不使用像GitLab / Bitbucket / ...這樣的東西,這不是解決方案。

建議使用PM2工具,它具有很多功能。 http://pm2.keymetrics.io/docs/usage/deployment/#force-deployment

這個工具可以在Jenkins和腳本中配置,可以用package.json編寫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM