概要
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 点です。
- チェックが効かない — 定義ファイルを読み取れないので、actionlint は
build.yml 側の with: の内容も検証できません。入力名の打ち間違いや必須入力の渡し漏れがあっても報告されません
- レビューのノイズ — 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 を出します。
概要
action-c2a-build{,-win32}/action.ymlは、入力 (inputs) の定義すべてにtype:を書いています。type:はワークフロー側 (workflow_call) の入力では有効ですが、アクションの定義ファイルでは使えないキーです (アクションの入力で使えるのはdescription(必須) /required/default/deprecationMessageのみ)。このため actionlint がどちらのファイルも読み取れずエラーになります。対象は
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 点です。
build.yml側のwith:の内容も検証できません。入力名の打ち間違いや必須入力の渡し漏れがあっても報告されません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 を出します。