はじめに
GitHub Actionsを使ったCI/CDフローの開発やデバッグを行う際、GitHubにプッシュするたびにワークフローを実行するのは手間がかかりますよね。
そんなときに便利なのが、GitHub Actionsをローカルで実行できるツール「act」です。
本記事では、act
の基本的な使い方をご紹介したいと思います。
actとは
act
は、GitHub Actionsのワークフローをローカルで実行できるコマンドラインツールです。
ローカルで事前にワークフローの動作を検証できるため、開発の効率を大きく向上させることができます。
actは仮想環境上にGitHub Actionsの環境を構築する仕組みになっているのでDockerを使用しますが、本記事でのDockerに関するご説明は省いております。
actをインストール前にDocker環境をご準備いただいてからお試しください。
インストール方法
以下のコマンドでインストール可能です(Homebrewの場合):
brew install act
その他のインストール方法については、公式リポジトリをご確認ください。
https://github.com/nektos/act
基本的な使い方
1. ワークフローを定義する
GitHub Actionsの通常の使い方と同様に、.github/workflows/
配下にYAML形式のワークフロー定義ファイルを作成します。
# 例: .github/workflows/test.yml
name: Test
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Tests
run: echo "Running tests..."
2. actを実行する
基本の実行例
act
上記コマンドを実行すると、on
で定義されたイベント(例: push
)に応じて、該当のジョブが実行されます。
特定のイベントを明示的に指定して実行
act push
GitHubに実際にpushしたときと同じ挙動で実行されます。
他にも以下のように任意のイベント名を指定することができます。
act pull_request
act workflow_dispatch
特定のジョブだけを実行
act -j <ジョブ名>
ジョブ名はYAMLファイル内の jobs
セクションのキーとして定義されている名前(例: build や test など)と一致させる必要があります。
例:
act -j build
Secretsを読み込んで実行
act --secret-file .secrets
.secrets
ファイルには、以下のように1行ずつ「KEY=VALUE」形式で記述します。
MY_SECRET=value123
API_KEY=abcdefg
Appleシリコン(M1/M2)環境での実行
Dockerのアーキテクチャを明示的に指定する必要がある場合があります。
act --container-architecture linux/amd64
ワークフローのイベント一覧を確認
act -l
定義済みのイベントと、それに対応するジョブの一覧を表示します。
注意点
- 一部のGitHub公式ActionsがDocker上で動かない場合があります(例:
actions/setup-node
など)。 -
runs-on
の指定に応じたコンテナイメージが自動的に使われますが、必要に応じてカスタムイメージを指定することも可能です。
さいごに
本記事では、GitHub Actionsのワークフローをローカルで実行できるツール「act」の使い方についてご紹介しました。
CI/CDの構築やデバッグを効率的に行うための強力なツールなので、ぜひ活用してみてください。
なお、私自身も現在Webアプリ開発の真っ最中で、GitHub Actionsを利用する際にはactを使った検証にかなり助けられています。
今後もWeb開発に関するTipsをまとめていく予定ですので、興味があればまたご覧ください!