とあるゲームのサーバー開発に関わっているのですが、gitにコードがプッシュするたびにリモートデスクトップでわざわざプルするのがめんどくさすぎたので自動化したおはなし。
構成
Azure DevOps の Azure Repos にコードがプッシュされる
↓
Azure Repos の機能で自動的にHTTPリクエストを送る
↓
サーバーで動いているFlaskアプリケーションでリクエストをうけとる
↓
subprocess
で自動的に git pull origin master
する
コード
指定したポートを開けた状態で python autogitpull.py
してください。
また、これはベースのコードで、まじでなんのセキュリティ対策もしていません。
flask-httpauth
でユーザー名とパスワードを追加したり、Headerにパスワードを入れたりしたほうがいいかも。私の場合はテストサーバーなのでこれでテストしていきます。
Azure Repos側の設定
プロジェクトのSummary画面から、右下のProject Settingsをクリック
Service Hook を選択
新規サブスクリプションを追加して、Webhook を選択
Trigger on this type of event で Code Pushed を選ぶ
URLを入力
デフォルトのFlaskだとHTTPではないんですが、私の環境だと Accept untrusted SSL certificates を有効にしないと不安定になってました。こちらのサーバー側の問題なのか... そもそもSSL証明書自体ないのに...
あとはテストしてみてターミナルにPOSTリクエストの履歴がでてきたら完了。
いちいちVSCode開いてこのスクリプトを実行するのがめんどくさすぎるので、batファイル使ってスタートアップに登録する形でさらに自動化。
@echo off
cd C:\your_dict\auto-git-pull
REM Start the Flask application in a new window
start "FlaskApp" cmd /k python autopull.py
これでQOL爆上がりまちがいなし。