-
Notifications
You must be signed in to change notification settings - Fork 2
Implement tag-based release workflow with marketplace publishing #11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the Comment |
…arketplace publishing Co-authored-by: wysaid <1430725+wysaid@users.noreply.github.com>
Co-authored-by: wysaid <1430725+wysaid@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements a comprehensive tag-based release workflow that automates VS Code Marketplace publishing and GitHub releases. The workflow uses regex patterns to distinguish between stable releases (X.Y.Z), pre-releases (X.Y.Z-suffix), and non-release tags, validating version consistency with package.json before publishing.
Key Changes:
- Tag pattern validation with conditional publishing logic (stable vs pre-release vs build-only)
- Version consistency check between git tags and package.json
- Marketplace publishing with appropriate flags based on release type
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
.github/workflows/release.yml |
Implements tag validation, version checking, and conditional marketplace/GitHub publishing with support for stable and pre-release flows |
RELEASE_WORKFLOW.md |
Comprehensive documentation covering tag formats, release procedures, version validation rules, and troubleshooting guidance |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Check version consistency with package.json | ||
| if: steps.validate_tag.outputs.should_publish == 'true' | ||
| run: | | ||
| TAG_VERSION="${{ steps.extract_version.outputs.version }}" | ||
| PACKAGE_VERSION=$(node -p "require('./package.json').version") | ||
| echo "Tag version: $TAG_VERSION" | ||
| echo "package.json version: $PACKAGE_VERSION" | ||
| if [ "$TAG_VERSION" != "$PACKAGE_VERSION" ]; then | ||
| echo "Error: Tag version ($TAG_VERSION) does not match package.json version ($PACKAGE_VERSION)" | ||
| exit 1 | ||
| fi | ||
| echo "Version check passed: $TAG_VERSION" |
Copilot
AI
Dec 14, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The version consistency check uses the node command (line 61) but runs before the "Use Node.js" step (line 73-76). This will fail if Node.js is not available in the runner by default. Move the "Use Node.js" and "Install dependencies" steps before the version consistency check, or move the version check after those steps.
The release workflow now distinguishes between stable releases, pre-releases, and non-release tags using regex patterns, validates version consistency with package.json, and publishes to VS Code Marketplace with appropriate flags.
Tag Validation & Routing
/^[0-9]+\.[0-9]+\.[0-9]+$/): Publish as stable to marketplace + create GitHub release/^[0-9]+\.[0-9]+\.[0-9]+-.+$/): Publish with--pre-releaseflag + create pre-release on GitHubVersion Consistency
Extracts numeric version from tag and compares with package.json. Workflow fails if mismatch detected:
Marketplace Publishing
MS_STORE_TOKENsecret via environment variablevsce publish(stable) orvsce publish --pre-release(pre-release)Documentation
Added
RELEASE_WORKFLOW.mdwith tag format specifications, release procedures, and troubleshooting guide.Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.