Skip to content
Latchkey

GitHub Actions の reusable workflow とは?

reusable workflow は他の workflow から呼び出せる workflow 全体で、共有された CI ロジックを 1 か所にまとめられます。

同じパイプラインをすべての repo にコピーするのは脆弱です。reusable workflow を使うと、workflow を一度定義し、input と secret を渡しながら多くの呼び出し元から呼び出せます。関数を呼ぶのによく似ています。

それは何か

workflow_call トリガーを宣言する workflow です。他の workflow はジョブの uses: フィールドでそれを参照し、input と secret を渡します。

A callable workflow
# .github/workflows/reusable-test.yml
on:
  workflow_call:
    inputs:
      node-version:
        type: string
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm test

どう動くか

呼び出し元は reusable workflow を path とバージョンで参照し、with: input と secrets: を供給し、GitHub は呼び出される側のジョブを呼び出し元の実行の一部として実行します。

Calling it
jobs:
  call-test:
    uses: ./.github/workflows/reusable-test.yml
    with:
      node-version: '20'

なぜ重要か

reusable workflow は重複を減らし一貫性を強制します。共有 workflow を一度更新すればすべての呼び出し元が変更を取り込むため、多数のリポジトリで非常に価値があります。

知っておくべき制限

ネストの深さや、1 回の実行がチェーンできる reusable workflow の数には上限があります。input と secret は明示的に渡す必要があり、呼び出される側は呼び出し元の secret を自動的に読み取れません。

関連する概念

reusable workflow は workflow_call イベントに依存し、ジョブ全体ではなくステップをまとめる composite action とは異なります。

重要なポイント

  • reusable workflow は別の workflow から uses: で呼び出されます。
  • workflow_call トリガーと明示的な input/secret を使います。
  • repo 間で共有された CI ロジックを一元化します。

関連ガイド