前言
在我們使用Git工具管理代碼時,本地修改或添加的代碼文件需要保存到Git遠程倉庫,而我們的項目在服務器上進行部署的時候,需要手動把 Git 倉庫的項目文件拖拽到服務器,這樣非常麻煩,本文就介紹到怎麼利用 Git + WebHooks 實現服務器的代碼自動部署
一丶初始化代碼倉庫
1、在碼雲建立自己的代碼倉庫
2.將碼雲建立好的代碼倉庫git clone
到服務器
二、配置密鑰
1.生成密鑰
$
ssh-keygen -t rsa
2.進入腳本目錄並查看密鑰
$
cd ~/.ssh
$cat id_rsa.pub
3.碼雲添加部署公鑰
三丶設置WebHooks
注意:設置WebHooks的時候密鑰和項目名一定要一致!!!
1.查看寶塔 WebHooks 密鑰
2.碼雲添加 WebHooks 回調URL
3.編輯 WebHooks 回調 Shell 腳本
代碼如下:
#!/bin/bash
echo ""
#輸出當前時間
date --date='0 days ago' " %Y-%m-%d %H:%M:%S"
echo "Start"
#判斷寶塔WebHook參數是否存在
if [ ! -n "$1" ];
then
echo "param參數錯誤"
echo "End"
exit
fi
#git項目路徑
gitPath="/www/wwwroot/$1"
#git 網址
gitHttp="https://gitee.com/Jhym2007/$1.git"
echo "Web站點路徑:$gitPath"
#判斷項目路徑是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判斷是否存在git目錄
if [ ! -d ".git" ]; then
echo "在該目錄下克隆 git"
sudo git clone $gitHttp $1
sudo mv $1/.git .
sudo rm -rf $1
fi
echo "拉取最新的項目文件"
sudo git reset --hard origin/master
sudo git pull
echo "設置目錄權限"
sudo chown -R www:www $gitPath
echo "End"
exit
else
echo "該項目路徑不存在"
echo "新建項目目錄"
mkdir $gitPath
cd $gitPath
#判斷是否存在git目錄
if [ ! -d ".git" ]; then
echo "在該目錄下克隆 git"
sudo git clone $gitHttp $1
sudo mv $1/.git .
sudo rm -rf $1
fi
echo "拉取最新的項目文件"
sudo git reset --hard origin/master
sudo git pull
echo "設置目錄權限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
四丶測試是否成功自動部署
1. WebHooks 測試Shell腳本是否正常運行
1.1.碼雲 WebHooks 點擊測試按鈕
1.2.寶塔查看 WebHooks 日誌
2. 提交項目測試是否會自動部署
2.1.本地git clone
代碼倉庫
2.2.提交測試文件
2.3.查看碼雲倉庫與服務器倉庫