1月15日、海外のエンジニアexlee氏が「I Hate Github Actions with Passion」と題したブログ記事を公開し、話題を呼んでいる。この記事では、GitHub Actionsという技術に対する底なしの憎しみと、そのデバッグ過程で失われる人間の尊厳について詳しく紹介されている。
以下に、その内容を紹介する。
地獄への片道切符
著者は冒頭、GitHub Actionsへの嫌悪を「これまでに使ったどのテクノロジーよりも憎んでいる」と断言する。かつて失笑の対象であったPHP4でさえ、これほどまでの憎悪を抱かせることはなかったという。
事の端緒は、自身のプロジェクト「tmplr」において、build.rs(Rustのビルドスクリプト)でドキュメントを自動生成する仕組みを導入したことだった。ローカルでの開発は順調で、一貫性のあるREADME.mdやCHANGELOG.mdが生成される様子に著者は満足していた。しかし、翌朝届いた一通の「CI失敗」の通知が、穏やかな日常を破壊した。
ターゲット環境の罠
ビルドは、以下の4つのプラットフォーム向けに行われていた。
- Linux ARM
- macOS ARM
- Linux x86_64
- macOS x86_64
他の3つが成功する中、なぜかLinux ARMだけが「コマンドが見つからない」と悲鳴を上げた。原因は、GitHub Actionsが親切心から、arm64ランナーに対してx86_64バイナリを隠蔽したことにある。この余計なお節介こそが、著者を終わりのないループへと引きずり込んだ。
崩壊したフィードバックループ
GitHub Actionsの設定を修正しようとするたびに、開発者は以下のような、およそ2026年のものとは思えない「低速なフィードバックループ」を回すことを強いられる。
- 修正案を検索する
ci.ymlを書き換えるjj squash --ignore-immutable && jj git push(コミットとプッシュ)- ブラウザで「Actions」タブを開く
- 最新の実行ログを開く
- Linux ARMのログを凝視する
- 数秒間、無駄な時間を待機する
- 自分の人生を呪う
- 宇宙に向かって、到底ここには書けないような罵詈雑言を浴びせる
- 以上を繰り返す
一行の修正を確認するために、カセットテープ時代のプログラムをロードするかのような数分間の待機を強いられる。この「保存に2分かかるエディタ」を使わされているような絶望的な効率の悪さが、著者の精神を削っていった。
聖なる格言への回帰
30分間、語彙の限りの罵声を使い果たした末に、著者はインターネットに伝わる賢者の言葉を思い出す。
「いいか、何があってもGitHub Actionsにロジックを任せるな。スクリプトは自分の手元で管理し、Actionsには単にそれを叩かせるだけで済ませろ!」
決別と解決
著者は、せっかく書いたbuild.rsを(わずかな悲しみと共に)削除するという断腸の思いの決断を下した。
- すべての生成ロジックを GNU Makefile へ移行。
- 生成されたファイル自体をリポジトリにコミット。
- CI側では単にそのスクリプトを呼び出すだけにする。
この変更により、複雑怪奇なYAMLの迷宮から脱出し、問題は解決を見た。
結論:我々はGitHub Actionsに呪われている
GitHub Actionsは、macOSでのビルド環境を容易に提供してくれるという点では、避けては通れない「必要悪」である。しかし、それは同時に、エンジニアの貴重な時間をデバッグという名のブラックホールへ吸い込み続ける装置でもある。
著者は早期にこの罠から脱出したが、今この瞬間も多くの開発者が、YAMLベースの心なきシステムに翻弄されている。
詳細はI Hate Github Actions with Passionを参照していただきたい。