Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Release

on:
push:
branches: [main]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false

permissions:
contents: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

- name: Detect release tag in commit message
id: detect
run: |
MSG="${{ github.event.head_commit.message }}"
if echo "$MSG" | grep -qE '\[(major|minor|patch)\]'; then
TAG=$(echo "$MSG" | grep -oE '\[(major|minor|patch)\]' | head -1 | tr -d '[]')
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
echo "triggered=true" >> "$GITHUB_OUTPUT"
else
echo "triggered=false" >> "$GITHUB_OUTPUT"
fi

- name: Compute next version
if: steps.detect.outputs.triggered == 'true'
id: version
run: |
VERSION=$(cat VERSION)
MAJOR=$(echo "$VERSION" | cut -d. -f1)
MINOR=$(echo "$VERSION" | cut -d. -f2)
PATCH=$(echo "$VERSION" | cut -d. -f3)
case "${{ steps.detect.outputs.tag }}" in
major) NEXT="$((MAJOR + 1)).0.0" ;;
minor) NEXT="${MAJOR}.$((MINOR + 1)).0" ;;
patch) NEXT="${MAJOR}.${MINOR}.$((PATCH + 1))" ;;
esac
echo "version=$NEXT" >> "$GITHUB_OUTPUT"

- name: Update VERSION and JSON files
if: steps.detect.outputs.triggered == 'true'
run: |
VERSION="${{ steps.version.outputs.version }}"
echo "$VERSION" > VERSION
jq --arg v "$VERSION" '.version = $v' plugins/jfrog/.cursor-plugin/plugin.json > /tmp/plugin.json
mv /tmp/plugin.json plugins/jfrog/.cursor-plugin/plugin.json
jq --arg v "$VERSION" '.metadata.version = $v' .cursor-plugin/marketplace.json > /tmp/marketplace.json
mv /tmp/marketplace.json .cursor-plugin/marketplace.json

- name: Commit, tag, and push
if: steps.detect.outputs.triggered == 'true'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add VERSION plugins/jfrog/.cursor-plugin/plugin.json .cursor-plugin/marketplace.json
git commit -m "Release v${{ steps.version.outputs.version }}"
git push origin main
git tag "v${{ steps.version.outputs.version }}"
git push origin "v${{ steps.version.outputs.version }}"

- name: Package release artifact
if: steps.detect.outputs.triggered == 'true'
run: zip -r release.zip . --exclude ".git/*" --exclude ".github/*"

- name: Create GitHub Release
if: steps.detect.outputs.triggered == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create "v${{ steps.version.outputs.version }}" \
release.zip \
--title "Release v${{ steps.version.outputs.version }}" \
--generate-notes
31 changes: 31 additions & 0 deletions .github/workflows/validate-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Validate version

on:
pull_request:
branches: [main]

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Check version consistency
run: |
VERSION=$(cat VERSION)
FAILED=0

PLUGIN_VERSION=$(jq -r '.version' plugins/jfrog/.cursor-plugin/plugin.json)
if [ "$VERSION" != "$PLUGIN_VERSION" ]; then
echo "::error::Version mismatch: VERSION=$VERSION but plugins/jfrog/.cursor-plugin/plugin.json.version=$PLUGIN_VERSION"
FAILED=1
fi

MARKET_VERSION=$(jq -r '.metadata.version' .cursor-plugin/marketplace.json)
if [ "$VERSION" != "$MARKET_VERSION" ]; then
echo "::error::Version mismatch: VERSION=$VERSION but .cursor-plugin/marketplace.json.metadata.version=$MARKET_VERSION"
FAILED=1
fi

[ "$FAILED" -eq 0 ] && echo "All versions consistent: $VERSION"
exit $FAILED
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.5.4
Loading