やりたいこと
GitHub Actions で CI/CD のパイプラインを1から組むことがあり、その際に Act というローカルで GitHub Actions を実行できるツールを使ったので、その内容をまとめてみます。
Act とは
Act は GitHub で提供されている CI/CD のサービスをローカルで実行 (デバッグ) できるツール。特にパイプラインを1から組んでいく時に、修正して PUSH して、また修正して PUSH してというのを繰り返すのをローカルで実行することで、リモート側に PUSH せずとも動作を確認できる。GitHub Actions のすべての機能を再現はできないが、基本的な機能は再現できる。
- 以降の手順は、MAC (M* Chip) での実行を前提とします
- Docker を利用できる必要があります
- Docker Desktop や Colima などを利用してください
インストール
以下コマンドでインストール。
brew install act
パイプラインの作成
テスト用に簡単なパイプラインを作成する。
name: test
on:
push:
jobs:
test:
name: test_job
runs-on: ubuntu-latest
steps:
- name: first_step
uses: actions/checkout@v4
- name: second_step
run: |
pwd
ls -a
- name: third_step
run: echo "Hello Act!"
# 実行
以下コマンドで実行できる。今回は条件に push
を指定しているので、push で実行する。
act push
実行時に以下のようなエラーが出る場合は、
Error: failed to start container: Error response from daemon: error while creating mount source path '/Users/****/.colima/docker.sock': mkdir /Users/****/.colima/docker.sock: operation not supported
実行時に以下のオプションを指定する。
act push --container-daemon-socket -
また、WARNING として表示される以下が気になる場合は、
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 push --container-architecture linux/amd64
オプションに指定するのが面倒な場合は、以下の設定ファイルを作成する。
--container-daemon-socket -
--container-architecture linux/amd64
実行すると作成したパイプラインで定義した内容が出力されるはず!
ということで
Act を使って、GitHub Actions をローカルで実行する方法をまとめました。パイプラインの開発時に毎回 PUSH して動作確認するのは面倒ですしコミット履歴も増えてしまうので、極力 Act を使ってローカル実行するのが良いのかなと感じます (個人の好みの範疇ですが笑)。
以上です!