wharfy 0.9 — sign が、実際に署名する
sign が、実際に署名する
工程は build → sign → release → publish → verify。これまで sign は状態を報告するだけで、何も署名しなかった。0.9 はその穴を prebuilt の CLI バイナリで埋める。sign: に identity を宣言すれば、wharfy がそれで macOS の Mach-O を codesign する。署名が、脇に置いたスクリプトではなくパイプラインの中に戻る。
prebuilt:
binaries:
- { os: darwin, arch: arm64, path: dist/app-darwin-arm64 }
sign:
identity: "Developer ID Application: Acme (TEAMID)"
# identity 無し → advisory。持ち込んだ署名済みバイナリを尊重する
signing (advisory; no identity configured — pre-signed binaries respected): darwin unsigned
# identity 設定 → wharfy が署名する
signed darwin (Developer ID Application: Acme (TEAMID)): 1 binary — checksums finalize at `wharfy release`
ローカル、あるいは CI
すでに手元にある identity を指定するだけ。wharfy は独自の identity 管理を持たない——既存の署名運用と衝突しない。
| どこで | identity |
|---|---|
| ローカル(証明書がキーチェーンにある) | sign.identity または WHARFY_SIGN_IDENTITY |
| CI(キーチェーンが無い) | 可搬 .p12 を WHARFY_SIGN_P12 + WHARFY_SIGN_P12_PASSWORD で |
.p12 を渡すと、wharfy は使い捨てのキーチェーンに import して署名し、そのまま削除する。秘密は環境変数からだけ受け取る——wharfy.yaml にも生成物にも書かない。
署名してから checksum
署名するとバイナリのハッシュが変わる。だから順序が要る。wharfy はstaged コピーを署名し——元のバイナリは触らない——署名後の実体を archive して checksum する。Formula やマニフェストの sha が、配られる実体と一致する。
- identity 無し → 何も署名せず、持ち込んだ署名済みバイナリをそのまま通す。
- 非 macOS で identity 設定 → 未署名を「署名済み」として配らず、はっきり失敗する。
notarize は要らない——自己署名で完結する。バンドル(0.8)は従来どおり relay で、wharfy は再署名しない。
入れ方
brew upgrade wharfy / scoop update wharfy / go install github.com/ShiroDoromoto/wharfy/cmd/wharfy@latest。Linux は apt / yum リポジトリから。