Lesstep
GitHub Actions・2026年11月3日に確認

GitHub Actions:「Invalid workflow file」

GitHub がワークフローのファイルを読めなかったので、そこからジョブを1つも始めなかった、という意味です(「ワークフローのファイルが正しくない」)。どこか1か所の間違いでファイル全体が拒まれ、メッセージの行とは関係の無いジョブも含めて、そのファイルのジョブはすべて止まります。リポジトリのほかのワークフローのファイルには影響しません。

見え方

メッセージと、直すところ

Unrecognized named-value: 'secrets'

9月のリリースのワークフローから(TimoDesk #44):

Invalid workflow file
(Line: 52, Col: 13): Unrecognized named-value: 'secrets'.
Located at position 1 within expression: secrets.KEYSTORE_BASE64 != ''

GitHub のドキュメントには、シークレットは if: の条件で直接は参照できない、とあります。secrets を使えるジョブの env で判定しておき、その変数を見ます:

jobs:
  release:
    runs-on: ubuntu-latest
    env:
      HAS_KEYSTORE: ${{ secrets.KEYSTORE_BASE64 != '' }}
    steps:
      - name: Sign
        if: env.HAS_KEYSTORE == 'true'
        run: ./sign.sh

ほかのキーでの Unrecognized named-value・function

キーごとに使えるコンテキストと関数が決まっていて、GitHub のコンテキストのリファレンスの「Context availability」の表に並んでいます。よく出るのは次の2つです:

Unexpected symbol

steps.plan.outputs.3dsx == 'true' での Unexpected symbol: '3dsx':ドットのあとの名前は数字で始められません。この例では、出力の名前を want_3dsx に変えて直しています(3ds-GBabe #2)。

Unexpected value '...'

キーが、それを受け付けない場所にあります。インデントのせいのことがよくあります。Unexpected value 'schedule' は、on: の下に書くべき schedule: をジョブの中に書いていたためでした(ChiaEngine #96)。

再利用可能なワークフローを呼ぶジョブ(uses: ./.github/workflows/x.yml)に書けるキーは、name・uses・with・secrets・strategy・needs・if・concurrency・permissions・cache-mode だけです。runs-on・env・steps・timeout-minutes は、呼ばれる側のワークフローのジョブに書きます。あるプロジェクトのリリースのワークフローは、そうしたジョブに timeout-minutes を足したところでジョブを作らなくなりました(openchamber #118)。

'with' is already defined

1つのブロックに同じキーが2回あります。たとえば同じステップに2つ目の with: や env: がある場合です(hisabkikitab #16)。1つにまとめます。

You have an error in your yaml syntax on line N

ファイルがそもそも YAML として正しくありません。よくあるのは、run: | の中のテキストが、ヒアドキュメントの本文のように0列目から始まっている場合です。そこでブロックが終わってしまい、YAML は次の行を新しいキーとして読みます(cornucopia #3688)。その行もブロックのほかの行と同じだけ字下げします。シェルに渡る前に YAML がその字下げを取り除くので、ヒアドキュメントはそのまま動きます。

The nested job is requesting ..., but is only allowed ...

The workflow is not valid. .github/workflows/nightly.yml (Line: 63, Col: 3): Error calling workflow '...'. The nested job 'matrix' is requesting 'id-token: write', but is only allowed 'id-token: none'.

呼ばれたワークフローは、呼んだ側から受け取る GITHUB_TOKEN の権限を下げることはできても、上げることはできません。また permissions のブロックに書かなかった権限は none になります。呼ぶ側のジョブの permissions に、その権限を足します。あるリリースは、そうしたジョブから contents: write を外し、contents: read を足し忘れて壊れました(xlq #145)。この場合の実行は、ジョブ0本の失敗でなく「Startup failure」で終わり、スケジュールの実行は毎晩始まっては失敗し続けます(langwatch #9187)。

push の前に見つける

actionlint(v1.7.12)は、手元のマシンでも CI でもワークフローのファイルを検査できます。上の間違いの多くを見つけます。たとえば context "secrets" is not allowed here や unexpected key "schedule" for "job" section です。ただ、呼ばれるワークフローが何を要るかは知らないので、権限のエラーは GitHub でしか分かりません。検査は専用のワークフローのファイルから動かします。壊れたファイルの中の検査のジョブは始まらないからです。

name: Lint workflows
on: [push, pull_request]
jobs:
  actionlint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Check workflow files
        run: |
          bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
          ./actionlint -color
        shell: bash

見分け方

失敗した実行を IntelliJ IDEA から見るなら

Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出るので、ジョブ0本で失敗した実行にも作業しているその場で気づけます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。

GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:「Unable to resolve action」 · 「Resource not accessible by integration」 · workflow_dispatch のトリガーが無い · 「Unexpected input(s)」の警告 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English