Github Actions Trigger Event
20176 ワード
Github Actionsのワークフローを作成する場合、
push
pull_request
PRはマークに関係なく、
上記の例に示すように、
workflow_dispatch
on
プロパティの値を使用してワークフローをトリガーするイベントを決定できます.このアクティビティのリストはActions Docs - events that trigger workflowsで見ることができますが、よく使われているものを整理したいと思います.push
これは最も一般的なアクティビティになります.タグをコミットまたはプッシュすると、ワークフローが実行されます.ちなみに、Pushイベントには、開発者がgit push
コマンドを使用してPushを行うだけでなく、PRを停止したときにコミットを終了することも含まれます.on:
push
前述したように、すべてのブール値とタグに対してpushイベントが発生すると、この操作がトリガーされます.
Filter
特定のスパナまたは特定のラベルのみをトリガーしたい場合は、フィルタを使用します.pushアクティビティには、以下の6つのフィルタがあります.
on:
push
branches
branches-ignore
tags
tags-ignore
paths
paths-ignore
branches & branches-ignore
# flow1.yml
on:
push:
branches:
- main
- mona/octocat
- releases/**
# flow2.yml
on:
push:
branches-ignore:
- dev
- releases/**-alpha
branches
は、トリガに含まれる分岐路を決定する.branches-ignore
逆に排除を決定したブレンチ.2つのフィルタは同時に使用できません.main
またはmona/octocat
dev
のように、正しいbrunch名を書くことができます.この場合、同じbrenchを正確に含むか排除する.releases/**
またはreleases/**-alpha
のように、Glob Patternを使用して複数のパターンをマッチングすることもできる.この場合、パターンに一致するブレンチが含まれるか、または除外される.on:
push:
branches:
- releases/**
- '!releases/**-alpha'
前述したように、branches
とbranches-ignore
を同時に使用することはできません.しかし、特定のPrefixを有するいくつかのブレンチを排除することが望ましいかもしれない.この場合、!
を使用することができる.上記の例では、releases/
で始まるbrenchを含むが、-alpha
で終わるbrenchを除く.!
を使用する場合は、!
を使用していないスパナを少なくとも1つ定義する必要があります.上記の例から- releases/**
文を削除すると、エラーが発生します.tags & tags-ignore
# flow1.yml
on:
push:
tags:
- releases-**
# flow2.yml
on:
push:
branches-ignore:
- test-**
tags
は、トリガに含めるタグを決定する.tags-ignore
は、逆に除外するタグを決定する.2つのフィルタは同時に使用できません.branches
、branches-ignore
と同様に、正しいラベル名を記入したりglobモードを使用したりすることができます.同様に、!
文を使用することもできます.on:
push:
branches:
- main
- mona/octocat
- releases/**
tags:
- releases-**
branches
シリーズのフィルターも上のように使えます.paths & paths-ignore
# flow1.yml
on:
push:
paths:
- '**.js'
# flow2.yml
on:
push:
paths-ignore:
- 'docs/**'
paths
およびpaths-ignore
は、ブール値またはマーカーを操作するフィルタではない.このフィルタは、ファイルのパスを操作するフィルタです.前述したように、paths
を**.js
と定義すると、プロジェクトに含まれる.js
ファイルが変更されると、ワークフローが実行されます.同様に、paths
とpaths-ignore
を同時に使用することはできず、!
構文を使用することができる.paths
シリーズのフィルターが上の写真のように動作していると理解できます.したがって、branches
またはtags
フィルタとともに使用される場合、トリガするには、両方の要件を満たす必要がある.pull_request
Pull Request、オープンまたはPRのHead Branch更新を開くとトリガーされます.ただし、Pull RequestでMerge Conflictが発生した場合、リクエストはトリガーされません.この場合、まずMergeConflictを解決します.on:
pull_request
pushの場合と同様に、フィルタを適用しない場合は、すべてのprを操作します.
Filter
特定のレンチだけをトリガしたい場合は、フィルタを使用します.pull requestイベントには、次の4つのフィルタがあります.
on:
pull_request
branches
branches-ignore
paths
paths-ignore
tags
およびtags-ignore
フィルタがない.残りの4つのフィルタの役割はPushイベントと同じです.Activity Type
on:
pull_request:
types: [opened, reopened]
PRにはActivity Typeが複数あります.PRまたはReopen、Head Branch更新を開くとトリガーされます.このopened
、reopened
、synchronize
はアクティブタイプで、別途指定しない場合はデフォルトで上記3種類をトリガとして使用します.上記の例に示すように、
opened
およびreopend
が指定されている場合、PRが再開されたときにのみトリガーされる.より多くのActivity Typeはevents that trigger workflow - pull_requestで確認できます.workflow_dispatch
これは、ワークフローを手動で実行できるトリガです.このイベントを使用すると、Github Actionsページで手動でワークフローを実行できます.Github CLIまたはGithub APIを使用して実行することもできます.ただし、Githubに登録されているメインブラウザには、対応するワークフローファイルが必要です.on:
workflow_dispatch
メインレンチに上のようにトリガをセットすると…
これにより、Actionsページでワークフローを手動で実行できます.
を運転するブルンジも選択できます.
inputs
workflow dispatchはinputsによってユーザに特定の値を提供することができる.on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
type: choice
options:
- info
- warning
- debug
tags:
description: 'Test scenario tags'
required: false
type: boolean
environment:
description: 'Environment to run tests against'
type: environment
required: true
name:
description: 'print name'
jobs:
log-the-inputs:
runs-on: ubuntu-latest
steps:
- run: |
echo "Log level: $LEVEL"
echo "Tags: $TAGS"
echo "Environment: $ENVIRONMENT"
echo "hello ${{ github.event.inputs.hello }}"
env:
LEVEL: ${{ github.event.inputs.logLevel }}
TAGS: ${{ github.event.inputs.tags }}
ENVIRONMENT: ${{ github.event.inputs.environment }}
上記のように様々なタイプの入力を定義できます.入力値は${{ github.event.inputs.<<input_id>>
とすることができる.
ビットのように値を入力できます.
入力値は、上記のようにワークフローで使用できます.
TMIが1つしか追加されていない場合、Booleanタイプは、BooleanではなくワークフローでStringとして表されます.すなわち、false
ではなく'false'
であり、true
ではなく'true'
の文字列である.使用時に注意して使用する.
workflow_run
他のワークフローの実行に関連付けられたイベント.指定したワークフローは、実行要求を受信または完了したときに実行されます.# flow1.yml
name: Workflow Test
~~
# flow2.yml
name: Workflow Test2
on:
workflow_run:
workflows: [ Workflow Test ]
上記の場合、Workflow Test
は、実行要求の受信時および実行完了時にWorkflow Test2
を実行する.on:
workflow_run:
workflows: [ Workflow Test, Lint Test ]
以上のように、複数のワークフローが指定されている場合、Workflow Test
またはLint Test
のワークフローが実行されたときにトリガーされます.# flow1.yml
name: flow1
# flow2.yml
name: flow2
on:
workflow_run:
workflows: [ flow1 ]
# flow3.yml
name: flow3
on:
workflow_run:
workflows: [ flow2 ]
上記の例に示すように、複数のワークフローを順次実行できます.ただし、これらのチェーンは最大3つまで接続できます.A -> B -> C -> D -> E -> F
というChainがあれば、BからFまでworkflow_run
を使うべきです.この場合、最初の3つのワークフローB、C、Dのみが実行され、E、Fは実行されません.
Filter
on:
workflow_run:
workflows: [Build]
types: [requested]
branches: [canary]
workflow runはFilterも使用できます.branches
とbranches-ignore
の2種類を使用できます.
Activity Type
Activity Typeには、上記の実行要求(requested
)と正常終了(completed
)の2種類があります.on:
workflow_run:
workflows: [ Workflow Test ]
types:
- completed
以上のようにtypes
プロパティとして指定できます.上記の例では、Workflow Test
の動作が完了するとトリガーされる.
requested
タイプを参照してください.ワークフローがre-run
の場合、トリガーされません.on:
workflow_run:
workflows: [Build]
types: [completed]
jobs:
on-success:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- run: echo 'The triggering workflow passed'
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- run: echo 'The triggering workflow failed'
completed
タイプには、通常の終了だけでなく、失敗またはキャンセルも含まれます.ただし、以前のワークフローが成功したときにのみ実行したい場合があります.この場合、github.event.workflow_run.conclusion
プロパティを使用できます.
上記の例では、ジョブは、if
およびgithub.event.workflow_run.conclusion
を使用して、以前のワークフローの終了状態に従って実行するかどうかを制御する.
あわただしく
上にまとめた4つのイベントのほかにも、たくさんのイベントが存在します.しかし、上記の4点さえ分かれば、私たちが必要とする多くの状況に適用することができます.
Reference
この問題について(Github Actions Trigger Event), 我々は、より多くの情報をここで見つけました
https://velog.io/@gidskql6671/Github-Actions-Trigger-Event
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
on:
workflow_dispatch
on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
type: choice
options:
- info
- warning
- debug
tags:
description: 'Test scenario tags'
required: false
type: boolean
environment:
description: 'Environment to run tests against'
type: environment
required: true
name:
description: 'print name'
jobs:
log-the-inputs:
runs-on: ubuntu-latest
steps:
- run: |
echo "Log level: $LEVEL"
echo "Tags: $TAGS"
echo "Environment: $ENVIRONMENT"
echo "hello ${{ github.event.inputs.hello }}"
env:
LEVEL: ${{ github.event.inputs.logLevel }}
TAGS: ${{ github.event.inputs.tags }}
ENVIRONMENT: ${{ github.event.inputs.environment }}
他のワークフローの実行に関連付けられたイベント.指定したワークフローは、実行要求を受信または完了したときに実行されます.
# flow1.yml
name: Workflow Test
~~
# flow2.yml
name: Workflow Test2
on:
workflow_run:
workflows: [ Workflow Test ]
上記の場合、Workflow Test
は、実行要求の受信時および実行完了時にWorkflow Test2
を実行する.on:
workflow_run:
workflows: [ Workflow Test, Lint Test ]
以上のように、複数のワークフローが指定されている場合、Workflow Test
またはLint Test
のワークフローが実行されたときにトリガーされます.# flow1.yml
name: flow1
# flow2.yml
name: flow2
on:
workflow_run:
workflows: [ flow1 ]
# flow3.yml
name: flow3
on:
workflow_run:
workflows: [ flow2 ]
上記の例に示すように、複数のワークフローを順次実行できます.ただし、これらのチェーンは最大3つまで接続できます.A -> B -> C -> D -> E -> F
というChainがあれば、BからFまでworkflow_run
を使うべきです.この場合、最初の3つのワークフローB、C、Dのみが実行され、E、Fは実行されません.Filter
on:
workflow_run:
workflows: [Build]
types: [requested]
branches: [canary]
workflow runはFilterも使用できます.branches
とbranches-ignore
の2種類を使用できます.Activity Type
Activity Typeには、上記の実行要求(
requested
)と正常終了(completed
)の2種類があります.on:
workflow_run:
workflows: [ Workflow Test ]
types:
- completed
以上のようにtypes
プロパティとして指定できます.上記の例では、Workflow Test
の動作が完了するとトリガーされる.requested
タイプを参照してください.ワークフローがre-run
の場合、トリガーされません.on:
workflow_run:
workflows: [Build]
types: [completed]
jobs:
on-success:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- run: echo 'The triggering workflow passed'
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- run: echo 'The triggering workflow failed'
completed
タイプには、通常の終了だけでなく、失敗またはキャンセルも含まれます.ただし、以前のワークフローが成功したときにのみ実行したい場合があります.この場合、github.event.workflow_run.conclusion
プロパティを使用できます.上記の例では、ジョブは、
if
およびgithub.event.workflow_run.conclusion
を使用して、以前のワークフローの終了状態に従って実行するかどうかを制御する.あわただしく
上にまとめた4つのイベントのほかにも、たくさんのイベントが存在します.しかし、上記の4点さえ分かれば、私たちが必要とする多くの状況に適用することができます.
Reference
この問題について(Github Actions Trigger Event), 我々は、より多くの情報をここで見つけました
https://velog.io/@gidskql6671/Github-Actions-Trigger-Event
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Github Actions Trigger Event), 我々は、より多くの情報をここで見つけました https://velog.io/@gidskql6671/Github-Actions-Trigger-Eventテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol