okaryo.log

GitHubActionsでReusableWorkflowを使おうとしたときに`Can't find 'action.yml', 'action.yaml' or 'Dockerfile'`エラーが出たときの対処法 | okaryo.log

GitHubActionsでReusableWorkflowを使おうとしたときに`Can't find 'action.yml', 'action.yaml' or 'Dockerfile'`エラーが出たときの対処法

    #GitHubActions#GitHub#CI/CD

はじめに

先日、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を呼び出すusesjobs.<job_id>.usesとして使用する必要がある。

公式のドキュメントはこちら。

修正後のワークフローは以下となる。

jobs:
  ...some jobs...

  notify:
    needs: deploy
    uses: ./.github/workflows/notify.yml

これで正常にワークフローが実行されるようになった。

おわり

そもそも今回のエラーの内容としてはCompositeActionの設定ミスを前提としたものなのだろう。そのため、エラーを読んだだけではすぐに解決できなかった。

しっかり構文を把握してからワークフローを組むようにしたい。


関連記事
最新記事
プロモーション

This site uses Google Analytics.