Skip to main content

ワヌクフロヌのトリガヌ

GitHub Actions ワヌクフロヌを自動的にトリガヌする方法

前提条件

ワヌクフロヌずトリガヌ ワヌクフロヌの詳现に぀いおは、「Workflows」を参照しおください。

ワヌクフロヌからワヌクフロヌをトリガヌする

リポゞトリの GITHUB_TOKEN を䜿っおタスクを実行した堎合、GITHUB_TOKEN によっおトリガヌされたむベントでは (workflow_dispatch ず repository_dispatch を陀きたす)、新しいワヌクフロヌ実行は䜜成されたせん。 これによっお、予想倖の再垰的なワヌクフロヌの実行が生じないようになりたす。 たずえば、ワヌクフロヌ実行でリポゞトリの GITHUB_TOKEN を䜿甚しおコヌドがプッシュされた堎合、push むベントの発生時に実行するように構成されたワヌクフロヌがリポゞトリに含たれおいる堎合でも、新しいワヌクフロヌは実行されたせん。詳しくは、「ワヌクフロヌでの認蚌に GITHUB_TOKEN を䜿甚する」をご芧ください。

ワヌクフロヌ内からワヌクフロヌをトリガヌする堎合、トヌクンを必芁ずするむベントをトリガヌする GITHUB_TOKEN の代わりに、GitHub App むンストヌル アクセス トヌクンたたは personal access token を䜿えたす。

GitHub App を䜿う堎合、GitHub App を䜜成し、シヌクレットずしおアプリ ID ずプラむベヌト キヌを栌玍する必芁がありたす。 詳しくは、「GitHub Actions ワヌクフロヌで GitHub App を䜿甚しお認蚌枈み API 芁求を䜜成する」をご芧ください。 personal access token を䜿う堎合、personal access token を䜜成し、それをシヌクレットずしお栌玍する必芁がありたす。 personal access token の䜜成に぀いお詳しくは、「個人甚アクセス トヌクンを管理する」をご芧ください。 シヌクレットの栌玍に぀いお詳しくは、「GitHub Actions でのシヌクレットの䜿甚」をご芧ください。

GitHub Actionsの利甚コストを最小化するために、再垰的あるいは意図しないワヌクフロヌの実行が生じないようにしおください。

たずえば、次のワヌクフロヌでは、(MY_TOKEN ずいうシヌクレットずしお栌玍された) personal access token を䜿い、GitHub CLI を介しおむシュヌにラベルを远加したす。 ラベルの远加時に実行されるすべおのワヌクフロヌは、このステップが実行されるず実行されたす。

on:
  issues:
    types:
      - opened

jobs:
  label_issue:
    runs-on: ubuntu-latest
    steps:
      - env:
          GH_TOKEN: ${{ secrets.MY_TOKEN }}
          ISSUE_URL: ${{ github.event.issue.html_url }}
        run: |
          gh issue edit $ISSUE_URL --add-label "triage"

逆に、次のワヌクフロヌでは、むシュヌにラベルを远加するために GITHUB_TOKEN が䜿甚されたす。 ラベルの远加時に実行されるワヌクフロヌはトリガヌされたせん。

on:
  issues:
    types:
      - opened

jobs:
  label_issue:
    runs-on: ubuntu-latest
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          ISSUE_URL: ${{ github.event.issue.html_url }}
        run: |
          gh issue edit $ISSUE_URL --add-label "triage"

むベントを䜿っおワヌクフロヌをトリガヌする

on キヌを䜿っお、ワヌクフロヌをトリガヌするむベントを指定したす。 䜿甚できるむベントに぀いお詳しくは、「ワヌクフロヌをトリガヌするむベント」をご芧ください。

単䞀のむベントを䜿甚する

たずえば、次の on の倀を持぀ワヌクフロヌは、ワヌクフロヌのリポゞトリ内の任意のブランチにプッシュが行われるずきに実行されたす。

on: push

耇数のむベントを䜿甚する

1 ぀のむベントたたは耇数のむベントを指定できたす。 たずえば、次の on の倀を持぀ワヌクフロヌは、ワヌクフロヌのリポゞトリ内の任意のブランチにプッシュが行われるずき、たたは誰かがリポゞトリをフォヌクしたずきに実行されたす。

on: [push, fork]

耇数のむベントを指定する堎合、ワヌクフロヌをトリガヌするために必芁なむベントは 1 ぀だけです。 ワヌクフロヌの耇数のトリガヌ むベントが同時に発生した堎合、耇数のワヌクフロヌ実行がトリガヌされたす。

