wharfy 0.19.0 — 手元の資格情報を CI へ、配った先は実体で確認
手元の資格情報を、そのまま CI に渡せます
wharfy auth <kind> --print は、預けた資格情報を wharfy 自身が読むのと同じ経路で解いて出します。
wharfy auth fury --print | gh secret set PACKAGE_REPO_TOKEN
キーチェーンに入っている値は、取り出してそのまま使えるとは限りません。保存の都合で包まれた形に なっていることがあり、それを CI のシークレットに登録すると、何も言わずに 401 になります。 トークンが違うのかアカウント名が違うのかも分からないまま、原因を探すことになります。
標準出力に出るのは値だけです。それ以外の表示は標準エラーへ回すので、パイプに混ざりません。
--json とは併用できません。プログラムから読める出力に秘密を載せると、それを読むエージェントの
文脈に残ります。
wharfy secrets は、runner に要るツールも言います
トークンが揃っていても、runner にビルドのツールが無ければ落ちます。何を入れるかも secrets が出します。
$ wharfy secrets
tools wharfy shells out to (they must be on PATH wherever wharfy runs):
✗ goreleaser cross-compile, archive and package the Go build path — build / release / publish shell out to it (BYO inputs, prebuilt: / bundle:, do not need it)
go install github.com/goreleaser/goreleaser/v2@latest # or: uses: goreleaser/goreleaser-action@v6 with: {install-only: true}
持ち込みバイナリ(prebuilt: / bundle:)で配るなら要りません。それも含めて判定します。
上げただけで配れていない apt / rpm を、publish が見つけます
アップロードが成功しても、利用者がまだ入れられないことがあります。しかも応答は 200 なので、
配布者からは見えません。
| 起きること | 見え方 |
|---|---|
| hosted repo の索引生成に数分かかる | しばらく 404。待てば直る |
| fury は受け取ったパッケージを既定で非公開として扱う | ダッシュボードで公開に切り替えるまで、永久に配れない |
publish は書いた直後に公開側の索引を引き、そのバージョンが出ていなければ pkg_not_indexed で警告します。
アップロード自体は成功しているので、失敗にはしません。verify も、apt/rpm でパッケージが
見つからないときは「壊れた」ではなく「索引待ち、あるいは非公開のまま」を先に言います。
ローカルの記録が無くても verify できます
verify は配った記録(.wharfy/state.json)を基点にしていました。記録はローカルの生成物なので、
別のジョブにも、まっさらな clone にも渡りません。checkout して verify を叩くだけの workflow は、
ほとんどのチャネルが skipped に落ちて、実質何も確かめられませんでした。
確かめるバージョンの決め方が、記録に限らず順に落ちるようになりました。
| 順 | 基点 |
|---|---|
| 1 | --version <v> で名指し |
| 2 | そのチャネルの publish 記録 |
| 3 | チャネルの実体(GitHub Release の最新) |
| 4 | git の直近タグ |
記録が無くても、HEAD がタグより進んでいても、配ったバージョンを確かめられます。
$ wharfy verify
✓ verified homebrew; partial releases, script, goinstall, apt, rpm; skipped scoop
直したこと
- 同じタグで release をやり直すと、必ず落ちていました — 同名アセットのアップロードが
422 already_existsになっていました。publish が途中で失敗したときに全体を回し直したくても、 手前の release が落ちるので publish まで届かない。GitHub Release を手で消してから やり直すしかありませんでした。同じタグで何度でも実行できます。
入れ方
brew upgrade wharfy / scoop update wharfy / go install github.com/ShiroDoromoto/wharfy/cmd/wharfy@latest。Linux は apt / yum リポジトリから。