GitHub Actions Workflowについて
GitHub Actionsでは複数のWorkflowファイルを連携することができます。
処理ごとにWorkflowファイルを用意し、それを再利用することが可能になります。
いくつかの例を紹介します。
例:バージョンナンバーを追加したあとにPico SDKでビルドを行う
Workflowファイルから別のWorkflowの動作を開始できるため、以下のようなファイルを用意しました。
トリガー条件を記述したファイルを1つだけ用意し、そこから別のファイルを呼び出します。
main.yml
.github/workflows/main.yml として以下のファイルを配置しました。
name: Workflow
on: push
jobs:
workflow-add-version:
name: Add Version
uses: ./.github/workflows/version.yml
secrets: inherit
workflow-build:
name: Pico SDK Build
needs: workflow-add-version
uses: ./.github/workflows/pico-sdk-build.yml
secrets: inherit
このファイルだけが push 条件で実行されます。
記述としては、バージョンナンバーを追加するジョブとPico SDKでビルドをする2つの内容になっています。
ここでポイントになるのは、「needs」での指定です。
各種Workflowは全部並列に動作します。
そのためバージョンナンバーを追加してそのファイルを前提にビルドを行いたい場合は、同時にWorkflowを動かされると不都合です。
ビルドで使用するWorkflowのジョブ設定にて「needs」に前提となる必要なジョブが指定できます。
よって、この記述の場合、「workflow-add-version:」ジョブで指定したバージョンナンバー追加の後、「workflow-build:」ジョブが実行されます。
「secrets: inherit」は呼び出し先でもシークレットが使用できるように念の為入れているだけです。
version.yml(バージョンナンバー追加)
.github/workflows/version.yml として以下のファイルを配置しました。
name: Add Version Number
on: workflow_call
env:
TZ: "Asia/Tokyo"
以下省略
詳細は以下のページを参考に。
ポイントとしては、「on: push」を記述せずに「on: workflow_call」に変更します。
このトリガー条件を指定すると他のWorkflowファイルから呼ばれることが可能になります。
pico-sdk-build.yml(Raspberry Pi Pico SDKビルド)
.github/workflows/pico-sdk-build.yml として以下のファイルを配置しました。
name: Pico SDK Build
on: workflow_call
env:
TZ: "Asia/Tokyo"
以下省略
詳細は以下のページを参考に。
ポイントとしては、「on: push」を記述せずに「on: workflow_call」に変更します。
このトリガー条件を指定すると他のWorkflowファイルから呼ばれることが可能になります。