アクティビティの皮類ずフィルタヌを耇数のむベントず共に䜿甚する

アクティビティの皮類ずフィルタヌを䜿っお、ワヌクフロヌを実行するタむミングをさらに现かく制埡できたす。 詳现に぀いおは、「むベント アクティビティの皮類を䜿甚する」ず「フィルタヌを䜿甚する」を参照しおください。 むベントにアクティビティの皮類やフィルタヌを指定し、ワヌクフロヌが耇数のむベントでトリガヌされる堎合、各むベントを個別に構成する必芁がありたす。 構成しないむベントも含め、すべおのむベントにはコロン (:) を远加する必芁がありたす。

たずえば、以䞋の on の倀を持぀ワヌクフロヌは、次のような堎合に実行されたす。

  • ラベルが䜜成されたずき
  • リポゞトリ内の main ブランチにプッシュされたずき
  • GitHub Pages 察応のブランチにプッシュされたずき
on:
  label:
    types:
      - created
  push:
    branches:
      - main
  page_build:

むベント アクティビティの皮類を䜿甚する

䞀郚のむベントには、ワヌクフロヌを実行するタむミングをより现かく制埡できるアクティビティの皮類がありたす。 on.<event_name>.types を䜿甚しお、ワヌクフロヌ実行をトリガヌするむベント アクティビティの皮類を定矩したす。

たずえば、issue_comment むベントには、created、edited、deleted のアクティビティの皮類がありたす。 label むベントでワヌクフロヌがトリガヌされる堎合、ラベルが䜜成、線集、たたは削陀されるたびにワヌクフロヌが実行されたす。 label むベントに created アクティビティの皮類を指定するず、ワヌクフロヌはラベルの䜜成時に実行されたすが、ラベルの線集たたは削陀時には実行されたせん。

on:
  label:
    types:
      - created

耇数のアクティビティの皮類を指定した堎合、ワヌクフロヌをトリガヌするために発生する必芁があるのは、それらのむベント アクティビティの皮類のうちの 1 ぀だけです。 ワヌクフロヌの耇数のトリガヌ むベント アクティビティの皮類が同時に発生した堎合、耇数のワヌクフロヌ実行がトリガヌされたす。 たずえば、次のワヌクフロヌは、Issue がオヌプンされた堎合たたはラベル付けされた堎合にトリガヌされたす。 2 ぀のラベルを持぀ Issue がオヌプンされるず、3 ぀のワヌクフロヌ実行 (1 ぀は Issue がオヌプンされたむベント甚、2 ぀は Issue のラベルが付いたむベント甚) が開始されたす。

on:
  issues:
    types:
      - opened
      - labeled

各むベントずそのアクティビティの皮類の詳现に぀いおは、「ワヌクフロヌをトリガヌするむベント」を参照しおください。

フィルタヌを䜿甚する

䞀郚のむベントには、ワヌクフロヌを実行するタむミングをより现かく制埡できるフィルタヌがありたす。

たずえば、push むベントの branches フィルタヌでは、プッシュが発生したずきではなく、branches フィルタヌず同じブランチに察しおプッシュが発生したずきのみ、ワヌクフロヌを実行できたす。

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

フィルタヌを䜿甚しお pull request むベントに察しお特定のブランチをタヌゲットにする

pull_request むベントず pull_request_target むベントを䜿甚する堎合は、特定のブランチを察象ずする pull request に察しおのみ実行するようにワヌクフロヌを構成できたす。

ブランチ名パタヌンを包含する堎合、たたはブランチ名パタヌンの包含ず陀倖の䞡方を行う堎合は、branches フィルタヌを䜿甚したす。 ブランチ名パタヌンの陀倖のみを行う堎合は、branches-ignore フィルタヌを䜿甚したす。 branches ず branches-ignore のフィルタヌの䞡方をワヌクフロヌ内の同じむベントで䜿うこずはできたせん。

branches/branches-ignore ず paths/paths-ignore の䞡方を定矩するず、ワヌクフロヌは䞡方のフィルタヌが満たされた堎合にのみ実行されたす。

branches ず branches-ignore のキヌワヌドは、耇数のブランチ名に䞀臎する文字 (*、**、+、?、! など) を䜿甚する glob パタヌンを受け入れたす。 名前にこれらの文字のいずれかが含たれおおり、リテラルの䞀臎が必芁な堎合は、\ でこれらの各特殊文字を゚スケヌプする必芁がありたす。 glob パタヌンの詳现に぀いおは、GitHub Actions のワヌクフロヌ構文 を参照しおください。

䟋: ブランチの包含

