GitHubのWebhookを受け取り、それをもとにローカルのgitディレクトリを更新するための、とても簡単(もとい、手抜き)なスクリプトです。
レンタルサーバ上のWebサイトを、GitHubのリポジトリで管理している場合などに使います。 CGIとして配置しておけば、GitHubにプッシュするだけで自動更新されます。Pure-perlなCGIですので、レンタルサーバ上で動作する...でしょう。
- perl 5.x
- CGI (恐らく、ほとんどのレンタルサーバに導入済み)
- JSON::PP (Pure perlなJSONライブラリです。)
- git command
あくまで確認一例であり保証するものではありません。 契約プランなどの規約に違反していないか、ご自身で確認し、自己責任でご利用ください。
- ○○○のレンタルサーバ スタンダード
- gitコマンドをシェルからインストール。
- 目的のプロジェクトを公開ディレクトリにgit clone。(公開リポジトリなら、Read-onlyなgitスキームURLからcloneしても十分かと思います。)
- CGIから書き換えできるようにディレクトリのパーミッションを設定。
- 本スクリプトを適当な公開ディレクトリ /home/xxx/www/yyy/ へ設置。(git cloneしたディレクトリ下でも大丈夫です。)
- JSON::PP モジュールを /home/xxx/www/yyy/lib/ に保存。もしくはCPANシェルでインストール。
- 本スクリプト内のperlパスを編集(=> #!/usr/local/bin/perl)。 さらに、変数を編集:
- $GIT_PATH = gitコマンドのフルパス
- $TARGET_DIR = 手順2でgit cloneした公開ディレクトリ
- 本スクリプトのパーミッションを755に設定。
- GitHub上のご自分のプロジェクトのWebhook設定画面を開き、以下のようにWebhookを追加。
- Payload URL: http://example.com/github_webhook_updater.cgi (本スクリプトを設置したURL)
- Content type: application/x-www-form-urlencoded
- Secret: (空)
- Which events would you like to trigger this webhook?: Just the push event.
- Test hookするか、masterにプッシュしてうまくいけば完了。