Skip to content

feat(nightly-publish): publish Open VSX pre-releases, skip on release merge#790

Draft
edelauna wants to merge 1 commit into
mainfrom
issue/784
Draft

feat(nightly-publish): publish Open VSX pre-releases, skip on release merge#790
edelauna wants to merge 1 commit into
mainfrom
issue/784

Conversation

@edelauna

@edelauna edelauna commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Related GitHub Issue

Closes: #784

Description

Publishes nightly pre-release builds to Open VSX in addition to the VS Code Marketplace, and adds a guard so the release-PR merge back into main doesn't also trigger a redundant nightly pre-release.

Open VSX pre-release publishing

The workflow previously skipped Open VSX for nightlies, with a comment claiming Open VSX has no pre-release concept. That was incorrect — verified against the Open VSX server source (ExtensionVersionJooqRepository.findLatestQuery, eclipse-openvsx/openvsx) and confirmed live against the real ZooCodeOrganization.zoo-code listing:

  • The pre-release alias correctly isolates pre-release-flagged versions.
  • The latest alias resolves to the highest semver across stable and pre-release, using the pre-release flag only as a tie-breaker at identical major.minor.patch. A nightly build can therefore transiently become latest until the next stable release outranks it — the same trade-off already accepted for Marketplace pre-release publishing, since both track "newest published version."

The Open VSX publish step intentionally omits ovsx publish --pre-release: for an already-packaged .vsix (built earlier in the job via vsce package --pre-release), ovsx ignores that flag and warns that it's a no-op — the pre-release marker is already baked into the VSIX's Microsoft.VisualStudio.Code.PreRelease manifest property, which is what Open VSX actually reads.

Skip on release merge

The release runbook (.roo/commands/release.md) squash-merges release PRs into main with the commit message chore: prepare v[version] release, after the tag has already been pushed and stable has already shipped. Without a guard, that merge would also trigger a nightly pre-release publish of code that was just released as stable. Added a "Skip if this push is a release merge" step that checks:

  1. The commit subject against the release-prep message pattern, and
  2. Whether a GitHub release already exists for the current src/package.json version (belt-and-suspenders if the message convention ever drifts).

gh release view failures are distinguished by message: "release not found" is the expected non-match; anything else (auth/API failure) fails the step loudly instead of silently falling through to a publish.

Duplicate-publish logging

The Open VSX publish step now checks ovsx's output for "is already published" and logs that the version was skipped rather than unconditionally claiming a fresh publish — --skip-duplicate returns success without actually publishing in that case.

Test Procedure

  • Manually built a pre-release VSIX with vsce package --pre-release and confirmed the Microsoft.VisualStudio.Code.PreRelease manifest property is set.
  • Published a real test pre-release to the ZooCodeOrganization.zoo-code Open VSX listing and confirmed via the registry API that the pre-release alias correctly isolated it while latest tracked highest-semver as expected.
  • Verified the release-merge skip regex against real historical release commits (chore: prepare v3.64.0 release (#729), chore: prepare v3.62.0 release (#658)) and against a normal feature commit, confirming correct match/no-match in both directions.
  • Verified gh release view error handling against three cases: version not found, version found (existing stable release v3.64.0), and an invalid token (401) — confirmed each takes the correct branch.
  • Verified the duplicate-skip log message against both a real ovsx "already published" response and a real publish-success response.

Pre-Submission Checklist

  • Issue Linked: This PR is linked to an approved GitHub Issue (see "Related GitHub Issue" above).
  • Scope: My changes are focused on the linked issue (one major feature/fix per PR).
  • Self-Review: I have performed a thorough self-review of my code.
  • Testing: New and/or updated tests have been added to cover my changes (if applicable).
  • Documentation Impact: I have considered if my changes require documentation updates (see "Documentation Updates" section below).
  • Contribution Guidelines: I have read and agree to the Contributor Guidelines.

Documentation Updates

  • No documentation updates are required.

Additional Notes

This is a CI/workflow-only change (.github/workflows/nightly-publish.yml); there's no application code path to unit test. Verification was done by exercising the actual ovsx/gh commands and shell logic locally against the real registry and repo, as detailed in the Test Procedure above.

@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 6e774fce-eb39-437f-9f45-ba24d5f86fac

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issue/784

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@edelauna edelauna changed the title feat(nightly-publish): adding ovsx pre-release step feat(nightly-publish): publish Open VSX pre-releases, skip on release merge Jul 3, 2026
@codecov

codecov Bot commented Jul 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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.

feat(publish): add Open VSX pre-release publishing step

1 participant