👌

act/nektosの導入で詰まった点

2023/03/25に公開

開発環境

  • Mac OS(Intel)
  • Docker
  • act/nektos

前提

CI/CDのツールとして有名なGithub actionsですが、毎回変更をcommitしてpushするとなると面倒くささが増えますよね。
ローカルで実行できるようになると良いなと探していたところ見つけたのが、act/nektosというツールでした。
その導入時に詰まった点について書いていこうと思います。

詰まった点

実行してみると、以下のようなエラーが出て終了してしまうという状態。

[setup/build] 🚀  Start image=catthehacker/ubuntu:full-20.04
[setup/build]   🐳  docker pull image=catthehacker/ubuntu:full-20.04 platform= username= forcePull=true
[setup/build]   🐳  docker create image=catthehacker/ubuntu:full-20.04 platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[]
Error: failed to create container: 'Error response from daemon: No such image: catthehacker/ubuntu:full-20.04'
[WARN] - (starship::utils): Executing command "/usr/local/bin/git" timed out.
[WARN] - (starship::utils): You can set command_timeout in your config to a higher value to allow longer-running commands to keep executing.

しかも、docker pulldocker createにめちゃくちゃ時間がかかるという状態。
これでは手軽に実行できないなという感想でした。

色々と原因を探っていて、辿り着いた箇所としましては、初めて実行する場合に、large, medium, microの3つが選べるのですが、自分は特に考えずにlargeを選択していました。

$ act
? Please choose the default image you want to use with act:

  - Large size image: +20GB Docker image, includes almost all tools used on GitHub Actions (IMPORTANT: currently only ubuntu-18.04 platform is available)
  - Medium size image: ~500MB, includes only necessary tools to bootstrap actions and aims to be compatible with all actions
  - Micro size image: <200MB, contains only NodeJS required to bootstrap actions, doesn't work with all actions

ここをmediumに変更したら上手く実行されるようにしました。

まず、現状が以下のようになっています。

❯ cat ~/.actrc
-P ubuntu-latest=catthehacker/ubuntu:full-latest
-P ubuntu-latest=catthehacker/ubuntu:full-20.04
-P ubuntu-18.04=catthehacker/ubuntu:full-18.04

以下のサイトにて、指定できるバージョンがわかるので、それを指定してあげます。
https://github.com/nektos/act#runners

これを参考にして明示的にバージョンを設定して実行するようにします。
act -P ubuntu-latest=catthehacker/ubuntu:act-20.04

もしくは、vimなどを使い、~/.actrcのバージョンを書き換えてやります。
すると、上手く実行されるようになりました。

参考記事

Discussion