actを使ってGitHubActionsをローカルで実行する
はじめに
最近subskunというAndroidアプリをリリースした。
GitHub Actionsを使ってデプロイの自動化を一緒に組んでいたが、毎回ワークフローを組んでpushしてGitHub上で実行してを繰り返していた。
しかし、これでは手間がすごいしGitHub Actionsの無料枠の実行時間を食い潰してしまう。
そこで、ローカルで手軽に実行してデバッグできるようなツールを探したところ、act
というものを見つけたので使ってみた。
導入方法
自分の場合はbrewでインストールした。その他にもChocolatey
やAUR
などのパッケージマネージャーでのインストール方法もREADMEで紹介されている。
brew install act
また、act
はDocker
を使って実行されるのでDocker
の準備も必要だ。
使い方
# コマンドの基本的な構造
act [<event>] [options]
# イベントもオプションも指定しない場合はデフォルトのpushイベントのワークフローが実行される
act
# プルリクエストをトリガーとするワークフローを実行
act pull_request
# -nまたは--dryrunでドライラン実行
act -n
# -Wまたは--workflowsでワークフローを指定して実行
act -W .github/workflows/sample.yml
# -sまたは--secretsでシークレットのを指定して実行
act -s SECRET_KEY=value
# シークレットファイルを指定して実行
act --secret-file .secret
# 環境変数を指定して実行
act --env ENV_KEY=value
# 環境変数ファイルを指定して実行
act --env-file .env
使ってみての感想
act
の実行はDocker
依存なのでどうしても実際のGitHub Actionsと環境差異が出てしまうが、ローカルでデバッグできるという手軽さはかなり便利だった。
act
のREADMEには今回触れなかった注意点も書かれているので、しっかり使っていて何か問題にぶつかった方はまず参照してみるとよさそうだ。