🚗
GitHubから自動で自宅サーバーにデプロイする
最初に
Discord BotのLemonBotのソースコードを、GitHubで管理するようになったが、自分でpushしていろいろする気にはなれなかった。なぜならめんどくさかったから。
なので、pushしたあとは自動で自宅サーバーにデプロイされるようにしたかった。結構簡単に自動化することができたので、記事に残しておきます。
注意
結構個人的な考えが含まれてます。
前提
- サーバーはubuntu server
- botは、systemdに登録されて動いている
どうやって自動化するか
- webhookでデプロイする
- Github Actionsのセルフホストランナーを動かす
今回は、両方試したので、両方書いておきます。
Webhookでデプロイする
Githubには、リポジトリに動きがあったときに、webhookで任意のサーバーに通知する機能がついています。それを利用します。
主な動き
- githubから、webhookが送信された
- git pullする
- sudo systemctl restart lemonbot.serviceする
実装方法
Pythonで、webサーバーを作りました。
ソースはGithubに置いておきました。
37行目のrepo_dirと、41行目のsubprocess.runに続くコマンドを、自分の環境に置き換えてください。また、.envに、自分で決めたシークレットを書いておいてください。
これを、実行すると、5000番ポートでwebhookを待ち受けます。
Nginxなどリバースプロキシを使ったりして、443→5000になるようにしてください。
あとは、githubに登録するだけです。
よくわからない場合は、こちらをご覧ください。
Github ActionsのセルフホストRunnerを使う
最終的にこっちにしました。
理由:面白そうだから
はい。面白そうだからでした。
やり方
- リポジトリ→ setting → Actions → Runners
- New self-hosted runnerを選択
- 画面に従ってサーバーにRunnerをインストールし、ランナーを実行する。(Systemdに登録するのが個人的におすすめ。
- https://github.com/techfish-11/lemonbot/blob/main/.github/workflows/deploy.yml を見ながら、Workflowを作る
- Actionを起こす
- デプロイできれば成功です
はい。面白いです。Github Actionsが自宅サーバーで動いているなんて面白すぎます。
やはり自宅サーバーは面白い。
最後に
やはり自宅サーバーは面白いですね。
ちなみに、多分VPSとかでも使えると思います。
では。
追記
Dockerでコンテナ化したほうが面白かったかもなぁ...
Discussion