Skip to content

Publish to winget on release - #1550

Open
daberkow wants to merge 1 commit into
mainfrom
winget-auto-publish
Open

daberkow wants to merge 1 commit into
mainfrom
winget-auto-publish

Conversation

@daberkow

Copy link
Copy Markdown

What
Adds a publish-winget job to the release workflow, identically to publish-homebrew-formula; opening a PR against microsoft/winget-pkgs for each new release. This allows winget install OxideComputer.OxideCLI to work for customer administrators on Windows.

Uses vedantmgoyal9/winget-releaser (a wrapper around komac), which bases the new manifests on the previous version already in winget-pkgs. That means the zip/nested-portable layout, the oxide.exe command alias and the locale metadata all carry over without being restated here.

Two bits of local knowledge are encoded: our tags carry build metadata (v0.18.0+2026073100.0.0) while the winget PackageVersion is the bare semver (0.18.0), and the installer regex has to select the Windows zip without also matching its .sha256 sidecar.

Tested
Ran komac in --dry-run against the published 0.18.0 artifacts. And artifacts match what would be expected.

Next Step
Requires a WINGET_TOKEN repository secret, which does not exist yet: a classic PAT with public_repo scope (fine-grained tokens are not supported by the action) belonging to an account with write access to the oxidecomputer/winget-pkgs fork.

This has been manually done: microsoft/winget-pkgs#436034, and the next step is automating it.

Adds a publish-winget job to the release workflow that opens a PR against
microsoft/winget-pkgs for each new release, alongside the existing
Homebrew publish.

This is wired up as a dist custom publish job rather than a hand-edit of
release.yml: `dist plan` fails CI when release.yml differs from what dist
would generate. So publish-winget.yml is a reusable workflow, it's listed
in `publish-jobs` in dist-workspace.toml, and release.yml is regenerated
with `dist generate`.

Uses vedantmgoyal9/winget-releaser (a wrapper around komac), which bases
the new manifests on the previous version already in winget-pkgs. That
means the zip/nested-portable layout, the oxide.exe command alias and the
locale metadata all carry over without being restated here.

Two bits of local knowledge are encoded: our tags carry build metadata
(v0.18.0+2026073100.0.0) while the winget PackageVersion is the bare
semver (0.18.0), and the installer regex has to select the Windows zip
without also matching its .sha256 sidecar.

Requires a WINGET_TOKEN repository secret, which does not exist yet: a
classic PAT with public_repo scope (fine-grained tokens are not supported
by the action) belonging to an account with write access to the
oxidecomputer/winget-pkgs fork.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant