GitHub Actionsを試すときに、いちいちコミットしないといけないのがめんどくさいので、
ローカルで確認できればな〜と思い、色々調べたときの備忘録。
Dockerを立ち上げてローカルで実行できるのがあった...(*´ω`*)
・nektos/act: Run your GitHub Actions locally 🚀
使ったサンプルはこれ(*´ω`*)
# ./github/workflows/build.yml # ./github/workflows/test.yml name: Act Sample on: release: types: [created] jobs: build: runs-on: ubuntu-latest steps: - run: | echo "MY_ENV_VAR = ${{ env.MY_ENV_VAR }}" echo "MY_2ND_ENV_VAR = ${{ env.MY_2ND_ENV_VAR }}" echo "NPM_TOKEN = ${{ secrets.NPM_TOKEN }}" echo "GITHUB_TOKEN = ${{ secrets.GITHUB_TOKEN }}"
インストール
# インストール
$ brew install act
HomeBrew以外はREADMEを参照
・nektos/act: Run your GitHub Actions locally 🚀
実行できる一覧の表示
# 実行できる一覧の表示 $ act -l Stage Job ID Job name Workflow name Workflow file Events 0 build build Act Sample build.yml release 0 build build TEST test.yml release # 実行できる一覧の表示: イベント指定 $ act workflow_dispatch -l Stage Job ID Job name Workflow name Workflow file Events # 実行できる一覧の表示: ジョブ指定 $ act -j build -l Stage Job ID Job name Workflow name Workflow file Events 0 build build Act Sample build.yml release 0 build build TEST test.yml release # 実行できる一覧の表示: 特定のファイル指定 act -W .github/workflows/build.yml -l Stage Job ID Job name Workflow name Workflow file Events 0 build build Act Sample build.yml release
複数の.yml
があったり、同じジョブ名だとすべて実行対象になるので注意
実行
# 実行: デフォルトはpushイベント act # 特定のイベントで実行 act pull_request # 特定のジョブを実行 act -j test # 特定のファイル指定: デフォルトは全ファイル act -W .github/workflows/build.yml -l # dry-runモードで実行 act -n
初回実行時
初めて実行すると、以下のようなプロンプトが表示され、
実行時に利用するDockerのイメージサイズを選択が必要。
$ 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
選択すると、~/.actrc
に設定が保存される。
$ cat ~/.actrc -P ubuntu-latest=node:16-buster-slim -P ubuntu-22.04=node:16-bullseye-slim -P ubuntu-20.04=node:16-buster-slim -P ubuntu-18.04=node:16-buster-slim
各設定に関しては以下に書いてあるので、適宜変更できる。
・Runners
・Configuration
環境変数/シークレットの指定
# シークレットの指定: デフォルトは".secrets" act --secret-file .act.secrets # 環境変数の指定: デフォルトは".env" act --env-file .act.env
ローカルで実行する場合、GITHUB_TOKEN
がないので、
Personal Access Token(PAT)を作成して設定する必要がある。
ファイル形式はどちらも同じ
MY_ENV_VAR=MY_ENV_VAR_VALUE MY_2ND_ENV_VAR="my 2nd env var value"
~/.actrc
をこんな感じにしておくと便利そう。
-P ubuntu-latest=node:16-buster-slim -P ubuntu-22.04=node:16-bullseye-slim -P ubuntu-20.04=node:16-buster-slim -P ubuntu-18.04=node:16-buster-slim --env-file .act.env --secret-file .act.secrets
注意点
- actで実行できる環境は
ubuntu
のみ - 実際の環境とは異なるので、差分もある
- 全機能を試せるわけではない
とのことだけど、それでもかなりの数のコミットを減らせるはず。。(*´ω`*)
ありがたい...(*´ω`*)