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ファイルから呼ばれることが可能になります。