GitHub Actions:action.yml の「Unrecognized named-value」(「Failed to load」)
メッセージに出ているファイルは、ワークフローではなくアクション自身のメタデータです。runner は action.yml の中の ${{ }} をすべて解析し、そこのキーごとに使える文脈は少ししかありません。式が1つ違う場所にあるだけで(説明文の中のことが多いです)、アクションはまったく読み込めなくなります。
見え方
Download action repository 'octo-org/example-action@v1' (SHA:…) octo-org/example-action/v1/action.yml (Line: 77, Col: 18): Unrecognized named-value: 'github'. Located at position 1 within expression: github.workspace Failed to load octo-org/example-action/v1/action.yml
- ほかのリポジトリのアクションは「Set up job」で読み込まれるので、ジョブは最初のステップの前に失敗します。そのステップの
if:でスキップされるはずのときもです(envoy-ai ci-workflows #13)。 - ローカルのアクション(
uses: ./…)はそのステップが動くときに読み込まれるので、「Set up job」は通り、そのステップが失敗します(repo-platform #439)。 - 行と列は
action.ymlの中を指します。「position」は括弧の中の位置で、toJSON(steps)なら 8 です。関数は問題なく、stepsだけが使えないからです。
1. 説明文の中の式
runner のアクションのファイルのスキーマ(action_yaml.json)では、name・description・それぞれの入力と出力の説明は、文脈の無いただの文字列です。それでも runner はそこの ${{ }} を解析するので、どの文脈も失敗します:github・runner・job・steps・inputs・secrets・vars。たいていは使い方の例か、既定値の説明です。
- setup-trivy v0.3.0(2026年6月)は、入力の説明に
${{ runner.temp }}があり、どのワークフローでも読み込めませんでした。v0.3.1 で消しました。 - membrowse-action v1.2.16(10月20日)は、
source_rootの説明に${{ github.workspace }}がありました。55分後の v1.2.17 で$GITHUB_WORKSPACEに置き換え(#191)、meshtastic firmware などは版を固定してしのぎました。 - Khan/actions v4.0.0 は、
varsを使う既定値を説明の中にそのまま書いていました(#466)。 - setup-tbzl v1.0.0 は、例の中に
${{ steps.x.outputs.bazelrc }}があり、その1行下のvalue:では同じ書き方が正しいのでした(#15)。
アクションを作っている側なら、括弧を付けずに名前で書くか(github.workspace、$GITHUB_WORKSPACE、「ジョブの状態」)、例を README に移します。使っているだけなら、変更の前の版か、直った版に固定します。v1 のような動くタグは、作者がタグを動かせば戻ります。
2. 複合アクションの中の vars と secrets
文脈のリファレンスには「The secrets context is not available for composite actions due to security reasons.」(セキュリティのため、複合アクションでは secrets の文脈は使えない)とあります。vars も action_yaml.json のどの文脈の一覧にもありません。共有のアクションの ${{ vars.GHA_RUNNER }} は呼び出し側を「Set up job」で止め(worker-actions #278)、${{ vars.AGENT_DEBUG == 'true' }} はローカルのアクションを読み込めなくしました(agentic-deployment-template #44)。入力として受け取り、ワークフローから渡します:
# action.yml
inputs:
debug:
description: Print the full output
default: "false"
token:
description: Token for the deploy API
required: true
runs:
using: composite
steps:
- run: ./deploy.sh
shell: bash
env:
DEBUG: ${{ inputs.debug }}
TOKEN: ${{ inputs.token }}
# ワークフロー
- uses: octo-org/example-action@v1
with:
debug: ${{ vars.AGENT_DEBUG }}
token: ${{ secrets.DEPLOY_TOKEN }}
3. キーごとに読める文脈
action_yaml.json から:
inputs.<id>.default:github・strategy・matrix・job・runnerとhashFiles()。inputs・steps・envは使えないので、ある入力の既定値をほかの入力から作ることはできません。- 複合アクションのステップの
run・shell・name・working-directory・env・with・if:github・inputs・strategy・matrix・steps・job・runner・envとhashFiles()。ifではさらにsuccess()・failure()・always()・cancelled()。 - 複合アクションのステップの
usesとid:何も使えません。uses: ${{ inputs.action }}は動きません。 outputs.<id>.value:github・strategy・matrix・steps・inputs・job・runner・env。- Docker のアクションの
runs.argsとruns.env:inputsだけ。そこに${{ env.ACTIONS_ID_TOKEN_REQUEST_URL }}を書いた lgty-action は、どこで使っても失敗しました(#20)。 name・description・using・main・image:何も使えません。
リリースの前に見つける
- アクション自身のリポジトリの CI で、
uses: ./で動かします。同じようにファイルが読み込まれますが、実際に動くステップの分だけです。if: falseでは何も読み込まれません(repo-platform #439)。 - すべての
action.ymlを読み、どの説明に${{があっても失敗するテストを足します(dd-ci-standards #64)。YAML として読めば、1行ずつの検索では漏れる複数行の説明も拾えます。
見分け方
- 「Invalid workflow file」と「Unrecognized named-value」が出て、実行にジョブが1つも無い:式はワークフローの中にあります(「Invalid workflow file」)。
- 「Unable to resolve action」:アクションそのものが見つかりませんでした(「Unable to resolve action」)。
- 「Required property is missing: shell」のあとの「Failed to load」:
runのある複合アクションのステップにはshellが要ります。
失敗したジョブを IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Invalid workflow file」 · 「Unable to resolve action」 · 「Unexpected input(s)」の警告 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English