🙌

Github Actionsのトリガーパタン

2023/09/23に公開

img
公式ワークフローのトリガーのドキュメントも存在しますが、
個人的に読みにくかったので、メモとしてまとめることにしました。

トリガーとは

/.github/workflows/{NAME}.yamlファイルの
onで始まるブロックで定義されてるコードのことを指します。

job.yaml
name: "Hello World Flow"

on:
  issues:
    types:
      - opened

jobs:
  sample:
    ...省略...

トリガーは、ワークフローの実行を引き起こすイベントです、主に次のようなイベントがあります。

イベント

push

  • pushイベント時に自動実行、自動テストなどで主に使用します。
name: "Hello World Flow"

on:[push]

jobs:
  sample:
    ...省略...

トリガーとなるブランチを指定するのも可能

name: "Hello World Flow"

on:
  push:
    branches:
     - main
     - 'releases/**'

jobs:
  sample:
    ...省略...

トリガーとなるファイルパス指定も可能

name: "Hello World Flow"

on:
  push:
    paths:
     - '**.js'

jobs:
  sample:
    ...省略...

指定ブランチと指定パスを組み合わせることも可能

name: "Hello World Flow"

on:
  push:
    branchs:
     - main
     - 'release/**'
    paths:
     - '**.js'

jobs:
  sample:
    ...省略...

tags指定

name: "Hello World Flow"

on:
  push:
    tags:
      - v2
      - v1.*

jobs:
  sample:
    ...省略...

push_request

  • テストの自動実行、本番やステージ向けリリースのための結合
name: "Hello World Flow"

on:[pull_request]

jobs:
 sample:
   ...省略...

指定ブランチにプルリクエストする際に実行されることが多い

name: "Hello World Flow"

on:
 pull_request:
   branchs:
     - main
     - 'release/**'

jobs:
 sample:
   ...省略...

時刻指定

schedule

cron形式で指定されたタイミングで定時実行、
テストや多少時間かかるjob実行に使われることが多い。

name: "Hello World Flow"

on:
 schedule:
   - cron: '* * * * *'

jobs:
 sample:
   ...省略...

マニュアル実行

workflow_dispatch

  • GitHubのWeb上から手動実行する
name: "Hello World Flow"
on:
  workflow_dispatch:

ワークフロー依存

workflow_run

  • 指定されたワークフローに依存して実行される、ワークフロー再利用したい場合が使われることが多い、ビルドはお案じワークフロー使って、リリースは別のワークフローにしたい場合など
name: "Hello World Flow"
on:
 workflow_run:
   workflows: ["Build"]
   types: [requested]
   branchs:
     - releases/**

  • types
    • requested 指定ワークフロー要求時に実行
    • completed 指定ワークフロー完了時に実行

Discussion