インフラ · Angla

GitHub Actions の無料枠が足りなくなり、日次ジョブを VPS cron に移した

Angla の日次スコアを Actions の schedule から外し、VPS cron に移した理由と今の役割分担。

個人開発でも、定期バッチを GitHub Actions の schedule に載せたくなります。Angla でもそうしていました。日次の釣行スコア生成を Actions で回していたのですが、2026年8月に GitHub Free の月間分を使い切って止まりました

結論から言うと、毎日必ず走る処理は VPS の cron に移し、Actions の schedule には戻しません

何が枠を食っていたか

自分のアカウントは GitHub Free(月 2,000 分、超過は止めたい運用)です。Angla 周りで重かったのは、ざっくり次のようなものです。

  • 日次スコア生成(当時は毎日まとまった分数が必要だった)
  • 潮汐まわりのフル再ビルドを毎日回していた時期
  • docs だけのコミットがデプロイやワークフローを叩いていたこと
  • iOS 向け macOS ランナー(分が 10 倍)

「1日十数分」でも、毎日積み上がると月末に効きます。便利な自動化が、そのまま請求(または停止)になります。

残したもの / 外したもの

移したあとの役割分担はこうしています。

処理どこで回す
日次スコアVPS cron(Dart SDK のみ)
Web 本番デプロイGitHub Actions(コード変更時のみ
Android AAB手動 workflow_dispatch
iOS TestFlight手元 Mac のスクリプトが正本

大事なのは、「無料枠が戻ったから schedule を復活」しないことです。同じ失敗を季節イベントのように繰り返すだけなので。

VPS cron 側の設計

VPS には Flutter フルセットを入れていません。日次スコアは Dart SDK だけで動くスクリプトに寄せています。メモリ 2GB クラスの VPSでも回せるようにした、という実務的な判断です。

運用上の注意もセットで覚えました。

  • git push しただけでは、VPS 上のスクリプトコピーは更新されない(同期が別作業)
  • cron 失敗しても GitHub の失敗メールは来ないので、ログを見る習慣が必要
  • 潮汐の静的 HTML を毎日フルビルドする必要は薄く、端末計算+デプロイ時更新に寄せた

「自動化した瞬間に、監視と同期の手順も増える」のが個人開発のリアルです。

Actions に残す意味

Actions を全否定しているわけではありません。

  • コード変更時のビルド/デプロイ
  • たまにしか叩かない Android パッケージ作成

ここは PR やコミットと相性が良いです。一方で 毎日決まった時刻に必ず走る仕事は、分課金のクラウド CI より、月額固定の VPS cron の方が予測しやすい、というのが今回の学びです。

まとめ

  • 便利な schedule でも、Free 枠は普通に死ぬ
  • 日次必須バッチは VPS cron へ
  • 枠が戻っても、同じ schedule は戻さない
  • CI は「変更時」と「手動」、定時は「自前サーバー」と役割を分ける

Angla 全体の話は Angla を公開するまで にあります。VPS に複数サービスを載せる話は、また別に書きます。

関連記事

← 記事一覧