🚗

GitHubから自動で自宅サーバーにデプロイする

2024/11/26に公開

最初に

Discord BotのLemonBotのソースコードを、GitHubで管理するようになったが、自分でpushしていろいろする気にはなれなかった。なぜならめんどくさかったから。

なので、pushしたあとは自動で自宅サーバーにデプロイされるようにしたかった。結構簡単に自動化することができたので、記事に残しておきます。

注意
結構個人的な考えが含まれてます。

前提

  • サーバーはubuntu server
  • botは、systemdに登録されて動いている

どうやって自動化するか

  1. webhookでデプロイする
  2. Github Actionsのセルフホストランナーを動かす

今回は、両方試したので、両方書いておきます。

Webhookでデプロイする

Githubには、リポジトリに動きがあったときに、webhookで任意のサーバーに通知する機能がついています。それを利用します。

主な動き

  1. githubから、webhookが送信された
  2. git pullする
  3. sudo systemctl restart lemonbot.serviceする

実装方法
Pythonで、webサーバーを作りました。
ソースはGithubに置いておきました。
https://github.com/techfish-11/webhook-deployserver
37行目のrepo_dirと、41行目のsubprocess.runに続くコマンドを、自分の環境に置き換えてください。また、.envに、自分で決めたシークレットを書いておいてください。
これを、実行すると、5000番ポートでwebhookを待ち受けます。
Nginxなどリバースプロキシを使ったりして、443→5000になるようにしてください。
あとは、githubに登録するだけです。
よくわからない場合は、こちらをご覧ください。
https://docs.github.com/ja/

Github ActionsのセルフホストRunnerを使う

最終的にこっちにしました。
理由:面白そうだから
はい。面白そうだからでした。

やり方

  1. リポジトリ→ setting → Actions → Runners
  2. New self-hosted runnerを選択
  3. 画面に従ってサーバーにRunnerをインストールし、ランナーを実行する。(Systemdに登録するのが個人的におすすめ。
  4. https://github.com/techfish-11/lemonbot/blob/main/.github/workflows/deploy.yml を見ながら、Workflowを作る
  5. Actionを起こす
  6. デプロイできれば成功です

はい。面白いです。Github Actionsが自宅サーバーで動いているなんて面白すぎます。
やはり自宅サーバーは面白い。

最後に

やはり自宅サーバーは面白いですね。
ちなみに、多分VPSとかでも使えると思います。
では。

追記

Dockerでコンテナ化したほうが面白かったかもなぁ...

Discussion