【初学者と学ぶ】Github Actions: Trigger(トリガー)について
前回の記事のに引き続き今回はGithub ActionsのWorkflowが発火される条件、Trigger(トリガー)についての記事です。
この記事でのゴール
Triggerの基本的な仕組みがわかり、どのドキュメントを参照すれば実現したいことができるか分かっている状態。
Github Actions構成要素の復習
前回紹介した画像で言うWorkflowの部分を起動するのがTriggerです!
登場人物
まずは以下の図をみていただくと、Triggerの基本要素がわかります。
では一つずつ説明していきます!
Event
Workflowを起動する行動の種類で、主にレポジトリー関連のもの(push, pull_requestなど)、スケジュールによる定期実行などもあります。
Eventの種類はたくさんあるのでこちらのドキュメントを参照してください
今回の主題はTriggerなので以下のシンプルなWorkflowを使って説明していきます。
ただ"Hello"とプリントするだけのWorkflowです。
name: Test Workflow
# triggerはonの配下に記述していく
on:
jobs:
unit-test-job:
runs-on: ubuntu-latest
steps:
- name: Print Hello
run: echo "Hello"
例としてPull Requestが作成された時にWorkflowが発火するようにしてみましょう。
name: Test Workflow
# pull requestのたびにWorkflow発火する
on: pull_request
jobs:
unit-test-job:
runs-on: ubuntu-latest
steps:
- name: Print Hello
run: echo "Hello"
PRを作成してみると、ちゃんと"Test Workflow"が走ってますね。
このようにEventを使うことで、自動的にWorkflowを発火するための基本条件を設定できます!
Activity Type
次にActivity Typeの説明ですが、こちらはEventに対する詳細設定のようなものです。
以下の公式ドキュメントのpull_request
に対するActivity Typeを見てみるとopened
, closed
などがあり複数指定できます。
例えば以下のようにopenedとready_for_reviewをActivity typeとして指定してみます。
そうすると、通常のPRやドラフトPRを作った時 & ドラフトPRをレビュー可能状態にした時にWorkflowが走るようになります。
on:
pull_request:
types: [opened, ready_for_review]
Event Filter
push, pull_request Eventに対してフィルターをかけられます。よく使われる例としては、branch名に応じてWorkflowを発火するかどうか決めるなどです。
また正規表現の様なものを使い、複雑な branch名の指定もできます。
例
pull_request:
branches:
- main
- 'dev-*' # dev-から始まるbranch, /が入ってくると対象外
- 'feature/**' # feature/から始まるブランチ、**指定なので、/が含まれていてもいい
今回の例ではPR先のブランチが、
- main -> workflow走る
- dev-branch -> workflow走る
- feature/a/b -> workflow走る
- dev-branch/test -> workflow走らない
- hoge -> workflow走らない
のようになります。
他のパターンマッチに関しては公式ドキュメントを参照してください!Filter Patternチートシート
最後に
Triggerについて理解が深まってくれていたら嬉しいです!
引き続きGithub Actionsの記事や、Androidの記事も書いていきます!
Discussion