//git webhook 自動(dòng)部署腳本
$savePath = "/home/house/wxorder/";
$requestBody = file_get_contents("php://input");
if (empty($requestBody)) {
die('send fail');
}
//解析Git服務(wù)器通知過(guò)來(lái)的JSON信息
$content = json_decode($requestBody, true);
if ($content['object_kind'] == 'tag_push') {
preg_match("([Vv]?\d+\.\d+\.\d+)", $content['ref'], $match);
if (empty($match)) {
die('標(biāo)簽名不合法');
}
$tag = $match[0];
if(!$content['checkout_sha']){
shell_exec("cd {$savePath} && git tag -d {$tag}");
die('標(biāo)簽刪除');
}
//拉取代碼
shell_exec("cd {$savePath} && git pull");
//切換標(biāo)簽
shell_exec("cd {$savePath} && git checkout {$tag}");
//安裝擴(kuò)展 可選
shell_exec("cd {$savePath} && composer install");
//重啟隊(duì)列 可選
shell_exec("cd {$savePath} && php think queue:restart");
//校驗(yàn)狀態(tài)
$status=shell_exec("cd {$savePath} && git status");
$now_branch = preg_match("([Vv]?\d+\.\d+\.\d+)", $status, $branch);
if(empty($branch) || $branch[0] != $tag){
die('部署成功');
}else{
die('部署失敗');
}
}
可以在die處做郵件或釘釘通知