Skip to content

自动部署

我们将代码放到GitHub中,同时我们有一台运行网站代码的服务器,我们将代码推送到GitHub中,我们希望我们的服务器自动的从GitHub拉取最新的代码,这就需要Git的自动部署

我们向GitHub推送代码时,会自动的向GitHub触发一个钩子HookGitHub就会请求一个外部服务器的文件,通过这个文件来执行git pull将代码拉取到服务器中,从而使服务器得到了最新的代码

  • 配置Hook

    点击项目中的Setting-->Webhooks-->在Payliad URL中填写请求的外部服务器地址-->在Secret中填写密钥(后续需要放到服务器文件中)-->点击创建钩子

  • 编写服务器文件

    php
    <?php
    $secret = "";  // GitHub中配置Hook的密钥
    $path = "";  // 项目地址
    $signature = $_SERVER['HTTP_X_HUB_SIGNATURE'];
    if($signature) {
        $hash = "shal=".hash_hmac('shal', file_get_contents("
        	php://input"), $secret);
        if(strcmp($signature, $hash) == 0){
            echo shell_exec("cd {$path} && /user/bin/git reset --hard origin/master && /usr/bin/git clean -f && /usr/bin/git pull 2>&1");
            exit();
        }
    }
    http_response_code(404);
    ?>
  • 在服务器软件管理中将函数shell_exec从禁用中删除,使这个函数不禁用

Released under the MIT License.