2023.05.18  

【GithubActions】実行中のワークフローから別のワークフローを呼び出す(再利用)

Git    

GithubActionsで実行中のワークフローファイル(.yml)の中で別のワークフローファイルを呼び出したい時の設定方法についてメモ書きします。

ワークフローの構成が次のようになっているとします。

# octo-org/example-repo/.github/workflows
main-exec.yml
deploy-api.yml

この時、main-exec.ymlからdeploy-api.ymlを呼び出したいとします。

main-exec.ymldev-<任意の文字列>をタグプッシュしたブランチのソースから読み込まれ実行されます。

下記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@maindeploy-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} 
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信