概要
- 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のミーム は今もお気に入りで、少しだけ救い