Skip to content

Pre-release to Marketplace on Push to Master #237

Pre-release to Marketplace on Push to Master

Pre-release to Marketplace on Push to Master #237

Workflow file for this run

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 }}