GithubActionsで実行中のワークフローファイル(.yml)の中で別のワークフローファイルを呼び出したい時の設定方法についてメモ書きします。
ワークフローの構成が次のようになっているとします。
# octo-org/example-repo/.github/workflows
main-exec.yml
deploy-api.yml
この時、main-exec.yml
からdeploy-api.yml
を呼び出したいとします。
main-exec.yml
はdev-<任意の文字列>
をタグプッシュしたブランチのソースから読み込まれ実行されます。
下記ecspresso_config
で渡している設定ファイルもタグプッシュしたブランチのソースから読み込まれます。
※ ecspressoとはAWSにデプロイするためのコマンドラインのツール
# main-exec.yml
on:
push:
tags:
- 'dev-**'
jobs:
deploy_api:
uses: octo-org/example-repo/.github/workflows/deploy-api.yml@main
with:
aws_region: ap-northeast-1
role_to_assume: arn:aws:iam::123456789123:role/GitHubActionsAdmin
ecspresso_version: v2.0.0
ecspresso_config: ./ecspresso/dev/config.yaml
image_tag: ${{ github.sha }}
上記はuses: octo-org/example-repo/.github/workflows/deploy-api.yml@main
でdeploy-api.yml
の呼び出し(ワークフローの再利用)を行っています。
@main
とつけるとmainブランチのdeploy-api.yml
が読み込まれます。
@をはずして書くとエラーとなるので、明示的なブランチの指定(@<ブランチ名>)は必須のようです。
https://docs.github.com/ja/actions/using-workflows/reusing-workflows
image_tagに設定している「${{ github.sha }}」という文字列は、実行時にはそのワークフローの実行のトリガとなったコミットのハッシュ文字列に置き換えられるそうです。参考
# deploy-api.yml
name: Deploy API
on:
workflow_call:
inputs:
# ※ image_tag 以外の変数の記載は省略しています
image_tag:
required: true
type: string
jobs:
deploy:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
permissions:
id-token: write
contents: write
steps:
- name: Checkout branch
uses: actions/checkout@v3
with:
ref: ${{ inputs.image_tag }}
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '18.x'
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-region: ${{ inputs.aws_region }}
role-to-assume: ${{ inputs.role_to_assume }}
- name: Install ecspresso
uses: kayac/ecspresso@v2
with:
version: ${{ inputs.ecspresso_version }}
- name: Deploy to Amazon ECS by ecspresso
env:
ECSPRESSO_CONFIG_FILE: ${{ inputs.ecspresso_config }}
IMAGE_TAG: ${{ inputs.image_tag }}
run: |
ecspresso deploy --config ${ECSPRESSO_CONFIG_FILE}