Hooks實現自動化部署

以前嘗試部署代碼到服務器的方式有用到Github Hook或者ftp,但使用起來都有各自的缺陷,然后就發現了git hooks這個方法,查了一些資料再自己嘗試過后,覺得還不錯,記錄下簡單流程。

在服務器初始化一個遠程git倉庫

git initgit init --bare 的區別

初始化出來的倉庫是不一樣的,前者初始化的是一個普通的倉庫,其中 .git 文件夾是隱藏的,并且能看見該倉庫下所有的源碼。而后者初始化出來的倉庫中的文件,就是 .git 中的文件夾,但不能像前者那樣直接瀏覽或修改倉庫中的代碼。

使用 git init --bare 初始化一個遠程倉庫。

該倉庫是用于項目部署的。在我們本地開發完成后,將項目push至該倉庫后,將自動部署網站。

root@iZbp1cc04oqq: mkdir -p /git/laravle-vue.git
root@iZbp1cc04oqq: cd /git/laravle-vue.git
root@iZbp1cc04oqq: git init --bare

網站的根目錄git clone服務器倉庫
root@iZbp1cc04oqq: cd /var/www/html
root@iZbp1cc04oqq: git init
root@iZbp1cc04oqq: git clone /git/laravel-vue.git
root@iZbp1cc04oqq: chmod -R 777 ../laravel-vue

為遠程倉庫設置一個 hook
root@iZbp1cc04oqq: cd /git/laravel-vue.git/hooks
root@iZbp1cc04oqq: vim post-receive 

vim編輯post-receive


#!/bin/sh
unset GIT_DIR
NowPath=`pwd`
DeployPath="/var/www/html/laravel-vue"
cd $DeployPath
git add . -A && git stash
git pull origin master
composer install --ignore-platform-reqs
#下面兩步是我同步vue代碼
#npm install #安裝npm包
#npm run production

cd $NowPath
echo "同步完成"
exit 0

該腳本添加可執行權限

root@iZbp1cc04oqq: chmod +x post-receive

為本地倉庫添加remote源

這個客戶端本地倉庫,即開發的機子的本地倉庫,添加remote源,以后往這個remote push代碼時,就會自動觸發上面的腳本。

$   git remote add deploy root@ip:/git/laravel-vue.git   //服務器上我用的root用戶
$   git push deploy master

如圖

image
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容