この記事は HowTelevision Advent Calendar 2024 16日目の記事です。
はじめに
Github Actionsをcommit/pushせずにdockerを使って実行するツール act
の使い方をご紹介します。
https://nektosact.com/introduction.html
インストール
Homebrewを使ってインストールします
$ brew install act --HEAD
実行可能なworkflowやjobを一覧する
-lオプションで実行可能なworkflowやjobを一覧できます
$ act -l
Apple Silicon搭載のMacでは以下のようなメッセージが出るので、メッセージのとおりにオプションを追加します
WARN ⚠ You are using Apple M-series chip and you have not specified container architecture, you might encounter issues while running act. If so, try running it with '--container-architecture linux/amd64'. ⚠
$ act -l --container-architecture linux/amd64
イベントを指定して実行する
イベントを指定して実行すると、そのイベントをトリガーに設定されているwokflowがすべて実行されます。
イベントを指定しなかった場合、 push
を指定したとして扱われます。
$ act pull_request
workflowを指定して実行する
-Wオプションでworkflowファイルを指定して実行できます。
ファイルを指定しなかった場合は .github/workflow
配下のすべてのファイルが実行されます
$ act -W '.github/workflows/checks.yml'
同時にイベントの指定も可能です
$ act pull_request -W '.github/workflows/checks.yml'
イベントを指定しない場合は push
イベントとして実行されます
jobを指定して実行する
-jオプションでjobを指定して実行できます。
workflow指定の場合と同じようにイベント指定が可能で、イベントを指定しない場合は push
イベントとして実行されます
$ act -j 'test'
tips
actions/upload-artifact@v2でエラーになる
[Test storybook/storybook-build] ❗ ::error::Unable to get the ACTIONS_RUNTIME_TOKEN env variable [Test storybook/storybook-build] ❌ Failure - Main Upload storybook artifact [Test storybook/storybook-build] exitcode '1': failure [Test storybook/storybook-build] 🏁 Job failed Error: Job 'storybook-build' failed
上記のようなエラーは --artifact-server-path
オプションで保存先を指定するとエラーを回避できます
act -W './.github/workflows/test-storybook.yml' --artifact-server-path ./storybook-static
command not found
aws-cliのようなGithub Actionsに含まれるCLIがactの環境には含まれていない事が多いです。
https://github.com/nektos/act/issues/107
専用のDockerイメージを作成するか、必要なものをインストールするstepを追加する必要があります
参考
https://nektosact.com/introduction.html
https://qiita.com/yamatai12/items/a74b68bbe60e1ed8bc2d
https://qiita.com/nagayaoh/items/d5cff83929452b790164
おわりに
commit/pushしてしまった方がはやい場面もあるかもしれませんが、個人的にはまだGithub Actionsに慣れていないのでcommit/pushせずに色々試せるのは楽でした。
Github Actions初心者の方の心理的なハードルを下げるツールとしてもよいのではないかと思います。