LoginSignup
2
0

MinecraftサーバーとGithubリポジトリの同期(CI/CD)

Last updated at Posted at 2023-12-19

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との組み合わせが最強です。

まとめ

チーム開発をする上でめちゃくちゃ便利なので皆さんも使ってみてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0