開発者が GitHub Actions ワークフローをローカルで実行できるというオープンソースツール Act は、それを使用しようとした開発者の間で様々な結果が報告され、かなりの議論を引き起こしています。Act はより速いフィードバックサイクルを提供し、Make のような従来のタスクランナーに取って代わることを目指していますが、多くのユーザーは実際のシナリオで実装する際に大きな課題に直面していると報告しています。
Act は主に2つの目的で設計されました:コミットやプッシュを必要とせずに GitHub Actions ワークフローの変更に対する迅速なフィードバックを提供すること、そしてローカルタスクランナーとして機能することです。このツールは .github/workflows/
ディレクトリからワークフローファイルを読み取り、Docker を使用して必要なイメージをプルまたはビルドし、GitHub の環境に一致するように構成されたコンテナでアクションを実行します。
プラットフォーム互換性の問題
異なるハードウェアアーキテクチャで Act を実行しようとするユーザーは大きな障害に直面しています。ある開発者は、M シリーズ Mac で CI の問題をデバッグしようとした際に持続的な失敗を報告し、ローカル環境と CI ランナーの間の本質的なプラットフォームの不一致を強調しています。catthehacker からの特殊なイメージを使用しても(これは解凍すると60GB以上を消費すると報告されています)、互換性の問題は解決しませんでした。
「今週も、Rubyテストの奇妙なCI失敗をデバッグするために、もう一度これを試してみました。私はMシリーズMacを使用しているので、本質的なプラットフォームの不一致があります...ドライラン段階を超えて実行することはできませんでした。」
プラットフォーム互換性の問題は Apple Silicon だけでなく、代替コンテナエンジンである Podman のサポート欠如という別の重大な制限にも及んでいます。ユーザーは、Podman 互換性についての議論の試みがすぐに却下されると報告しており、これをオープンソースプロジェクトとしては異例だと感じる人もいます。
Act の主な機能:
- GitHub Actions ワークフローをローカルで実行
- Docker を使用して GitHub の実行環境をシミュレート
- GitHub に合わせた環境変数とファイルシステムの設定
- ソースからビルドする場合は Go ツール 1.20+ が必要
報告されている一般的な問題:
- プラットフォーム互換性の問題(特に M シリーズ Mac で)
- Podman サポートなし
- 大きなコンテナイメージ(非圧縮で最大60GB)
- 環境変数とシークレットの取り扱いの難しさ
- ワークロード ID フェデレーションの課題
- ローカル実行のためのワークフロー修正が必要
構成の複雑さ
ツールが正常に実行される場合でも、開発者は環境構成に課題を抱えています。多くの CI ワークフローは、ローカルで再構成する必要がある環境固有の変数やシークレットに依存しています。Act はファイルからシークレットを読み込むソリューションを提供していますが、ワークロードアイデンティティフェデレーションやその他の高度な認証メカニズムをローカルで実装することは追加の複雑さをもたらします。
AWS のようなクラウドリソースにアクセスするために GitHub の OpenID Connect(OIDC)トークンを使用するワークフローでは、GitHub とローカル環境の両方で適切に機能するために特別な条件付きロジックが必要です。これにより、ローカルテストに対応するためにワークフローファイルに特別な修正が必要になります。
ローカル CI シミュレーションの現実
多くの開発者の間での共通認識は、複雑な CI ワークフローをローカルで実行しようとすることは、根本的に問題がある可能性があるということです。あるコメンテーターは、完全にコンテナ化されたワークフロー以外では、これはかなり絶望的な試みであると述べています。それでも、CI 固有の環境変数やタスク間のアーティファクト共有を再現することは依然として困難です。
一部の開発者は、完璧なローカル複製に焦点を当てるよりも、git プッシュを必要とせずにリモートビルドを容易にするツールと、実際のビルド環境を調査するための SSH アクセスを組み合わせる方が良いアプローチかもしれないと提案しています。このアプローチは、ローカル環境と CI 環境の間の本質的な違いを認識しつつも、改善されたデバッグ機能を提供します。
これらの課題にもかかわらず、一部のユーザーは Act が彼らの開発ワークフローを前進させるのに役立ったと報告しており、その制限があっても、特定のユースケースや環境に対して価値を提供していることを示唆しています。
Act をめぐる議論は、GitHub Actions エコシステムにおけるより広範な問題を浮き彫りにしています:GitHub は包括的な CI/CD プラットフォームを構築しましたが、デバッグツールは主にコミュニティが開発することに委ねられています。プラットフォーム機能とデバッグツールの間のこのギャップは、GitHub または第三者の開発者がより堅牢なソリューションを作成する機会を表しています。
参照: act