【github action】再利用可能なワークフローとは??
github actionの勉強中
「再利用可能なワークフロー」
という単語?が出てきた
なんのことだろう
調べると、どうも一度作ったワークフロー(ymlファイル)
を別のワークフローから呼び出して使えるという便利機能のことらしい?
早速やってみた
・元のファイル・・・hoge.yml
・呼び出すファイル・・・call.yml
hoge.yml
name: 再利用のテスト
on: [push]
jobs:
call_test:
uses: ./.github/workflows/call.yml
call.yml
name: call test
on:
workflow_call:
jobs:
echo_test:
runs-on: ubuntu-latest
steps:
- name: test 再利用
run: echo '再利用されました'
これを実行してみると
githubの管理画面から確認すると
Run echo ‘再利用されました’
再利用されました
成功!!
呼び出したファイルのechoが実行されているのがわかる
これはわかりやすく言うと、関数のようなものと考えるとわかりやすい
関数と同じように、呼び出してどこからでも、何回でも再利用できる
●絶対パスで呼び出す
同じworkflow内なら
uses: ./.github/workflows/call.yml
で呼び出せるが、別のリポジトリのymlを使いたい時は別の書き方になる
書き方は
【githubアカウント】/【リポジトリ名】/.github/workflows/【ymlファイル名】@【ブランチ名】
となります。
私のgithubアカウントは:kyoka-kurimoto
リポジトリ名は:test
ymlファイル名は:call.yml
branch名は:main
なので、呼び出すときは
uses: kyoka-kurimoto/test/.github/workflows/call.yml@main
こうなります。
これを実際にpushしてみると
Run echo ‘再利用されました’
再利用されました
成功!!
●引数を渡してみる
再利用できるワークフローは関数と同じように引数を渡す事が出来ます。
試しに、「猫の名前」を引数として渡してみます。
hoge.yml
name: 再利用のテスト
on: [push]
jobs:
call_test:
uses: kyoka-kurimoto/test/.github/workflows/call.yml@main
with:
cat_name: "タマ"
call.yml
name: call test
on:
workflow_call:
inputs:
cat_name:
required: true
type: string
jobs:
echo_test:
runs-on: ubuntu-latest
steps:
- name: test 再利用
run: echo "再利用されました。猫の名前は${{ inputs.cat_name }}です。"
pushしてみると
Run echo “再利用されました。猫の名前はタマです。”
再利用されました。猫の名前はタマです。
成功!!
引数を渡す時は
with:
cat_name: "タマ"
withを付けて、引数名と値を入れる
引数を受け取る時は
inputs:
cat_name:
required: true
type: string
inputsの後に、受け取る引数名を入れて、requiredで必須かどうか、typeで型を指定する
あとは表示したい箇所に${{ inputs.cat_name }}
と書くと、引数の値が表示される
これは環境別の設定ファイルを作る時にかなり使えそう

コメント