Skip to content

action-c2a-build{,-win32}/action.yml: inputs use type:, which is invalid in action metadata, so actionlint cannot parse it #131

Description

概要

action-c2a-build{,-win32}/action.yml は、入力 (inputs) の定義すべてに type: を書いています。type: はワークフロー側 (workflow_call) の入力では有効ですが、アクションの定義ファイルでは使えないキーです (アクションの入力で使えるのは description (必須) / required / default / deprecationMessage のみ)。このため actionlint がどちらのファイルも読み取れずエラーになります。

$ actionlint   # v1.7.12
build.yml:89:15: could not parse action metadata in "<repo>/action-c2a-build": line 7: unexpected key "type" for definition of input "reviewdog_filter_mode" [action]
build.yml:142:15: could not parse action metadata in "<repo>/action-c2a-build-win32": line 7: unexpected key "type" for definition of input "cmake_flags" [action]

対象は action-c2a-build の 13 入力と action-c2a-build-win32 の 8 入力で、全部に type: があり description: は 1 つもありません (type: string × 18、type: boolean × 3)。アクションを切り出した 80a914f (2023-05-22) 以降、当初から入っています。

なおエラーは、問題のある action.yml ではなく、そのアクションを呼んでいる build.yml の uses: の行に報告されます。メッセージが挙げる入力名も 1 つだけですが、実際は全入力が該当します。

何が問題か

GitHub はアクションの定義ファイルの知らないキーを無視するので、動作自体には影響しません。そのため気付かれませんでした。実害は 2 点です。

  1. チェックが効かない — 定義ファイルを読み取れないので、actionlint は build.yml 側の with: の内容も検証できません。入力名の打ち間違いや必須入力の渡し漏れがあっても報告されません
  2. レビューのノイズ — reviewdog の filter_mode の既定値が file (変更したファイル内の指摘は、その行が差分に含まれていなくてもすべて報告する) なので、アクションを触っていない PR でも build.yml を変更すると毎回この 2 件が付きます (fail_level の既定値が none なので CI のチェックは成功のままです)

#130 とは無関係な既存の問題です

#130 のレビュー中に見つかりましたが、#130 が原因ではありません。変更していない main で actionlint v1.7.12 を実行すると、同じ 2 件が同じ位置 (build.yml:89:15 / 142:15) に出ます (#130 の変更はこの周辺で行数が増減しないため、位置がずれることすらありません)。どちらの action.yml も #130 の変更対象に入っていません。#130 は上の filter_mode: file の動作によって、これらを表に出しただけです。

修正案

type: <...> を、実際の説明文を書いた description: に置き換える。

21 箇所すべてを置き換えるとリポジトリ全体に対する actionlint v1.7.12 がエラーなしになり、定義ファイルが読み取れるようになった後も新しい指摘は出ない (= 既存の with: は入力定義と合っている) ことを確認済みです。

よろしければ PR を出します。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions