create-github-app-tokenのバグをなおした


actions/create-github-app-tokenが2.0.4になったタイミングでCIが落ちるようになってしまった。

nur-packages issue #86

なんやかんやで直したので以下に備忘録を書く。

アプリにはちゃんと必要な権限ついてるし、2.0.3までは動いていたので、なにかが2.0.4で変わったことになる。

調べてみたところ、アプリに全ての権限をつけても422になってしまったので、権限が足りないという訳ではなさそう。

最小構成を作ってみるとpermission-pull-requestsを指定するかどうかで挙動が変わっているようだった。

ここで、2.0.4のdiffをみてみるとactionsの引数でpermission-pull-requestsを指定すると環境変数INPUT_PERMISSION-PULL-REQUESTSになるようだった。

これは公式のドキュメントにも書かれている変換方式である。

GitHub Actions metadata syntax docs

For example, if a workflow defined the num-octocats and octocat-eye-color inputs, the action code could read the values of the inputs using the INPUT_NUM-OCTOCATS and INPUT_OCTOCAT-EYE-COLOR environment variables.

これをactionsが解釈するときにtoLowerCase()しかしてないので、pull-requestsというキーで問い合わせしてる。

get-permissions-from-inputs.js#L13

これはsnapshotの変更からも分かる。

APIのドキュメント を見ると以下のようにかかれている。

pull_requests string

The level of permission to grant the access token for pull requests and related comments, assignees, labels, milestones, and merges.

Can be one of: read, write

pull_requestsを予期してるのにpull-requestsを投げているので、存在しないキーの確認となって422となっていた。

これはenvINPUT_PERMISSION-HOGEを設定すると同じ挙動になるのを確認できる。

結局のところ、環境変数からapiに投げるキーへの変換でダメになってたので直した。

actions/create-github-app-token#246

なお、この問題を踏んでたのはgithubで調べるかぎり世界で3人程度だったっぽい。