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

審査待ちは、成功にも失敗にもしません

wingethomebrew-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 が無い、別のイメージを 指している、はどちらも失敗です。

直したこと

入れ方

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