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(キーチェーンが無い) 可搬 .p12WHARFY_SIGN_P12 + WHARFY_SIGN_P12_PASSWORD

.p12 を渡すと、wharfy は使い捨てのキーチェーンに import して署名し、そのまま削除する。秘密は環境変数からだけ受け取る——wharfy.yaml にも生成物にも書かない。

署名してから checksum

署名するとバイナリのハッシュが変わる。だから順序が要る。wharfy はstaged コピーを署名し——元のバイナリは触らない——署名後の実体を archive して checksum する。Formula やマニフェストの sha が、配られる実体と一致する。

notarize は要らない——自己署名で完結する。バンドル(0.8)は従来どおり relay で、wharfy は再署名しない。

入れ方

brew upgrade wharfy / scoop update wharfy / go install github.com/ShiroDoromoto/wharfy/cmd/wharfy@latest。Linux は apt / yum リポジトリから。