GitHubActionsでReusableWorkflowを使おうとしたときに`Can't find 'action.yml', 'action.yaml' or 'Dockerfile'`エラーが出たときの対処法
はじめに
先日、GitHubActionsでReusableWorkflowを使おうとしたときに、以下のエラーが出た。
Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '/home/runner/work/my-project/my-project/.github/workflows/some-action.yml'. Did you forget to run actions/checkout before running your local action?
原因自体は大したことはなかったが、構文の理解が足りていないところがあったので残しておく。
問題のワークフロー
自分のワークフローは以下のようなものだった。
jobs:
...some jobs...
notify:
needs: deploy
runs-on: ubuntu-latest
steps:
- uses: ./.github/workflows/notify.yml
これを実行したときに上記のエラーが出た。エラーの中にDid you forget to run actions/checkout before running your local action?
とあったので素直にactions/checkout
を追加してみた。
jobs:
...some jobs...
notify:
needs: deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/workflows/notify.yml
しかし、これでも同じエラーが出てワークフローは失敗した。
対処法
エラーの理由は、ReusableWorkflowがstep
の中からではなくjob
の中で直接呼び出す必要がある、というものだった。構文としては、ReusableWorkflowを呼び出すuses
はjobs.<job_id>.uses
として使用する必要がある。
公式のドキュメントはこちら。
修正後のワークフローは以下となる。
jobs:
...some jobs...
notify:
needs: deploy
uses: ./.github/workflows/notify.yml
これで正常にワークフローが実行されるようになった。
おわり
そもそも今回のエラーの内容としてはCompositeActionの設定ミスを前提としたものなのだろう。そのため、エラーを読んだだけではすぐに解決できなかった。
しっかり構文を把握してからワークフローを組むようにしたい。