gitlab通过webhook.php自动部署标签
2020-08-05 本文已影响0人
小牛_6666
//git webhook 自动部署脚本
$savePath = "/home/house/wxorder/";
$requestBody = file_get_contents("php://input");
if (empty($requestBody)) {
die('send fail');
}
//解析Git服务器通知过来的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('标签名不合法');
}
$tag = $match[0];
if(!$content['checkout_sha']){
shell_exec("cd {$savePath} && git tag -d {$tag}");
die('标签删除');
}
//拉取代码
shell_exec("cd {$savePath} && git pull");
//切换标签
shell_exec("cd {$savePath} && git checkout {$tag}");
//安装扩展 可选
shell_exec("cd {$savePath} && composer install");
//重启队列 可选
shell_exec("cd {$savePath} && php think queue:restart");
//校验状态
$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处做邮件或钉钉通知