Skip to content

chore: publish to marketplaces independently and handle partial failures#758

Merged
mhuisi merged 1 commit intoleanprover:masterfrom
mhuisi:push-oszltqkszyvr
Apr 13, 2026
Merged

chore: publish to marketplaces independently and handle partial failures#758
mhuisi merged 1 commit intoleanprover:masterfrom
mhuisi:push-oszltqkszyvr

Conversation

@mhuisi
Copy link
Copy Markdown
Collaborator

@mhuisi mhuisi commented Apr 9, 2026

Summary

Previously, vsce publish and ovsx publish ran sequentially in the same step of build-and-test, so a failure in one would skip the other and also skip the GitHub release creation. This PR restructures .github/workflows/on-push.yml so partial failures are recoverable and obvious:

  • Each marketplace publish is its own job. publish-vsce and publish-ovsx run independently; a failure in one doesn't block the other.
  • The GitHub release is still created on partial failure. The new github-release job has if: !cancelled() && needs.package.result == 'success', so a release with notes is produced even if a marketplace publish failed. When that happens, the release body is prepended with a > [!WARNING] admonition naming the failed marketplace(s) and linking to the CI run.
  • Retry is one click. Use Re-run failed jobs in the Actions UI — only the failed publish job re-runs against the same tag, reusing the existing .vsix artifact. No version bump, no rebuild. (Caveat: the warning banner in the release body is not auto-updated after a successful retry; edit the body by hand if you want it gone.)
  • Partial failure is visible. A failed publish job shows as a red X on the workflow run, so maintainers can't miss it.

To avoid gating publishing on the test matrix, the old build-and-test job is split into:

  • package — ubuntu-only, builds and packages the extension, uploads the .vsix artifact, and runs the npm workspace publishes.
  • build-and-test (new, keeps the name but not the content) — matrix (Linux + Windows), rebuilds from scratch and runs lint + the VS Code test suite.

publish-vsce, publish-ovsx, and github-release all depend on package only, so tests run in parallel with publishing — matching the pre-existing behavior where tests ran after publish in the old single-job layout. A test failure still marks the workflow red.

🤖 Generated with Claude Code

Previously, `vsce publish` and `ovsx publish` ran sequentially in the
same step, so a failure in one would skip the other and also skip the
GitHub release creation. Split them into independent jobs so that:

- A failure in one marketplace doesn't prevent publishing to the other.
- The GitHub release is still created on partial failure (via
  `if: !cancelled()` on the release job), with a warning banner in the
  release body naming the marketplace(s) that failed.
- Maintainers can use "Re-run failed jobs" in the Actions UI to retry
  the failed publish against the same tag without rebuilding.

Also split `build-and-test` into `build` (ubuntu only, produces the
`.vsix` artifact) and `test` (matrix, runs lint and tests) so that the
publish jobs depend only on `build`. This preserves the previous
behavior where tests don't gate publishing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

chore: publish to marketplaces independently and handle partial failures

Previously, `vsce publish` and `ovsx publish` ran sequentially in the
same step, so a failure in one would skip the other and also skip the
GitHub release creation. Split them into independent jobs so that:

- A failure in one marketplace doesn't prevent publishing to the other.
- The GitHub release is still created on partial failure (via
  `if: !cancelled()` on the release job), with a warning banner in the
  release body naming the marketplace(s) that failed.
- Maintainers can use "Re-run failed jobs" in the Actions UI to retry
  the failed publish against the same tag without rebuilding.

Also split `build-and-test` into `package` (ubuntu only, produces the
`.vsix` artifact and runs the npm workspace publishes) and a new
`build-and-test` (matrix, builds from scratch and runs lint + tests)
so that the publish jobs depend only on `package`. This preserves the
previous behavior where tests don't gate publishing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@mhuisi mhuisi force-pushed the push-oszltqkszyvr branch from 3b27b57 to 4909613 Compare April 9, 2026 15:34
@mhuisi mhuisi merged commit 9403ce0 into leanprover:master Apr 13, 2026
9 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.

1 participant