PowerShell Local Resource Manager Part 12
pslrm-bump-action Part 6
krymtkts/pslrm-bump-action の開発をした。
自分で pslrm-bump-action を利用してる中で気づいたのだけど、 signed commit にし忘れてた。 このせいで signed commit しか受け付けない krymtkts/SnippetPredictor のような repo で merge できない。 (merge してもいいけどキレイにルールを守れなくてイヤ)
よって signed commit の対応を進めることにした。
これまで全然知らなかったが、 bot による commit に committer の署名情報などが含まれなかったら自動で署名検証されるらしい。
これを使うには git で操作せずに GitHub API で操作すれば良いとのこと。
以下の文書でそれに触れられてるのだけどわたしはよくわからなかったので AI に仕組みを説明してもらった。
とりあえず GitHub API で以下の流れを踏めば正しく Verified な commit となることを PowerShell runner で確認した。
GET /repos/{owner}/{repo}/git/commits/{parent_sha}- 親 commit の
tree.shaを取得する
- 親 commit の
POST /repos/{owner}/{repo}/git/trees- 親 tree を base_tree に指定する
- 更新後
psreq.lock.psd1を blob として上書きした新しい tree を作る
POST /repos/{owner}/{repo}/git/commits- 新しい tree SHA と親 commit SHA から commit を作る
- author / committer は指定しない
POST /repos/{owner}/{repo}/git/refs- bump branch がなければ
refs/heads/{branch}を作る
- bump branch がなければ
PATCH /repos/{owner}/{repo}/git/refs/heads/{branch}- bump branch があれば、新しい commit SHA へ
force: falseで更新する
- bump branch があれば、新しい commit SHA へ
しかし Windows PowerShell でだけどうしても詰まってしまって、すごく時間を浪費してしまった。
原因は GitHub API のために ConvertTo-Json を使って深い JSON を処理しようとしたところだった。
PowerShell だと詰まらないが Windows PowerShell では詰まってしまう。
Windows PowerShell でありがちなことなのでもっと早く気付けても良かったけど、初めて GitHub API を捏ねくったこともありバイアスで気づくのが遅くなった。練習不足やな。
とりあえずなんとか時間をかけてでも解決できて良かった。 PR は #9 。 この signed commit 版は 0.0.2 としてリリースした。
Release v0.0.2 · krymtkts/pslrm-bump-action
これでより使いやすい Action になったんじゃないかな。