wharfy 0.21.0 — verify が、配ったチャネルを全部見に行きます
wharfy verify が飛ばしていたチャネルは、もうありません。
飛ばしていたチャネルを、実体で確かめます
verify は homebrew・releases・script・apt・rpm・goinstall しか見ておらず、残りは
「まだ扱えない」として飛ばしていました。飛ばしたチャネルは検証結果に影響しないので、tap に
cask が書かれていなくても、レジストリからイメージが消えていても、他のチャネルが通っていれば
検証全体は成功として通っていました。壊れたまま配っていることに気づけるのは、利用者が入れられなかったときでした。
これらのチャネルから入れるには macOS・Windows・Docker・Arch が要ります。ただ、配っているもの 自体は HTTP で読めるので、そこを見ます。
| チャネル | 見に行く先 |
|---|---|
cask |
tap の cask(バージョンが合うか) |
scoop |
bucket の manifest(バージョンが合うか) |
container |
レジストリのイメージのタグと :latest |
aur |
AUR のパッケージ(バージョンが合うか) |
winget |
microsoft/winget-pkgs の manifest |
homebrew-core |
homebrew-core の formula(バージョンが合うか) |
変更前
$ wharfy verify --version 1.2.0
✗ nothing to verify: skipped cask, container, winget
! nothing_to_verify: no channel in wharfy.yaml could be verified
publish a channel that verify covers, or check why every channel was skipped
変更後
$ wharfy verify --version 1.2.0
✗ failed cask, container; partial winget
! verify_failed: the expected version is not on the tap
re-publish to restore the cask
! verify_failed: the expected tag is not in the registry
re-publish to push the image; `docker pull ghcr.io/acme/demo:1.2.0` is a 404 for users
⚠ gated_pending: winget 1.2.0 is not in microsoft/winget-pkgs yet …
next:
wharfy publish cask --yes # re-publish cask to fix what verify found
wharfy publish container --yes # re-publish container to fix what verify found
審査待ちは、成功にも失敗にもしません
winget と homebrew-core は、提出しても届くとは限りません。利用者に届くのは Microsoft や
Homebrew のメンテナがマージした manifest / formula で、そこを見ます。まだマージされていなければ
partial と警告で、失敗にはしません。マージはレビュアの判断で、配布元にできるのは待つことだけです。
$ wharfy verify --version 1.2.0
✓ partial winget
⚠ gated_pending: winget 1.2.0 is not in microsoft/winget-pkgs yet: no manifests/a/acme/demo/1.2.0/acme.demo.yaml — `winget install acme.demo` still serves the previous version (the submission is merged by Microsoft, not by wharfy)
古いバージョンのまま止まっていれば、homebrew-core still carries 1.1.0, expected 1.2.0 と、いま何が
配られているかを言います。
:latest が古いイメージを指したままなら、失敗にします
publish はイメージを :<version> と :latest の2つのタグで push します。:latest だけが
古いイメージに残ると、タグを省いた docker pull <image> を打つ利用者に古いイメージが入ります。
タグは名前なので、同じイメージかどうかは digest で確かめます。:latest が無い、別のイメージを
指している、はどちらも失敗です。
直したこと
latest.jsonを持たない Release が、検証を通っていました — 更新チェックの向き先releases/latest/download/latest.jsonが404になっているのに、資産の照合だけ通っていました。 失敗にします。- 手元の記録が古いだけで、正常な配布が失敗と報告されていました — CI で
publishすると、記録は runner 側にしか残りません。実体(GitHub Release の最新バージョン)を基準に確かめ、記録が古いことは 警告で言います。
入れ方
brew upgrade wharfy / scoop update wharfy / go install github.com/ShiroDoromoto/wharfy/cmd/wharfy@latest。Linux は apt / yum リポジトリから。