https://www.memory-lovers.blog/entry/2022/11/13/120000
GitHub Actionsを試すときに、いちいちコミットしないといけないのがめんどくさいので、 ローカルで確認できればな〜と思い、色々調べたときの備忘録。
Dockerを立ち上げてローカルで実行できるのがあった...(´ω`)
使ったサンプルはこれ(´ω`)
# ./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を参照
# 実行できる一覧の表示
$ 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"