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处做邮件或钉钉通知

上一篇下一篇

猜你喜欢

热点阅读