私は情熱を持ってGitHub Actionsが嫌いです
93日前原文(xlii.space)
概要
- GitHub Actionsへの強い不満と、その理由の説明
- tmplrプロジェクトのCI構築中に発生した問題の経緯
- Linux ARM環境でのビルド失敗とその原因
- フィードバックループの非効率さへの苛立ち
- Makefileへの移行による問題解決と今後の教訓
GitHub Actionsへの憎悪
- GitHub Actionsに対する強烈な嫌悪感
- これまで使った技術でここまで嫌ったものは他に無し
- PHPも冗談のネタにするが、嫌悪までは感じなかった
- GitHub Actionsだけは情熱的に嫌いという感情
tmplrプロジェクトのCI構築
- tmplrは、手軽にテンプレートを作成できるファイル/プロジェクトスキャフォールドツール
- build.rsでCUEを使い、README.mdやCHANGELOG.mdなどを自動生成
- 作業自体は楽しく、1.5時間程度で完了
- 完成後、CIの結果を確認せずにいたため、後でビルド失敗に気付く
Linux ARMビルド失敗の原因
- CUEバイナリをbuild.rs内で利用
- GitHub Actionsのマトリクスで4プラットフォーム向けにビルド
- Linux ARM
- macOS ARM
- Linux x86_64
- macOS x86_64
- Linux ARMのみ「コマンドが見つからない」とエラー発生
- 他の3環境ではCUEが正常動作
- GitHub Actionsのマトリクス実行環境が強く分離されているため、x86_64バイナリがarm64ランナーから隠蔽される仕様
非効率なフィードバックループ
- 修正案を探してci.ymlを変更し、コミット・プッシュ
- ActionsタブでLinux ARMのビルド結果を都度確認
- 1回の変更につき2~3分かかり、非常に非効率
- まるで2分遅延するエディタやカセットテープ時代のプログラム実行のような体験
- 2026年にもなってこの状況は許容できないと痛感
完全な解決策と教訓
- ネットの格言:「GitHub Actionsにロジックを持たせるな。自分で管理し、Actionsから呼び出せ」
- build.rsを削除し、Makefileで生成処理を管理
- 生成ファイルをリポジトリにコミットし、CI設定も元に戻す
- これで問題が解決し、精神的な負担も軽減
GitHub Actionsの功罪
- GitHub ActionsはmacOSビルドなど一部メリットも存在
- 設定が簡単な点も評価
- しかし、ランナーのデバッグやビルド最適化に多くの時間を浪費
- 他にもっと良いシステムがあれば知りたいが、現状は逃げ場がない現実
- 早い段階で問題に気付けて良かったという結論
まとめと余談
- GitHub Actionsは便利さと引き換えに多くのストレスをもたらす存在
- 個人プロジェクトや小規模開発では、Makefile等でロジックを管理するのが賢明
- PHPのミームは今もお気に入りで、少しだけ救い