git自动化部署

初始化

install git -y  //安装git
yum install expect -y //免询问扩展
cat /etc/passwd | grep ^www: | awk -F : '{print $6}'//查询www所在目录
git config --global user.name "git用户名"
git config --global user.email "git用户名"
sudo -u www ssh-keygen -t rsa -f /home/www/.ssh/id_rsa -N ''//生成公钥
chown -R www:www /home/www/.ssh//修改文件所有者

git相关修改

//cd到项目目录只克隆.git 文件
sudo -u www git clone --no-checkout 项目地址
mv -f "项目目录中克隆的项目目录/.git" 项目目录 //移动
rm -rf "项目目录中克隆的项目目录" //删除
sudo -u www git reset --hard origin/master //切换成master分支
chown -R www:www 项目目录  //更换项目所有者

hook.php

<?php
error_reporting(1);
$data=file_get_contents("php://input");
$path="项目路径";
$token="4e31de2afe778a57e846189b71cfd731a9f1f94c";
$content=json_decode($data,true);
if($content['password']==$token){
    if($content['ref']=="refs/heads/master" && $content['total_commits_count']>0){
        $res=shell_exec("cd {$path} && git reset --hard origin/master && git pull && git checkout -f master && chown -R www:www {$path}");
        $res_log="-----------".PHP_EOL;
        $res_log.=$content['user_name']."(用户信息:".json_encode($content['user']).")"."在".date('Y-m-d H:i:s');
        $res_log.="向".$content['project']['name']."(".$content['project']['full_name'].")项目push了".$content['total_commits_count']."条记录".PHP_EOL;
        if(!is_dir('log')){
            if(!file_exists("log")){
                mkdir("log");
            }
        }
        $file = "./log/hook";
        if(!is_dir($file)){
            if(!file_exists($file)){
                mkdir($file);
            }
        }
        $file = $file."/hook_".date('Y-m-d').".log";
        $open=fopen($file,"a" );
        fwrite($open,$res_log);
        fclose($open);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值