内容
Github Actionsで実行される処理をローカルで行うことができるActのRunner(実行環境)で、
Actのイベントペイロード、環境変数等の指定方法について記載する
GitHubコンテキスト(github.xxx
)の指定
調べた限りでは指定できないぽい
イベントペイロード(github.event.xxx
)の指定
指定する値は、Webhook のイベントとペイロード参照
.github/act/event.json
{
"action": "opened",
"number": 100,
"pull_request": {
"head": {
"ref": "sample-head-ref"
},
"base": {
"ref": "sample-base-ref"
}
}
}
実行例
act -W .github/workflows/test.yml -j test -e .github/act/event.json
inputs
の指定
workflow_call
等のinputsの指定
.github/workflows/test.yml
on:
workflow_call:
inputs:
pr_number:
type: string
required: true
ref:
required: true
type: string
.github/act/event.json
{
"inputs": {
"pr_number": 100,
"ref": "feature/test-branch"
}
}
実行例
act -W .github/workflows/test.yml -j test -e .github/act/event.json
Environment variables(vars.xxx
)の指定
.github/act/.vars
ACCOUNT_ID="1234567890"
REGION="ap-northeast-1"
実行例(ファイル指定)
act -W .github/workflows/test.yml -j test --var-file .github/act/.vars
実行例(値指定)
act -W .github/workflows/test.yml -j test --var VARIABLE=somevalue
Environment secrets(secrets.xxx
)の指定
.github/act/.secrets
SECRETS_ARN="xxxxx"
実行例(ファイル指定)
act -W .github/workflows/test.yml -j test --secret-file .github/act/.secrets
実行例(値指定)
act -W .github/workflows/test.yml -j test --secret-file -s MY_SECRET=somevalue
以下のように値を指定しない場合は環境変数から参照される
act -W .github/workflows/test.yml -j test --secret-file -s MY_SECRET
GITHUB_TOKEN
の指定
実行例
act -W .github/workflows/test.yml -j test -s GITHUB_TOKEN="$(gh auth token)"
環境変数の指定
.github/act/.envs
AWS_ACCESS_KEY_ID="xxxxxx"
AWS_SECRET_ACCESS_KEY="yyyyyy"
AWS_SESSION_TOKEN="zzzzzz"
実行例
act -W .github/workflows/test.yml -j test --env-file .github/act/.envs
アクター(github.actor
)の指定
実行例
act .github/workflows/test.yml -j test -a "dependabot[bot]"
env.ACT
フラグ
Actから実行した場合、環境変数にACT
が追加される
以下、AWS認証処理に利用した例
Actからの実行時はAWS認証をスキップし、
環境変数の指定で設定した認証情報でAWSアクセスするようにしている
runs:
using: 'composite'
steps:
- name: AWS Credentials
if: ${{ !env.ACT }} # Actからの実行時はスキップ
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: ${{ inputs.region }}
role-to-assume: arn:aws:iam::${{ inputs.account_id }}:role/${{ inputs.role_name }}
role-duration-seconds: 3600