2016-08-07 153 views
0

我有4個服務器,一個用於負載平衡(Nginx反向代理)和3個nodejs(上游服務器)。同時部署到多個服務器

我想從bitbucket部署代碼到這3臺服務器同時,我如何管理它? 我可以在每個這3臺服務器上安裝jenkis並部署,但有沒有更好的解決方案?我可以在負載平衡器服務器上安裝jenkins並從中進行部署嗎?

+0

的Git現在支持推到一個以上的回購,看到類似http://stackoverflow.com/questions/14290113/git-pushing-code-to-two-remotes – DavidN

+0

您可以使用主從在其中推送給主人的設置。主站將啓動3個從站作業(每個服務器上的每個從站)。 – lvthillo

回答

0

你必須寫腳本,它會爲你做。
該腳本可以是任何語言的shell腳本,也可以使用Jenkins爲您完成。

你不需要Jenkins在每臺服務器上,你只需要一個git腳本,它會將它推送到你的服務器,或者你的服務器將從服務器獲取更改。

+0

所以我應該編寫腳本,它會從bitbucket中獲取更改,比運行幾個命令(npm install和e.tc.)並將該腳本放在每個服務器上並手動調用它?我對嗎?我想手動部署(在bitbucket推送更改後不自動) –

+0

是的,或者您也可以與Jenkins一起完成,它由您決定如何執行。 – CodeWizard

0

最好的解決方案是選擇一個主存儲庫,然後在該服務器中安裝一個掛鉤,該掛鉤會自動將所有傳入的內容推送到其他服務器。

$ cat .git/hooks/post-receive 
#!/bin/bash 

IFS=' ' 
while read local_ref local_sha remote_ref remote_sha 
do 

    echo "$remote_ref" | egrep '^refs\/heads\/[A-Z]+-[0-9]+$' >/dev/null && { 
    ref=`echo $remote_ref | sed -e 's/^refs\/heads\///'` 
    echo Forwarding feature branch to other repository: $ref 
    git push -q --force other_repos $ref 
    } 

done