継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

GitHub Actions で特定のワークフロー完了後に動作するワークフローを作る

タダです.

GitHub Actions を使っていてこれまでは開発者からのpushpull_requestのイベントをトリガーに動かしていましたが,特定のワークフロー完了後に別のワークフロー を動かすことをやったので設定をまとめていきます.

概要

以下の2つのワークフロー があって,before-action.ymlが完了後にafter-action.ymlが動作するようにしたいです.

  • before-action.yml : 特定ブランチ削除後にタグを打つ処理
  • after-action.yml : タグを打った後の実行される処理

GitHub Actions の定義

上記のことを実現するための GitHub Actions が下記になります.after-action.ymlのトリガーで push イベントを最初設定していましたが,GitHub Actions の中での push があっても動作しませんでした.変わりにworkflow_runを使っています.workflowsでトリガーするワークフロー名,branchesでトリガーのワークフローが実行されるブランチ,typesでワークフロー のステータスが完了になったら動作するよう設定しました.

before-action.yml

name: Before Actions

on:
  delete

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout'
        uses: actions/checkout@v2
      - name: git tag
        run: |
          git tag xxx
          git push origin xxx
        if: startsWith(github.event.ref, 'hoge')

after-action.yml

name: After Actions

on:
  workflow_run:
    workflows: 
      - Before Actions
    branches: main
    types:
      - "completed"

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout'
        uses: actions/checkout@v2
      - name: print
        run: echo "OK"

参考情報

docs.github.com

実行結果

実行結果を確認してみたところ期待通りに動作したことを確認しました.

f:id:sadayoshi_tada:20210518203100p:plain

まとめ

別のワークフロー の結果をトリガーに動作するワークフローを作ったので備忘録としてまとめました.同じような目的の方の参考になれば嬉しいです.