GIT伺服器實現web代碼自動部署

來源:互聯網
上載者:User

GIT伺服器實現web代碼自動部署

這裡簡要記錄一下GIT伺服器實現web代碼自動部署的方法。

1、git機制簡要介紹 

git使用的是代碼倉庫,git服務端有倉庫,稱為遠端倉庫,我們clone下來的,本地也有一個倉庫稱為本地倉庫。我們commit的時候是把代碼提交到了本地倉庫,push時是把代碼提交到了遠端倉庫,pull的時候是把代碼從遠端倉庫下載到本地倉庫。

代碼倉庫對代碼的儲存使用了版本指標,每個提交的版本都對應一個HEAD指標,目前的版本指標隨著代碼的提交一直改變。

2、自動部署原理

說說現在代碼的分布情況,開發人員電腦上的本地倉庫,git伺服器上的遠端倉庫,web伺服器上的另一個本地倉庫,我們瀏覽器訪問的就是這裡的代碼。

要實現自動部署,就是要當開發人員從本地倉庫提交代碼到遠端倉庫的時候,自動把代碼部署到web伺服器的本地倉庫,實現開發人員本地倉庫和web伺服器的本地倉庫的同步。

3、實現自動部署

按照上面說的,就是要在開發人員提交的時候,自動觸發指令碼,指令碼去實現web端代碼的部署。

這裡就得講一下git的hook機制,當git伺服器接到各種事件時觸發,這裡使用的hook是post-receive,這個hook在git伺服器受到push請求,並且接受完代碼提交時觸發。

具體代碼體現:

在git遠端倉庫的hooks目錄下建立post-receive檔案:

#!/bin/sh   #author: phpernote  #Blog of phpernote: http://www.phpernote.com   #判斷是不是遠端倉庫  IS_BARE=$(git rev-parse --is-bare-repository)  if [ -z "$IS_BARE" ]; then  echo >&2 "fatal: post-receive: IS_NOT_BARE"  exit 1  fi   unset GIT_DIR  DeployPath="/var/web"  echo "==============================================="  cd $DeployPath  echo "deploying the test web"  #git stash  #git pull origin master  git fetch --all  git reset --hard origin/master  time=`date`  echo "web server pull at webserver at time: $time."  echo "================================================"

儲存後賦予可執行許可權:

chmod +x hooks /post-receive

這樣在開發人員提交代碼的時候,就會自動部署。

在這裡補充說明下: 因為我建立git倉庫時用的是git使用者 但是在自動部署時站台伺服器採用的是nginx伺服器的 git使用者屬於git組 nginx屬於nginx組 所以在這裡就是把post-receive設定成nginx組 如果不設定的話在網站目錄下是沒有辦法更新檔案的(會提示沒有許可權操作)

自動部署的時候,我這裡使用的是git fetch,也可以使用git pull實現,這裡兩個的區別主要是pull事先fetch後然後再用merge,來合并本地和遠端的代碼。但是有個問題,如果開發人員在提交過程出現失誤,使用git reset複位後,現在遠端的代碼版本低於web端的代碼版本,再使用pull的時候就不能實現和開發人員本地的代碼的同步。所以這裡使用fetch後,在強制使用reset實現web端的代碼版本指標和git服務端的一致。由於沒有使用merge,所以以後web端的代碼就不能在伺服器上直接更改了,對web端代碼的各種改變都應該使用開發人員電腦進行代碼提交,不然會報錯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.