■ はじめに
今回は、Github Actions の ワークフロー実行 の行う・行わないを制御するために必要な扱う。
目次
【1】needs 1)needs.<job_id>.result 2)needs.<job_id>.outputs.<output name> 【2】if 【3】on 1)push 2)workflow_run / workflow_call 3)workflow_dispatch 4)schedule 5)pull_request
【1】needs
* Job依存を指定できる => 指定した Job の後に実行される
例
jobs: job1: runs-on: ubuntu-latest steps: - run: ./job1.sh job2: needs: job1 # job2 needs job1 # => この job2 は、 job1 が必要です # => job2実行は、job1 実行後に行われる runs-on: ubuntu-latest steps: - run: ./job2.sh
1)needs.<job_id>.result
* 依存Jobの処理結果を保持 * 取りうる値は、success, failure, cancelled, skipped.
https://docs.github.com/en/actions/learn-github-actions/contexts#needs-context
job-main: name: Sample Job runs-on: ubuntu-latest needs: [sub-job1, sub-job2, sub-job3] if: | always() && needs.sub-job1.result == 'success' && # ★注目★ (needs.sub-job2.result == 'success' || needs.sub-job2.result == 'skipped') && (needs.sub-job3c.result == 'success' || needs.sub-job3.result == 'skipped')
2)needs.<job_id>.outputs.
* 依存Jobのoutputsの各Outputを保持
【2】if
* if [条件] で、[条件] が真になった場合に実行する
https://docs.github.com/ja/actions/learn-github-actions/expressions#status-check-functions
* 詳細は、以下の関連記事を参照のこと
Github Actions ~ if ~
https://dk521123.hatenablog.com/entry/2024/03/11/000000
【3】on
* Githubイベント(push/pull_request etc)をハンドリングしてくれる * 大きく分けて、以下の4種類。 [1] Githubイベント [2] 時刻指定 [3] 手動実行 [4] ワークフロー依存
主なGithubイベント
https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows
イベント | 説明 | memo |
---|---|---|
push | リモートリポジトリへpush時 | 特定のbranch/path/tagなどを指定することも可能 |
pull_request | プルリクエスト作成時 | |
deployment | デプロイ時 | |
release | リリース時 | |
workflow_run | ワークフローの実行時 | 前ワークフローの完了後に次のワークフローが開始 |
workflow_call | ワークフロー呼び出し時 | |
workflow_dispatch | ワークフロー手動実行 | |
schedule | cronによる定期実行 |
1)push
主なプロパティ
* path : 対象パスのみ実行 * paths-ignore : 対象パスは除外(無視)
例:path / paths-ignore
on: push: paths: # JavaScript ファイル (.js) をプッシュするたびに実行 - '**.js' paths-ignore: # 以下は除外 - 'docs/**' - '.github/workflows/**'
2)workflow_run / workflow_call
* 詳細は、以下の関連記事を参照のこと
Github Actions ~ workflow_run / workflow_call ~
https://dk521123.hatenablog.com/entry/2024/02/14/232546
例
on: workflow_run: workflows: [Build] # Build という名前のワークフローが実行 types: [completed] # completed (完了したら) branches: [canary] # 名前が canary のブランチ
3)workflow_dispatch
* ワークフロー手動実行 => 詳細は、以下の関連記事を参照のこと
Github Actions ~ workflow_dispatch / 手動実行 ~
https://dk521123.hatenablog.com/entry/2024/03/12/012953
4)schedule
* 時刻指定 * cronによる定期実行
5)pull_request
* プルリクエスト時に発行 => 詳細は、以下の関連記事を参照のこと
Github Actions ~ pull_request / pull_request_target ~
https://dk521123.hatenablog.com/entry/2024/04/10/152101
関連記事
Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Github Actions ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/04/142835
Github Actions ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/06/16/151443
Github Actions ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/12/22/195715
Github Actions ~ if ~
https://dk521123.hatenablog.com/entry/2024/03/11/000000
Github Actions ~ エラー処理 / continue-on-error ~
https://dk521123.hatenablog.com/entry/2024/01/01/232057
Github Actions ~ workflow_dispatch / 手動実行 ~
https://dk521123.hatenablog.com/entry/2024/03/12/012953
Github Actions ~ workflow_run / workflow_call ~
https://dk521123.hatenablog.com/entry/2024/02/14/232546
Github Actions ~ pull_request / pull_request_target ~
https://dk521123.hatenablog.com/entry/2024/04/10/152101
Github Actions ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2023/12/21/155224
Github Actions ~ 外部シェルスクリプト実行 ~
https://dk521123.hatenablog.com/entry/2024/01/19/003044
Github Actions ~ 設定値を切り替えることを考える ~
https://dk521123.hatenablog.com/entry/2024/02/18/232926
GitHub CLI ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/02/17/233836