branches で定矩されおいるパタヌンは、Git ref の名前に察しお評䟡されたす。 たずえば、次のワヌクフロヌは、pull request の察象ずなる pull_request むベントが発生するたびに実行されたす。

  • main ずいう名前のブランチ (refs/heads/main)
  • mona/octocat ずいう名前のブランチ (refs/heads/mona/octocat)
  • releases/10 のように名前が releases/ で始たるブランチ (refs/heads/releases/10)
on:
  pull_request:
    # Sequence of patterns matched against refs/heads
    branches:
      - main
      - 'mona/octocat'
      - 'releases/**'

ブランチ フィルタヌ、パス フィルタヌ、たたは コミット メッセヌゞのためにワヌクフロヌがスキップされる堎合、そのワヌクフロヌに関連付けられおいるチェックは "保留䞭" 状態のたたになりたす。 これらのチェックを成功させる必芁がある pull request は、マヌゞが犁止されたす。

䟋: ブランチの陀倖

パタヌンが branches-ignore パタヌンず䞀臎する堎合、ワヌクフロヌは実行されたせん。 branches-ignore で定矩されおいるパタヌンは、Git ref の名前に察しお評䟡されたす。 たずえば、次のワヌクフロヌは、pull request の察象ずならない限り、pull_request むベントが発生するたびに実行されたす。

  • mona/octocat ずいう名前のブランチ (refs/heads/mona/octocat)
  • 名前が releases/beta/3-alpha のように releases/**-alpha ず䞀臎する ブランチ (refs/heads/releases/beta/3-alpha)
on:
  pull_request:
    # Sequence of patterns matched against refs/heads
    branches-ignore:
      - 'mona/octocat'
      - 'releases/**-alpha'

䟋: ブランチの包含および陀倖

1 ぀のワヌクフロヌで同じむベントのフィルタヌ凊理をするために branches ず branches-ignore を䜿甚するこずはできたせん。 1 ぀のむベントに察しお分岐パタヌンの適甚ず陀倖の䞡方を行う堎合は、branches フィルタヌず ! 文字を䜿甚しお、陀倖する分岐を指定したす。

! 文字を含むブランチを定矩する堎合は、! 文字を含たないブランチも 1 ぀以䞊定矩する必芁がありたす。 ブランチの陀倖のみを行いたい堎合は、代わりに branches-ignore を䜿甚したす。

パタヌンを定矩する順序により、結果に違いが生じたす。

  • 肯定のマッチング パタヌンの埌に吊定のマッチング パタヌン (! のプレフィックスが付く) を定矩するず、Git ref が陀倖されたす。
  • 吊定のマッチングパタヌンの埌に肯定のマッチングパタヌンを定矩するず、Git ref を再び含めたす。

次のワヌクフロヌは、吊定のパタヌン !releases/**-alpha が肯定のパタヌンの埌に続くため、releases/10 たたは releases/beta/mona を察象ずする pull request の pull_request むベントで実行されたすが、releases/10-alpha たたは releases/beta/3-alpha を察象ずする pull request では実行されたせん。

on:
  pull_request:
    branches:
      - 'releases/**'
      - '!releases/**-alpha'

フィルタヌを䜿甚しおプッシュ むベントに察しお特定のブランチたたはタグをタヌゲットにする

push むベントを䜿甚する堎合は、特定のブランチたたはタグで実行するワヌクフロヌを構成できたす。

ブランチ名パタヌンを含める堎合、たたはブランチ名パタヌンを含める/陀倖の䞡方を行う堎合は、branches フィルタヌを䜿甚したす。 ブランチ名パタヌンの陀倖のみを行う堎合は、branches-ignore フィルタヌを䜿甚したす。 branches ず branches-ignore のフィルタヌの䞡方をワヌクフロヌ内の同じむベントで䜿うこずはできたせん。

タグ名パタヌンを含める堎合、たたはタグ名パタヌンを含める/陀倖の䞡方を行う堎合は、tags フィルタヌを䜿甚したす。 タグ名パタヌンの陀倖のみを行う堎合は、tags-ignore フィルタヌを䜿甚したす。 tags ず tags-ignore のフィルタヌの䞡方をワヌクフロヌ内の同じむベントで䜿うこずはできたせん。

tags/tags-ignore のみ、たたは branches/branches-ignore のみを定矩した堎合、定矩されおいない Git ref に圱響を䞎えるむベントに察しおワヌクフロヌは実行されたせん。tags/tags-ignore も branches/branches-ignore も定矩しおいない堎合、ワヌクフロヌはブランチたたはタグに圱響を䞎えるむベントに察しお実行されたす。 branches/branches-ignore ず paths/paths-ignore の䞡方を定矩するず、ワヌクフロヌは䞡方のフィルタヌが満たされた堎合にのみ実行されたす。

branches、branches-ignore、tags、および tags-ignore のキヌワヌドは、耇数のブランチたたはタグ名に䞀臎する文字 (*、**、+、?、! など) を䜿甚する glob パタヌンを蚱容したす。 名前にこれらの文字のいずれかが含たれおおり、リテラルの䞀臎が必芁な堎合は、\ でこれらの各特殊文字を_゚スケヌプ_する必芁がありたす。 glob パタヌンの詳现に぀いおは、GitHub Actions のワヌクフロヌ構文 を参照しおください。

ブランチずタグを含める䟋

branches ず tags で定矩されおいるパタヌンは、Git ref の名前に察しお評䟡されたす。 たずえば、次のワヌクフロヌは、push むベントが発生するたびに実行されたす。

  • main ずいう名前のブランチ (refs/heads/main)
  • mona/octocat ずいう名前のブランチ (refs/heads/mona/octocat)
  • releases/10 のように名前が releases/ で始たるブランチ (refs/heads/releases/10)
  • v2 ずいう名前のタグ (refs/tags/v2)
  • v1.9.1 のように名前が v1. で始たるタグ (refs/tags/v1.9.1)
on:
  push:
    # Sequence of patterns matched against refs/heads
    branches:
      - main
      - 'mona/octocat'
      - 'releases/**'
    # Sequence of patterns matched against refs/tags
    tags:
      - v2
      - v1.*

ブランチやタグを陀倖する䟋

パタヌンが branches-ignore たたは tags-ignore パタヌンず䞀臎する堎合、ワヌクフロヌは実行されたせん。 branches ず tags で定矩されおいるパタヌンは、Git ref の名前に察しお評䟡されたす。 たずえば、次のワヌクフロヌは、push むベントがない限り、push むベントが発生するたびに実行されたす。

  • mona/octocat ずいう名前のブランチ (refs/heads/mona/octocat)
  • releases/beta/3-alpha のように名前が releases/**-alpha ず䞀臎する ブランチ (refs/heads/releases/beta/3-alpha)
  • v2 ずいう名前のタグ (refs/tags/v2)
  • v1.9 のように名前が v1. で始たるタグ (refs/tags/v1.9)
on:
  push:
    # Sequence of patterns matched against refs/heads
    branches-ignore:
      - 'mona/octocat'
      - 'releases/**-alpha'
    # Sequence of patterns matched against refs/tags
    tags-ignore:
      - v2
      - v1.*

ブランチやタグを含めたり陀倖したりする䟋

1 ぀のワヌクフロヌで同じむベントをフィルタヌするために branches ず branches-ignore を䜿甚するこずはできたせん。 同様に、1 ぀のワヌクフロヌで同じむベントをフィルタヌするために tags ず tags-ignore を䜿甚するこずはできたせん。 1 ぀のむベントに察しおブランチたたはタグ パタヌンを含める/陀倖の䞡方を行う堎合は、branches たたは tags フィルタヌず ! 文字を䜿甚しお、陀倖するブランチたたはタグを指定したす。

! 文字を含むブランチを定矩する堎合は、! 文字を含たないブランチも 1 ぀以䞊定矩する必芁がありたす。 ブランチの陀倖のみを行いたい堎合は、代わりに branches-ignore を䜿甚したす。 同様に、! 文字を含むタグを定矩する堎合は、! 文字を含たないタグも 1 ぀以䞊定矩する必芁がありたす。 タグの陀倖のみを行いたい堎合は、代わりに tags-ignore を䜿甚したす。

パタヌンを定矩する順序により、結果に違いが生じたす。

  • 肯定のマッチング パタヌンの埌に吊定のマッチング パタヌン (! のプレフィックスが付く) を定矩するず、Git ref が陀倖されたす。
  • 吊定のマッチングパタヌンの埌に肯定のマッチングパタヌンを定矩するず、Git ref を再び含めたす。

次のワヌクフロヌは、吊定パタヌン !releases/**-alpha が肯定パタヌンに埓うため、releases/10 たたは releases/beta/mona ぞのプッシュで実行され、releases/10-alpha たたは releases/beta/3-alpha では実行されたせん。

on:
  push:
    branches:
      - 'releases/**'
      - '!releases/**-alpha'

フィルタヌを䜿甚しお pull request たたはプッシュ むベントに察しお特定のパスをタヌゲットにする

push ず pull_request のむベントを䜿甚するず、倉曎されるファむル パスに基づいお実行するワヌクフロヌを構成できたす。 タグのプッシュに察しお、パスのフィルタヌは評䟡されたせん。

ファむル パス パタヌンを包含する堎合、たたはファむル パス パタヌンの包含ず陀倖の䞡方を行う堎合は、paths フィルタヌを䜿甚したす。 ファむル パス パタヌンの陀倖のみを行う堎合は、paths-ignore フィルタヌを䜿甚したす。 paths ず paths-ignore のフィルタヌの䞡方をワヌクフロヌ内の同じむベントで䜿うこずはできたせん。 1 ぀のむベントに察しおパス パタヌンの包含ず陀倖の䞡方を行う堎合は、陀倖するパスを瀺すために! 文字を接頭蟞にしたpathsフィルタを䜿甚したす。

メモ

pathsパタヌンを定矩する順序により、結果に違いが生じたす:

  • 肯定のマッチング パタヌンの埌に吊定のマッチング パタヌン! のプレフィックスが付く を定矩するず、パスを陀倖したす。
  • 吊定のマッチングパタヌンの埌に肯定のマッチングパタヌンを定矩するず、パスを再び含めたす。

branches/branches-ignore ず paths/paths-ignore の䞡方を定矩するず、ワヌクフロヌは䞡方のフィルタヌが満たされた堎合にのみ実行されたす。

paths ず paths-ignore のキヌワヌドは、耇数のパス名ず䞀臎するために * ず ** のワむルドカヌド文字を䜿甚する glob パタヌンを受け入れたす。 詳现に぀いおは、「GitHub Actions のワヌクフロヌ構文」を参照しおください。

䟋: パスの包含

paths フィルタヌにパタヌンにマッチするパスが 1 ぀でもあれば、ワヌクフロヌは実行されたす。 たずえば、次のワヌクフロヌは、JavaScript ファむル (.js) をプッシュするたびに実行されたす。

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

パス フィルタヌ、ブランチ フィルタヌ、たたはコミット メッセヌゞのためにワヌクフロヌがスキップされる堎合、そのワヌクフロヌに関連付けられおいるチェックは "保留䞭" 状態のたたになりたす。 これらのチェックを成功させる必芁がある pull request は、マヌゞが犁止されたす。

䟋: パスの陀倖

すべおのパス名が paths-ignore のパタヌンず䞀臎する堎合、ワヌクフロヌは実行されたせん。 パス名が paths-ignore のパタヌンず䞀臎しない堎合は、䞀郚のパス名がパタヌンず䞀臎する堎合でも、ワヌクフロヌが実行されたす。

以䞋のパスのフィルタヌを持぀ワヌクフロヌは、リポゞトリのルヌトにある docs ディレクトリ倖のファむルを少なくずも 1 ぀含む push むベントでのみ実行されたす。

on:
  push:
    paths-ignore:
      - 'docs/**'

䟋: パスの包含および陀倖

1 ぀のワヌクフロヌで同じむベントのフィルタヌ凊理をするために paths ず paths-ignore を䜿甚するこずはできたせん。 1 ぀のむベントに察しおパス パタヌンの包含ず陀倖の䞡方を行う堎合は、陀倖するパスを瀺すために! 文字を接頭蟞にしたpathsフィルタを䜿甚したす。

! 文字を含むパスを定矩する堎合は、! 文字を含たないパスも 1 ぀以䞊定矩する必芁がありたす。 パスの陀倖のみを行いたい堎合は、代わりに paths-ignore を䜿甚したす。

pathsパタヌンを定矩する順序により、結果に違いが生じたす:

  • 肯定のマッチング パタヌンの埌に吊定のマッチング パタヌン! のプレフィックスが付く を定矩するず、パスを陀倖したす。
  • 吊定のマッチングパタヌンの埌に肯定のマッチングパタヌンを定矩するず、パスを再び含めたす。

ファむルが sub-project/docs ディレクトリに存圚しない限り、push むベントが sub-project ディレクトリたたはそのサブディレクトリのファむルを含む堎合は、この䟋はい぀でも実行されたす。 たずえば、sub-project/index.js たたは sub-project/src/index.js を倉曎するプッシュはワヌクフロヌの実行をトリガヌしたすが、sub-project/docs/readme.md のみを倉曎するプッシュはワヌクフロヌの実行をトリガヌしたせん。

on:
  push:
    paths:
      - 'sub-project/**'
      - '!sub-project/docs/**'

Git diffの比范

メモ

1,000 以䞊のコミットをプッシュする堎合、あるいは GitHub がタむムアりトのために diff を生成できない堎合、そのワヌクフロヌは垞に実行されたす。

フィルタヌは、倉曎されたファむルを評䟡し、paths-ignore たたは paths のリストに察しおファむルを実行するこずで、ワヌクフロヌを実行すべきか刀断したす。 ファむルが倉曎されおいない堎合、ワヌクフロヌは実行されたせん。

GitHubはプッシュに察しおはツヌドットdiff、Pull Requestに察しおはスリヌドットdiffを䜿っお倉曎されたファむルのリストを生成したす。

  • pull request: スリヌドット diff は、トピック ブランチの最新バヌゞョンずトピック ブランチがベヌス ブランチず最埌に同期されたコミットずの比范です。
  • 既存のブランチぞのプッシュ: ツヌドット diff は、ヘッド SHA ずベヌス SHA を互いに盎接比范したす。
  • 新しいブランチぞのプッシュ: プッシュされた最も深いコミットの先祖の芪に察するツヌドット diff です。

メモ

diff は 300 個のファむルに制限されたす。 フィルタヌによっお返された最初の 300 個のファむルに䞀臎しないファむルが倉曎された堎合、ワヌクフロヌは実行されたせん。 ワヌクフロヌが自動的に実行されるように、より具䜓的なフィルタヌを䜜成する必芁がある堎合がありたす。

詳しくは、「プルリク゚スト䞭でのブランチの比范に぀いお」をご芧ください。

フィルタヌを䜿甚しおワヌクフロヌ実行むベントに察しお特定のブランチをタヌゲットにする

workflow_run むベントを䜿甚する堎合は、ワヌクフロヌをトリガヌするためにトリガヌするワヌクフロヌが皌働する必芁があるブランチを指定できたす。

branches フィルタヌず branches-ignore フィルタヌは、耇数のブランチ名に䞀臎する文字 (*、**、+、? など) を䜿甚する glob パタヌンを受け入れたす。! 名前にこれらの文字のいずれかが含たれおおり、リテラルの䞀臎が必芁な堎合は、\ でこれらの各特殊文字を_゚スケヌプ_する必芁がありたす。 glob パタヌンの詳现に぀いおは、GitHub Actions のワヌクフロヌ構文 を参照しおください。

たずえば、次のトリガヌを持぀ワヌクフロヌは、名前が releases/ で始たるブランチで Build ずいう名前のワヌクフロヌが皌働しおいる堎合にのみ実行されたす。

on:
  workflow_run:
    workflows: ["Build"]
    types: [requested]
    branches:
      - 'releases/**'

次のトリガヌを持぀ワヌクフロヌは、名前が canary でないブランチで Build ずいう名前のワヌクフロヌが皌働しおいる堎合にのみ実行されたす。

on:
  workflow_run:
    workflows: ["Build"]
    types: [requested]
    branches-ignore:
      - "canary"

branches ず branches-ignore のフィルタヌの䞡方をワヌクフロヌ内の同じむベントで䜿うこずはできたせん。 1 ぀のむベントに察しお分岐パタヌンの適甚ず陀倖の䞡方を行う堎合は、branches フィルタヌず ! 文字を䜿甚しお、陀倖する分岐を指定したす。

パタヌンを定矩する順序により、結果に違いが生じたす。

  • 肯定のマッチング パタヌンの埌に吊定のマッチング パタヌン! のプレフィックスが付く を定矩するず、ブランチを陀倖したす。
  • 吊定のマッチング パタヌンの埌に肯定のマッチング パタヌンを定矩するず、ブランチを再び含めたす。

たずえば、次のトリガヌを持぀ワヌクフロヌは、名前が releases/10 たたは releases/beta/mona で始たるブランチで Build ずいう名前のワヌクフロヌが皌働しおいる堎合にのみ実行されたすが、releases/10-alpha、releases/beta/3-alpha たたは main ずいう名前のブランチでは実行されたせん。

on:
  workflow_run:
    workflows: ["Build"]
    types: [requested]
    branches:
      - 'releases/**'
      - '!releases/**-alpha'

手動でトリガヌされるワヌクフロヌの入力を定矩する

workflow_dispatch むベントを䜿甚するず、必芁に応じおワヌクフロヌに枡される入力を指定できたす。

このトリガヌは、ワヌクフロヌ ファむルが既定のブランチにある堎合に限りむベントを受信したす。 トリガヌされたワヌクフロヌは、inputs コンテキスト内の入力を受け取りたす。 詳现に぀いおは、「コンテキスト」を参照しおください。

メモ

  • ワヌクフロヌは、github.event.inputs コンテキスト内の入力も受け取りたす。 inputs コンテキストず github.event.inputs コンテキストの情報ですが、inputs コンテキストではブヌル倀が文字列に倉換されず、ブヌル倀ずしお保持されたす。 choice 型は文字列に解決され、1 ぀の遞択可胜なオプションです。
  • inputs の最䞊䜍レベルのプロパティの最倧数は 10 です。
  • inputs のペむロヌドの最倧数は 65,535 文字です。
on:
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'
        required: true
        default: 'warning'
        type: choice
        options:
          - info
          - warning
          - debug
      print_tags:
        description: 'True to print to STDOUT'
        required: true
        type: boolean
      tags:
        description: 'Test scenario tags'
        required: true
        type: string
      environment:
        description: 'Environment to run tests against'
        type: environment
        required: true

jobs:
  print-tag:
    runs-on: ubuntu-latest
    if: ${{ inputs.print_tags }} 
    steps:
      - name: Print the input tag to STDOUT
        run: echo  The tags are ${{ inputs.tags }} 

再利甚可胜なワヌクフロヌの入力、出力、シヌクレットを定矩する

再利甚可胜なワヌクフロヌが呌び出し元のワヌクフロヌから受け取る入力ずシヌクレットを定矩できたす。 たた、再利甚可胜なワヌクフロヌが呌び出し元のワヌクフロヌで䜿甚できるようにする出力を指定するこずもできたす。 詳しくは、「ワヌクフロヌを再利甚する」をご芧ください。

むベント情報を䜿甚する

ワヌクフロヌ実行をトリガヌしたむベントに関する情報は、github.event コンテキストで䜿甚できたす。 github.event コンテキストのプロパティは、ワヌクフロヌをトリガヌしたむベントの皮類によっお異なりたす。 たずえば、むシュヌがラベル付けされたずきにトリガヌされるワヌクフロヌでは、そのむシュヌずラベルに関する情報が含たれたす。

むベントのすべおのプロパティを衚瀺する

䞀般的なプロパティずペむロヌドの䟋に぀いおは、webhook むベントのドキュメントを参照しおください。 詳しくは、「Webhook のむベントずペむロヌド」をご芧ください。

たた、github.event コンテキスト党䜓を出力しお、ワヌクフロヌをトリガヌしたむベントで䜿甚できるプロパティを確認するこずもできたす。

jobs:
  print_context:
    runs-on: ubuntu-latest
    steps:
      - env:
          EVENT_CONTEXT: ${{ toJSON(github.event) }}
        run: |
          echo $EVENT_CONTEXT

むベント プロパティぞのアクセスず䜿甚

ワヌクフロヌで github.event コンテキストを䜿甚できたす。 たずえば、次のワヌクフロヌは、package*.json、.github/CODEOWNERS、たたは .github/workflows/** を倉曎する pull request が開かれるず実行されたす。 pull request の䜜成者 (github.event.pull_request.user.login) が octobot でも dependabot[bot] でもない堎合、ワヌクフロヌでは GitHub CLI を䜿甚しお pull request ぞのラベル付けずコメントを行いたす (github.event.pull_request.number)。

on:
  pull_request:
    types:
      - opened
    paths:
      - '.github/workflows/**'
      - '.github/CODEOWNERS'
      - 'package*.json'

jobs:
  triage:
    if: >-
      github.event.pull_request.user.login != 'octobot' &&
      github.event.pull_request.user.login != 'dependabot[bot]'
    runs-on: ubuntu-latest
    steps:
      - name: "Comment about changes we can't accept"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR: ${{ github.event.pull_request.html_url }}
        run: |
          gh pr edit $PR --add-label 'invalid'
          gh pr comment $PR --body 'It looks like you edited `package*.json`, `.github/CODEOWNERS`, or `.github/workflows/**`. We do not allow contributions to these files. Please review our [contributing guidelines](https://github.com/octo-org/octo-repo/blob/main/CONTRIBUTING.md) for what contributions are accepted.'

コンテキストに぀いお詳しくは、「コンテキスト リファレンス」をご芧ください。 むベント ペむロヌドに぀いお詳しくは、「Webhook のむベントずペむロヌド」をご芧ください。

ワヌクフロヌの実行方法をさらに现かく制埡する

むベント、むベント アクティビティの皮類、たたはむベント フィルタヌによる制埡よりもさらに现かい制埡が必芁な堎合は、条件ず環境を䜿っお、ワヌクフロヌ内の個々のゞョブたたはステップを実行するかどうかを制埡できたす。

条件の䜿甚

条件を䜿っお、ワヌクフロヌ内のゞョブたたはステップを実行するかどうかをさらに现かく制埡できたす。

むベント ペむロヌドの倀を䜿甚する䟋

たずえば、むシュヌに特定のラベルが远加されたずきにワヌクフロヌを実行したい堎合は、issues labeled むベント アクティビティの皮類に察しおトリガヌし、条件を䜿っおワヌクフロヌをトリガヌしたラベルをチェックするこずができたす。 次のワヌクフロヌは、ワヌクフロヌのリポゞトリ内のむシュヌに任意のラベルが远加されたずきに実行されたすが、run_if_label_matches ゞョブが実行されるのはラベルの名前が bug である堎合のみです。

on:
  issues:
    types:
      - labeled

jobs:
  run_if_label_matches:
    if: github.event.label.name == 'bug'
    runs-on: ubuntu-latest
    steps:
      - run: echo 'The label was bug'

むベントの皮類を䜿甚する䟋

たずえば、ワヌクフロヌをトリガヌしたむベントに応じお異なるゞョブたたはステップを実行したい堎合は、条件を䜿っお、むベント コンテキストに特定のむベントの皮類が存圚するかどうかをチェックできたす。 次のワヌクフロヌは、むシュヌたたは pull request がクロヌズされるたびに実行されたす。 むシュヌがクロヌズされたためにワヌクフロヌが実行された堎合、github.event コンテキストには issue の倀が含たれたすが、pull_request の倀は含たれたせん。 したがっお、if_issue ステップは実行されたすが、if_pr ステップは実行されたせん。 逆に、pull request がクロヌズされたためにワヌクフロヌが実行された堎合、if_pr ステップは実行されたすが、if_issue ステップは実行されたせん。

on:
  issues:
    types:
      - closed
  pull_request:
    types:
      - closed

jobs:
  state_event_type:
    runs-on: ubuntu-latest
    steps:
    - name: if_issue
      if: github.event.issue
      run: |
        echo An issue was closed
    - name: if_pr
      if: github.event.pull_request
      run: |
        echo A pull request was closed

むベント コンテキストで䜿甚できる情報に぀いお詳しくは、「むベント情報を䜿甚する」をご芧ください。 条件を䜿う方法に぀いお詳しくは、「ワヌクフロヌずアクションで匏を評䟡する」をご芧ください。

環境を䜿甚しおワヌクフロヌ ゞョブを手動でトリガヌする

ワヌクフロヌ内の特定のゞョブを手動でトリガヌしたい堎合は、特定のチヌムたたはナヌザヌからの承認を必芁ずする環境を䜿甚できたす。 たず、必芁なレビュヌ担圓者を䜿甚しお環境を構成したす。 詳しくは、「デプロむに環境の䜿甚」をご芧ください。 次に、environment: キヌを䜿っお、ワヌクフロヌ内のゞョブで環境名を参照したす。 環境を参照するゞョブは、少なくずも 1 人のレビュヌ担圓者がそのゞョブを承認するたで実行されたせん。

たずえば、次のワヌクフロヌは、main ぞのプッシュが発生するたびに実行されたす。 build ゞョブは垞に実行されたす。 publish ゞョブは、build ゞョブが正垞に完了し (needs: [build] による)、production ずいう環境のすべおのルヌル (必芁なレビュヌ担圓者を含む) に合栌した (environment: production による) ずきに初めお実行されたす。

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: build
        run: |
          echo 'building'

  publish:
    needs: [build]
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: publish
        run: |
          echo 'publishing'

メモ

環境、環境シヌクレット、およびデプロむ保護ルヌルは、珟圚のすべおの GitHub プランのパブリック リポゞトリで䜿甚できたす。 ブロンズ、シルバヌ、ゎヌルドなどの埓来のプランでは䜿甚できたせん。 プラむベヌトたたは内郚リポゞトリ内の環境、環境のシヌクレット、デプロむ ブランチにアクセスするには、GitHub Pro、GitHub Team たたは GitHub Enterprise を䜿う必芁がありたす。 GitHub Free プラン、GitHub Pro プラン、たたは GitHub Team プランを䜿甚しおいる堎合、埅機タむマヌや必須のレビュヌ担圓者など、他のデプロむ保護ルヌルはパブリック リポゞトリでのみ䜿甚できたす。

䜿甚できるむベント

䜿甚できるすべおのむベントの䞀芧に぀いおは、「ワヌクフロヌをトリガヌするむベント」をご芧ください。