通過Git Hooks實現(xiàn)自動部署

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

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

git initgit init --bare 的區(qū)別

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

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

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

root@iZbp1cc04oqq: mkdir -p /git/laravle-vue.git
root@iZbp1cc04oqq: cd /git/laravle-vue.git
root@iZbp1cc04oqq: git init --bare
網(wǎng)站的根目錄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

該腳本添加可執(zhí)行權(quán)限

root@iZbp1cc04oqq: chmod +x post-receive

為本地倉庫添加remote源

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

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

如圖


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容