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' plugin/.claude-plugin/plugin.json > /tmp/plugin.json
mv /tmp/plugin.json plugin/.claude-plugin/plugin.json
jq --arg v "$VERSION" '.plugins[0].version = $v' marketplace.json > /tmp/marketplace.json
mv /tmp/marketplace.json 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 plugin/.claude-plugin/plugin.json 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' plugin/.claude-plugin/plugin.json)
if [ "$VERSION" != "$PLUGIN_VERSION" ]; then
echo "::error::Version mismatch: VERSION=$VERSION but plugin/.claude-plugin/plugin.json.version=$PLUGIN_VERSION"
FAILED=1
fi

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

[ "$FAILED" -eq 0 ] && echo "All versions consistent: $VERSION"
exit $FAILED
52 changes: 52 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Contributing to JFrog VS Code Plugin

Thank you for your interest in contributing! This project is maintained by JFrog and licensed under the [Apache License 2.0](LICENSE).

## Contributor License Agreement (CLA)

All contributors must sign the [JFrog CLA](https://jfrog.com/cla/) before contributions can be merged. A CLA check runs automatically on every pull request — follow the prompts to sign if you haven't already.

## How to Contribute

1. **Fork** the repository and create a feature branch from `main`.
2. Make your changes, ensuring they follow the existing code style and project conventions.
3. **Commit** with a clear, descriptive message.
4. Open a **pull request** against `main` with a summary of what changed and why.

## Releasing

Releases are automated by `.github/workflows/release.yml`. To cut a release, push (or merge) a commit to `main` whose message contains `[major]`, `[minor]`, or `[patch]`:

- `[patch]` — bug fixes; bumps `X.Y.Z` → `X.Y.Z+1`
- `[minor]` — new features; bumps `X.Y.Z` → `X.Y+1.0`
- `[major]` — breaking changes; bumps `X.Y.Z` → `X+1.0.0`

The workflow:
1. Bumps `VERSION` and syncs the version in `plugin/.claude-plugin/plugin.json` and `marketplace.json`
2. Commits and pushes the bump to `main`
3. Creates a `vX.Y.Z` git tag
4. Publishes a GitHub Release with a repo zip attached

**Prerequisite:** `github-actions[bot]` must be allowed to push to `main`. In the repository's branch protection (or ruleset) settings, add `github-actions[bot]` to the bypass list.

## Reporting Issues

Open a [GitHub issue](https://github.com/jfrog/vscode-plugin/issues) with:

- A clear title and description of the problem.
- Steps to reproduce (if applicable).
- Expected vs. actual behavior.

## Code Guidelines

- Keep changes focused — one logical change per PR.
- Follow existing patterns and naming conventions in the codebase.
- Do not commit secrets, credentials, or API keys.

## Code of Conduct

Be respectful and constructive. We are committed to providing a welcoming and inclusive experience for everyone.

## Questions?

Reach out to the JFrog DevRel team at devrel@jfrog.com.
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.0.3
2 changes: 1 addition & 1 deletion plugin/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "jfrog",
"description": "JFrog Platform integration with MCP, security skills, and supply-chain best practices",
"version": "0.1.0",
"version": "1.0.3",
"author": { "name": "JFrog", "url": "https://jfrog.com" },
"hooks": "hooks/hooks.json"
}