php專案從github自動pull到伺服器
阿新 • • 發佈:2020-12-15
php專案github自動pull到伺服器
專案名:web
一、自動觸發
1、在伺服器新增指令碼檔案:gitpull.sh
#!/bin/sh
cd /www/web
git reset --hard origin/master
git clean -f
git pull 2>&1
git checkout master
# 注:若指令碼檔案路徑不在www使用者組的路徑下,需要在www對應使用者組路徑下新增指令碼檔案
# 檢視使用者組路徑(找到對應使用者組即可):cat /etc/passwd
2、建立指令碼(gitpull.sh
)回撥介面:www.web.com/git-hook
<?php
exec('sh ~/gitpull.sh 2>&1', $a, $b);
//print_r($a); # 若不能正常拉取,可開啟答應檢視錯誤資訊
//echo PHP_EOL;
//print_r($b);
# 注:介面名稱自定義,exec執行指令碼路徑根據實際路徑而定
3、在github專案中添加回調路徑
web > Settings > Webhooks > add webhook
- Payload URL:(填寫回調地址:www.test.com/git-hook)
- Content type:(若不需要記錄git操作資訊可不管)
- Which events would you like to trigger this webhook?(建議選擇:Just the
push
event.) - Active:(預設選擇)
其它:
-
需要www使用者組對指令碼檔案的操作許可權
-
需要www使用者組對web有讀寫許可權
-
.git/FETCH_HEAD也需要給與相應的許可權
-
.git/config檔案中url需要帶上使用者名稱及密碼,否則拉取會報錯
[remote "origin"] url = https://{username}:{password}@github.com/{username}/web.git
-
確認指令碼檔案gitpull.sh檔案格式
vim gitpull.sh :set ff :set ff=unix :wq # 注:若執行命令:set ff左下角顯示fileformat=unix,則說明格式正常,不需要後續操作,直接退出即可
二、主動觸發
1、建立指令碼檔案(同上)
2、在伺服器中新增定時任務,每分鐘執行
注:伺服器相應目錄建立指令碼:touch gitpull.sh