📂
GitHub の Reusable workflow で working-directory に変数を使う
やりたいこと
GitHub Actions の reusable workflow で,作業ディレクトリを入力変数で変えたい場合を考えます。
on:
workflow_call:
inputs:
workdir:
required: true
type: string
うまくいかない方法
ワークフロー全体のステップのデフォルト設定 defaults.run.working-directory
では,現時点ではコンテキストと式が許可されていません。
したがって,入力変数でディレクトリ名を受け取って上記に入れても動作しません。
defaults:
run:
working-directory: ${{ inputs.workdir }}
あるいはジョブ内のステップのデフォルト設定 jobs.<job_id>.defaults.run.working-directory
でも許可されていません。
jobs:
example:
defaults:
run:
working-directory: ${{ inputs.workdir }}
解決策
実はジョブのステップ定義 jobs.<job_id>.steps[*]
では working-directory
に式が使えるので,そこで入力変数を参照します。
jobs:
example:
steps:
- run: go test
working-directory: ${{ inputs.workdir }}
作業ディレクトリを変える必要のあるすべてのステップで記述しないといけないので面倒ですが,これで作業ディレクトリを変数とした reusable workflow を作ることができます。
Discussion