Skip to content

feat: winget package manifests and submit script (spec 152) - #170

Merged
isc-tdyar merged 4 commits into
masterfrom
152-winget
Nov 2, 2026
Merged

isc-tdyar merged 4 commits into
masterfrom
152-winget

Conversation

@tom-dyar

@tom-dyar tom-dyar commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Spec 152, for #102: a winget package for the Windows binary.

What changed

  • packaging/winget/winget_manifests.py writes the three manifests microsoft/winget-pkgs expects for InterSystemsCommunity.IrisAgenticDev. The package uses the portable type: winget downloads the existing iris-agentic-dev-windows-x86_64.exe (system DLLs only, no runtime to bundle), checks its hash and puts iris-agentic-dev on PATH.
  • scripts/winget-submit.sh <version> downloads the release, checks the .exe against SHA256SUMS and generates the manifests. Only with --submit does it open the winget-pkgs pull request from the maintainer's fork. It reads no token; it uses the local gh login.
  • New CI job winget-install on windows-latest: installs winget 1.29.380 from Microsoft's release (hash-checked; Server images ship without it), then validates, installs, runs and uninstalls the latest published release from the generated manifests, and checks that a wrong-hash manifest is refused.
  • tests/e2e/test_winget_manifests.py: 25 tests, including validation against the official 1.10.0 schemas (vendored, MIT). jsonschema and its five dependencies are added, hash-pinned, to .github/requirements/test.txt so CI runs them instead of skipping.
  • README: a winget line, marked as waiting for review. Release checklist: the submit step, the two release approvals per run, and the asset list (nine files, not six).

No stored token

The usual automation (winget-releaser, wingetcreate, komac) needs a classic PAT with public_repo. On the maintainer account, that token could push to this repository and bypass its rulesets. Until a dedicated bot account exists, each release is submitted by hand with the script.

What to look at

  • The winget-install job. This PR is its first run, and the winget install step on the runner is the part most likely to need a fix.
  • scripts/winget-submit.sh: every remote write sits inside the --submit block.

Generates the version, defaultLocale and installer manifests for
InterSystemsCommunity.IrisAgenticDev as a portable x64 package, checked
against the official 1.10.0 schemas. scripts/winget-submit.sh verifies the
release asset against SHA256SUMS and opens the winget-pkgs PR only with
--submit; no winget token is stored. CI job winget-install installs the
latest release with real winget on windows-latest and checks a wrong hash
is refused.

Refs #102
@tom-dyar
tom-dyar requested a review from isc-tdyar as a code owner November 2, 2026 09:52
The first run installed and ran 1.7.1, then winget uninstall stopped on
the msstore source agreements. The runner image already has winget
1.11.510, so the comment on the fallback install step now says so.
pwsh ends a script with the last native exit code, which here is the
wrong-hash install winget is meant to refuse.
They are copies of microsoft/winget-cli's files and stay byte-identical,
so an update is a plain copy.
@isc-tdyar
isc-tdyar merged commit eb275c4 into master Nov 2, 2026
20 checks passed
@isc-tdyar
isc-tdyar deleted the 152-winget branch November 2, 2026 13:03
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.

2 participants