レンタルサーバーに自動デプロイする

Git

Teens TownむさしののHPはレンタルサーバーで稼働しています。(GMOペパボさんの「Heteml」です。)

HetemlにはGitが標準で導入されており、ユーザーが適切に設定を行えばGithubからの自動デプロイも可能です。

手順

1.サーバー側設定

Githubでは、pushなどのアクション時に任意のURLへHTTP通信でwebhookを送信できます。まずはその受け口を作成しましょう。同じサーバー内であればどのようなドメイン・URLでも構いません。

今回は例として https://deploy.example.com とします。

次に、上で設定したドメインのドキュメントルート(もしくは適切な位置)に以下のようなファイルを設置します。

<?php
$github_header = $_SERVER['HTTP_X_GITHUB_DELIVERY'];

// should request from Github
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !$github_header || preg_match("/[0-9a-f\-]+/", $github_header) === 0) {
    echo json_encode(["error" => 'should request from Github']);
    exit();
}

$body_arr = json_decode(file_get_contents('php://input'), true);

$pull_path = "";
switch ($body_arr["repository"]["full_name"]) {
    case 'YOUR_REPOSITORY_NAME':
        $pull_path = "/path/to/dir";
        break;
    
    default:
        echo json_encode(["error" => 'full_name of repository is unavailable.']);
        exit();
}

exec('cd ' . $pull_path . ' && git pull', $result);

// お好みでメール送信など

echo json_encode($result);

最後にSSHキーを生成します。(忘れずに!)

サーバーにSSHでログイン後、ssh-keygen -t rsa でキーを生成します。その後、生成されたキーの内、公開鍵( ~/Username/.ssh/id_rsa.pub のほう)の内容を手元にコピーしておきます。

2.Github設定

リポジトリの設定(Settingタブ)内、【Webhook】ページで新規登録を行います。

↑こんな感じ。

保存した後、続いてSSHキーを追加します。【Deploy keys】ページで「Add Deploy key」を押して、追加します。

↑こんな感じ。

保存したら設定は完了です。

タイトルとURLをコピーしました