Minecraft Command Advent Calendar 2023 シリーズ3 19日目の記事です。
はじめに
データパックを複数人で開発している際、開発用のサーバーのデータパックを手動で更新した経験はありませんか?
それ、自動化できます。
サーバーはLinuxを想定しています。
Windowsでの動作保証はありません。
できること
- サーバーのデータパックを常に最新に保つ
- データパックの構文チェック
- サーバー内への更新通知
仕組み
Githubには様々なイベントをトリガーとしてWebhook
を送信する機能があります。
リポジトリにPush
↓
サーバーにWebhook送信
↓
サーバーでgit pullを実行
利用するコード / ライブラリ
Webhookを受け取るサーバー
以前作って実際に使っているものです ※必須
Github Actionsでデータパックの検証を行う場合に使います ※オプション
サーバーでデータパックの検証を行う場合に使います ※オプション
手順
1. Python3.10以上をインストール
2. 以下のリポジトリをクローン
3. pip install -r requirements.txt
で必要なパッケージのインストール
4. config.py
の編集
5. config.py
で設定したポートを開放
6. GitHubで対象のリポジトリを開き
Settings > Webhooks > Add webhookでwebhookを追加し
Payload URLにhttp://サーバーアドレス/
Content typeをapplication/json
イベントをJust the push event.
に設定する
7. python main.py
でサーバーを起動
Webhookを受け取るポートについて
ポート開放が必要ですが、できない環境の場合は以下のツールがおススメです。
難易度は★の数が多いほど高くなります。
ngrok
難易度 ★
安定性 ★★★
対応プロトコル HTTP HTTPS TCP
一番簡単です。
起動のたびにポート番号が変わるのが難点です。
cloudflared
難易度 ★★★
安定性 ★★★★
対応プロトコル HTTP HTTPS
ドメインを持っていると使いやすいです。
frp
難易度 ★★★★
安定性 ★★ ~ ★★★★★
対応プロトコル HTTP HTTPS TCP UDP
VPSやポート開放できるマシンが別途必要です。
安いVPSとの組み合わせが最強です。
まとめ
チーム開発をする上でめちゃくちゃ便利なので皆さんも使ってみてください。