Skip to content

fix: promote all matched VSIXs, not just the first - W-23900552 - #183

Merged
madhur310 merged 1 commit into
mainfrom
ms/promote-all-vsixes
Sep 4, 2026
Merged

fix: promote all matched VSIXs, not just the first - W-23900552#183
madhur310 merged 1 commit into
mainfrom
ms/promote-all-vsixes

Conversation

@madhur310

Copy link
Copy Markdown
Contributor

What

vscode-promote-prerelease.yml downloaded every VSIX from the nightly GitHub release but then published only one — it selected a single file with find ... | head -1 and passed that lone path to the publish-vsix action.

Why it matters

This is fine for single-extension repos (their vsix-name-pattern matches exactly one file), but for the salesforcedx-vscode monorepo the release carries 17 VSIXs. A real promote run (forcedotcom/salesforcedx-vscode run 33817469982) published only salesforcedx-vscode-lightning and silently left the other 16 unpublished — while still creating the marketplace-prerelease-* tracking tag, which makes a naive rerun look "already promoted."

Change

  • Publish job now loops over every VSIX matching vsix-name-pattern (honoring exclude-web-vsix) and publishes each as pre-release with --skip-duplicate, per registry (vsce, ovsx).
  • fail-fast: false so one extension's failure doesn't abort the rest; the job still fails (and tag-promoted is skipped) if any publish fails.
  • Portable while read array build (no mapfile dependency); keeps a per-file [AUDIT] line mirroring the old publish-vsix audit.
  • Single-extension consumers are unaffected — the loop runs once.

Testing

  • YAML parses; publish run block passes bash -n.
  • Ran the extracted publish block locally (bash 3.2) in dry-run:
    • salesforcedx-vscode-*.vsix, exclude-web=false → all files published
    • exclude-web=true → -web- VSIX dropped
    • no pattern match → errors and exits 1
    • missing token (non-dry) → errors and exits 1

@W-23900552@

The publish job downloaded every VSIX from the nightly release but then
selected a single file via 'find ... | head -1' and published only that
one. This works for single-extension repos (their vsix-name-pattern
matches exactly one file) but silently promotes only one extension for
the salesforcedx-vscode monorepo (17 VSIXs), leaving the other 16
unpublished.

Loop over every VSIX matching vsix-name-pattern (honoring exclude-web)
and publish each as pre-release with --skip-duplicate, per registry.
fail-fast: false so one extension's failure doesn't abort the rest; the
job still fails (and tag-promoted is skipped) if any publish fails. Uses
a portable while-read array build and keeps a per-file audit line.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@madhur310
madhur310 requested a review from mshanemc September 4, 2026 00:48
@madhur310
madhur310 merged commit 937c1b2 into main Sep 4, 2026
4 checks passed
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