ci: add Winget automation to release workflow#12
Conversation
Add update-winget job to release.yml that uses wingetcreate to automatically submit manifest updates to microsoft/winget-pkgs on each release. Update Winget manifests with real SHA256 hashes for v1.1.1 release assets. Update ROADMAP to mark all distribution channels complete.
There was a problem hiding this comment.
Pull request overview
This PR extends the release workflow to automatically update and submit WinGet manifests to microsoft/winget-pkgs, and updates the repository’s WinGet manifest templates/hashes and roadmap status to reflect completed distribution automation.
Changes:
- Add an
update-wingetjob to.github/workflows/release.ymlthat runswingetcreate update ... --submit. - Update WinGet manifest templates to
PackageVersion: 1.1.1and set real SHA256 values for Windows installer ZIPs. - Update
ROADMAP.mdto mark WinGet as DONE and remove remaining-work items.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
packaging/winget/FelipeMorandini.jwt-term.yaml |
Bumps WinGet manifest package version to 1.1.1. |
packaging/winget/FelipeMorandini.jwt-term.locale.en-US.yaml |
Bumps WinGet locale manifest package version to 1.1.1. |
packaging/winget/FelipeMorandini.jwt-term.installer.yaml |
Updates installer URLs to v1.1.1 and replaces placeholder SHA256 with real hashes. |
ROADMAP.md |
Marks WinGet channel as complete and updates distribution status/remaining work. |
.github/workflows/release.yml |
Adds update-winget automation job using wingetcreate during releases. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
.github/workflows/release.yml
Outdated
| run: | | ||
| $version = "${{ github.ref_name }}".TrimStart("v") | ||
| $x64Url = "https://github.com/felipemorandini/jwt-term/releases/download/${{ github.ref_name }}/jwt-term-x86_64-pc-windows-msvc.zip" | ||
| $arm64Url = "https://github.com/felipemorandini/jwt-term/releases/download/${{ github.ref_name }}/jwt-term-aarch64-pc-windows-msvc.zip" | ||
| .\wingetcreate.exe update FelipeMorandini.jwt-term ` | ||
| --version $version ` | ||
| --urls $x64Url $arm64Url ` | ||
| --submit ` | ||
| --token ${{ secrets.WINGET_PAT }} |
There was a problem hiding this comment.
Fixed in c922120 — PAT is now passed via $env:WINGET_PAT environment variable instead of inline command argument.
| - name: Install wingetcreate | ||
| shell: pwsh | ||
| run: | | ||
| Invoke-WebRequest -Uri "https://aka.ms/wingetcreate/latest" -OutFile wingetcreate.exe | ||
|
|
There was a problem hiding this comment.
Acknowledged. Using https://aka.ms/wingetcreate/latest/self-contained is the recommended pattern from Microsoft's wingetcreate documentation. Pinning to a specific version would require manual maintenance. The risk is acceptable for a CI job that only submits manifest PRs (no write access to our repo).
| update-winget: | ||
| name: Update Winget manifest | ||
| needs: release | ||
| runs-on: windows-latest |
There was a problem hiding this comment.
Good point. The contents: write is set at workflow level for the release job. This job only needs public_repo on the PAT (which is separate from GITHUB_TOKEN permissions). The inherited permission is unused but harmless since the job only runs wingetcreate against an external repo.
Summary
update-wingetjob torelease.ymlusingwingetcreateto auto-submit manifest updates to microsoft/winget-pkgsInitial winget-pkgs PR: microsoft/winget-pkgs#349834
Test plan