🐦

【初学者と学ぶ】Github Actions: Trigger(トリガー)について

2024/04/20に公開

前回の記事のに引き続き今回は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