テック技報最新号へ →
コード

GitHub Actions: workflow_run でCI成功後にだけCDを起動する

CDワークフローのトリガーを workflow_run にすると、「CIワークフローが完了したら」起動でき、CIとCDを別ファイルに分けてモジュール化できる。

@bbelderbos · 投稿 2026-10-04
#github-actions#ci-cd

コード例

yaml
# .github/workflows/deploy.yml
name: Deploy
on:
  workflow_run:
    workflows: ["CI"]        # CI ワークフローの name
    types: [completed]
    branches: [main]

jobs:
  deploy:
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.workflow_run.head_sha }}  # CIが検証したコミットをデプロイ
      - run: ./scripts/deploy.sh

注意点

  • completed は失敗時も発火するので、conclusion == 'success' の判定が必須。
  • workflow_run で起動するワークフローはデフォルトブランチ上の定義が使われる。
  • フォークからのPRで起動されたCIを起点にすると、シークレット付きで信頼できないコードを動かす危険がある(ref の扱いに注意)。
  • 単純に同じワークフロー内で済むなら、ジョブの needs: で十分。

出典

X の元の投稿を開く