act(GitHub Actions のローカル実行)に使う Runner のイメージは "full" がよさそう(それでも限界がある)

act とは

nektosact.com

利用できる Runnner のイメージについて

リポジトリの README に書いてあります。

github.com

種別として、actrunnerjsrust などがありますが、いちいち使い分けるのは面倒なので full でいいような気がします*1。 すなわち、以下をとにかく実行し、act で用いればいいのではないかと。

$ docker image pull ghcr.io/catthehacker/ubuntu:full-24.04
$ docker image pull ghcr.io/catthehacker/ubuntu:full-22.04

イメージの容量

ドキュメント にも書いてあるように、展開時には 60GB 程度まで大きくなることもあるようです。ghcr.io/catthehacker/ubuntu:full-24.04 については 42.1GB でした*2

今の時代のローカルマシンならば、これぐらいの容量は問題ないでしょう。

$ docker image ls
REPOSITORY                    TAG          IMAGE ID       CREATED         SIZE
ghcr.io/catthehacker/ubuntu   full-22.04   ba88d8d9cf0b   54 years ago    49.7GB
ghcr.io/catthehacker/ubuntu   full-24.04   2cd8b4f8f5ae   54 years ago    42.1GB

Runner のイメージに関するドキュメントの記載について

公式ドキュメント の Runner についてのページ には、以下のような記述があります。

These default images do not contain all the tools that GitHub Actions offers by default in their runners. Many things can work improperly or not at all while running those image. Additionally, some software might still not work even if installed properly, since GitHub Actions are running in fully virtualized machines while act is using Docker containers (e.g. Docker does not support running systemd)

つまりどうするか

act での実行には限界があるので、少し頑張って無理そうなら、ブランチを作って push しまくってデバッグして最後に squash するのが現実的なのではないかと思います*3

たとえば、act での実行をさせたいがあまり、ワークフローのファイルを書き換えるなどというのは過剰かと思います。

ここらへん、以前書いた SSHデバッグの話 と同様、CircleCI は公式で CLI が用意されていて楽でした。

(参考)act 実行時の具体的なコマンドの内容

zenn.dev

*1:full じゃないと Yarn が入っていなかったりして不便でした

*2:これを書いている当時

*3:あるいはデバッグ専用のワークフローをあらかじめデフォルトブランチに作っておくか(発火条件は workflow_dispatch のみとして)

Powered by はてなブログ