create-github-app-tokenの バグを なおした
actions/create-github-app-tokenが2.0.4になったタイミングでCIが落ちるようになってしまった。
なんやかんやで直したので以下に備忘録を書く。
アプリにはちゃんと必要な権限ついてるし、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
stringThe 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となっていた。
これはenv
でINPUT_PERMISSION-HOGE
を設定すると同じ挙動になるのを確認できる。
結局のところ、環境変数からapiに投げるキーへの変換でダメになってたので直した。
actions/create-github-app-token#246
なお、この問題を踏んでたのはgithubで調べるかぎり世界で3人程度だったっぽい。