Skip to content

chore(cli): support Winget publishing#5615

Draft
jgoux wants to merge 1 commit into
developfrom
chore/winget-publishing
Draft

chore(cli): support Winget publishing#5615
jgoux wants to merge 1 commit into
developfrom
chore/winget-publishing

Conversation

@jgoux

@jgoux jgoux commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

What changed

Adds Winget publishing support for stable Supabase CLI releases using WingetCreate instead of maintaining custom Winget manifest YAML generation.

The release workflow now keeps Winget publishing behind WINGET_PUBLISH_ENABLED, so the first Supabase.CLI submission can land in microsoft/winget-pkgs before CI starts submitting updates. Once enabled, stable releases call the new PowerShell wrapper to run wingetcreate update with the released Windows x64 and arm64 ZIP URLs.

The release docs and distribution ADR now describe the two-phase rollout: one-time bootstrap PR first, then automated WingetCreate updates from release CI.

Reviewer notes

The functions deploy realpath adjustment is included because the CLI integration suite exposed a macOS /var versus /private/var path mismatch while validating this branch.

@avallete

Copy link
Copy Markdown
Member

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6659122f24

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

}
uploadedAssets.add(realPathname);
const relativePath = toApiRelativePath(cwd, pathname);
const relativePath = toApiRelativePath(realProjectRoot, realPathname);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve logical upload filenames for symlinked files

When a function file is reached through a symlink inside the project (for example supabase/functions/foo/index.ts points at src/foo.ts, or a configured static path is symlinked), this names the multipart file after the real target path while createSourceMetadata and import specifiers still refer to the logical path. The API then receives metadata such as supabase/functions/foo/index.ts but no file under that name, so source deploys can fail or miss static/imported assets. Use the real path for containment/deduplication, but keep the uploaded filename based on the original pathname relative to the project root.

Useful? React with 👍 / 👎.

}

$downloadPath = Join-Path ([System.IO.Path]::GetTempPath()) 'wingetcreate.exe'
Invoke-WebRequest 'https://aka.ms/wingetcreate/latest' -OutFile $downloadPath

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Install .NET 6 before running WingetCreate

When WINGET_PUBLISH_ENABLED=true, this downloads the standalone WingetCreate executable on windows-2025, but the job never installs the .NET 6 runtime that executable requires. The WingetCreate README says the aka.ms/wingetcreate/latest standalone exe requires .NET Runtime 6.0, while the runner-images announcement removed .NET 6 from Windows Server 2025 images in July 2025, so the first stable publish with Winget enabled will fail before submitting the manifest. Add actions/setup-dotnet for 6.x or switch to an installation path that includes the dependency.

Useful? React with 👍 / 👎.

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