Pre-release to Marketplace on Push to Master #237
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Pre-release to Marketplace on Push to Master | |
on: | |
workflow_run: | |
workflows: ["Tests", "E2E Tests", "Lint"] | |
types: | |
- completed | |
branches: | |
- master | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
pre-release: | |
name: Create Marketplace Pre-release | |
runs-on: ubuntu-latest | |
if: ${{ github.event.workflow_run.conclusion == 'success' }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 22 | |
- name: Install dependencies | |
run: | | |
npm ci | |
cd webview-ui && npm ci && cd .. | |
- name: Build extension | |
run: npm run compile | |
- name: Get version from package.json | |
id: get_version | |
run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT | |
- name: Update version to pre-release using odd minor version | |
id: update_version | |
run: | | |
# Get current version components | |
CURRENT_VERSION=$(node -p "require('./package.json').version") | |
MAJOR=$(echo $CURRENT_VERSION | cut -d. -f1) | |
MINOR=$(echo $CURRENT_VERSION | cut -d. -f2) | |
PATCH=$(echo $CURRENT_VERSION | cut -d. -f3) | |
# Check if minor version is even (release) or odd (pre-release) | |
is_even=$((MINOR % 2 == 0)) | |
if [ "$is_even" = "1" ]; then | |
# If current version has even minor, increment to next odd number for pre-release | |
NEW_MINOR=$((MINOR + 1)) | |
else | |
# If already odd, keep it (we're already in a pre-release version scheme) | |
NEW_MINOR=$MINOR | |
fi | |
# Use GitHub run number as patch version for pre-release | |
NEW_PATCH=$GITHUB_RUN_NUMBER | |
# Create new version with odd minor number and run number as patch, plus git hash | |
NEW_VERSION="$MAJOR.$NEW_MINOR.$NEW_PATCH" | |
echo "Creating pre-release version: $NEW_VERSION" | |
# Update package.json with new version | |
npm version --no-git-tag-version $NEW_VERSION | |
# Store the new version for later steps | |
echo "prerelease_version=$NEW_VERSION" >> $GITHUB_OUTPUT | |
- name: Install vsce | |
run: npm install -g @vscode/vsce | |
- name: Publish to Marketplace as pre-release | |
run: vsce publish --pre-release | |
env: | |
VSCE_PAT: ${{ secrets.VSCE_PAT }} |