1. 程式人生 > 實用技巧 >php專案從github自動pull到伺服器

php專案從github自動pull到伺服器

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