GitHub ActionsでComposite run steps actionが作れるようになりました。
これによってこれまでワークフローファイルに書いていたシェルスクリプトを細分化した、再利用可能なアクションとして用意して、ワークフローファイルを簡潔にすることができるようになります。

このComposite run steps actionですが、どうやって作るのかを把握するために、ドキュメントを参考にして実際に作成してみます。
Composite run steps actionを使ってアクションを作ってみる
GitHub Docsで複合実行ステップアクションの作り方が書かれているので、このドキュメントを参考にします。

リポジトリの初期化
まずはGitHub Actionを動かすリポジトリを作成します。
例として、hello-world-composite-run-steps-actionという名前のリポジトリを作ります。
$ mkdir hello-world-composite-run-steps-action
$ cd hello-world-composite-run-steps-action
$ git init .
次に goodbye.sh を作成します。goodbye.shの内容は次のechoです。
このシェルは再利用可能なアクションの中から実行します。
echo "Goodbye"
シェルを作成したら、実行権限を付与します。
$ chmod +x goodbye.sh
メタデータファイル(action.yml)を作成
次にリポジトリのルートディレクトリ直下に action.yml を作成します。
action.ymlはメタデータファイルと呼ばれ、この後で作成するワークフローファイルから呼び出されます。

name: 'Hello World'
description: 'Greet someone'
inputs:
who-to-greet: # id of input
description: 'Who to greet'
required: true
default: 'World'
outputs:
random-number:
description: "Random number"
value: ${{ steps.random-number-generator.outputs.random-id }}
runs:
using: "composite" # ①
steps:
- run: echo Hello ${{ inputs.who-to-greet }}.
shell: bash
- id: random-number-generator
run: echo "::set-output name=random-id::$(echo $RANDOM)"
shell: bash
- run: ${{ github.action_path }}/goodbye.sh # ②
shell: bash
action.ymlでは using に”composite”を指定します(①)。そして②で先程作成したgoodbye.shを呼び出します。
ワークフローファイル(.github/workflows/main.yml)の作成
ルートディレクトリ配下に .github/workflows を用意し、その中にmain.ymlを作成します。
on:
workflow_dispatch: # ①
name: Composite run steps action
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: A job to say hello
steps:
- uses: actions/checkout@v2
- id: foo
uses: ./ # ②
with:
who-to-greet: 'Mona the Octocat'
- run: echo random-number ${{ steps.foo.outputs.random-number }}
shell: bash
アクションをGitHub上で手動実行できるように、 workflow_dispatch を設定します(①)。
また、usesでは”{user}/{repository}@{label}”といった指定方法以外に、メタデータファイルのaction.ymlのディレクトリパスを指定することができます。今回はディレクトリパスを指定する方法でaction.ymlを参照しています(②)。
以上が用意できたらファイルをコミットし、リポジトリにプッシュします。
作成したアクションを実行して結果を確認する
作成したアクションは画像のように、リポジトリのActionsのワークフロー一覧画面でワークフローを選択した先の画面から手動で実行できます。

実行結果を見ると、action.ymlに書いた処理が実行されているのが確認できます。