diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 766ff97ea9..06cbd3ca0e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -812,13 +812,27 @@ jobs: cd dist tar -czf "kandev-${{ matrix.platform }}.tar.gz" kandev shasum -a 256 "kandev-${{ matrix.platform }}.tar.gz" > "kandev-${{ matrix.platform }}.tar.gz.sha256" + # Windows package managers cannot consume the tarball: winget's + # InstallerType enum accepts zip as its only archive format, and + # Chocolatey's unzip helper needs two 7-Zip passes for a .tar.gz. + # The zip is published alongside the tarball, not instead of it — + # Homebrew and the npm runtime packages still read the tarball. + if [ "${{ matrix.goos }}" = "windows" ]; then + zip -qr "kandev-${{ matrix.platform }}.zip" kandev + shasum -a 256 "kandev-${{ matrix.platform }}.zip" > "kandev-${{ matrix.platform }}.zip.sha256" + fi - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 with: name: bundle-${{ matrix.platform }} + # The zip entries match nothing on the four non-Windows platforms. + # if-no-files-found is left at its default so a missing tarball is + # still an error. path: | dist/kandev-${{ matrix.platform }}.tar.gz dist/kandev-${{ matrix.platform }}.tar.gz.sha256 + dist/kandev-${{ matrix.platform }}.zip + dist/kandev-${{ matrix.platform }}.zip.sha256 build-desktop: name: Build desktop app (${{ matrix.platform }}) @@ -1883,6 +1897,17 @@ jobs: exit 1 fi done + # The Windows zip is the only archive winget and Chocolatey can read. + # Losing it would break those channels while every other check here + # still passed, so it is verified explicitly. + for artifact in \ + dist/release-assets/kandev-windows-x64.zip \ + dist/release-assets/kandev-windows-x64.zip.sha256; do + if [ ! -f "$artifact" ]; then + echo "Missing required Windows artifact: $artifact" >&2 + exit 1 + fi + done bash "$DESKTOP_ASSET_VERIFIER" dist/release-assets ls -lh dist/release-assets @@ -1923,6 +1948,8 @@ jobs: dist/release-assets/kandev-macos-*.tar.gz.sha256 dist/release-assets/kandev-windows-*.tar.gz dist/release-assets/kandev-windows-*.tar.gz.sha256 + dist/release-assets/kandev-windows-*.zip + dist/release-assets/kandev-windows-*.zip.sha256 dist/release-assets/kandev-desktop-* dist/release-assets/latest.json preserve_order: true