name: Release Plugin on: push: tags: - "[0-9]+.[0-9]+.[0-9]+" jobs: release: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Validate version consistency run: | TAG_VERSION="${GITHUB_REF#refs/tags/}" PKG_VERSION=$(node -p "require('./package.json').version") MANIFEST_VERSION=$(node -p "require('./manifest.json').version") echo "Checking version consistency..." echo "Git tag: $TAG_VERSION" echo "package.json: $PKG_VERSION" echo "manifest.json: $MANIFEST_VERSION" if [ "$TAG_VERSION" != "$PKG_VERSION" ] || [ "$TAG_VERSION" != "$MANIFEST_VERSION" ]; then echo "❌ Version mismatch detected!" echo "Git tag: $TAG_VERSION" echo "package.json: $PKG_VERSION" echo "manifest.json: $MANIFEST_VERSION" exit 1 fi echo "✅ All versions match: $TAG_VERSION" - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '18' cache: 'npm' - name: Install dependencies run: npm ci - name: Run tests run: npm test - name: Build plugin run: npm run build - name: Verify build artifacts run: | echo "Verifying required files exist..." if [ ! -f main.js ]; then echo "❌ main.js not found!" exit 1 fi if [ ! -f manifest.json ]; then echo "❌ manifest.json not found!" exit 1 fi if [ ! -f styles.css ]; then echo "❌ styles.css not found!" exit 1 fi echo "✅ All required files present" echo "File sizes:" ls -lh main.js manifest.json styles.css - name: Create draft release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | TAG_VERSION="${GITHUB_REF#refs/tags/}" gh release create "$TAG_VERSION" \ --title="$TAG_VERSION" \ --draft \ --notes="$(cat <<'EOF' Release $TAG_VERSION ## Changes *Add release notes here before publishing* ## Installation 1. Download main.js, manifest.json, and styles.css 2. Create a folder in .obsidian/plugins/obsidian-mcp-server/ 3. Copy the three files into the folder 4. Reload Obsidian 5. Enable the plugin in Settings → Community Plugins EOF )" \ main.js \ manifest.json \ styles.css echo "✅ Draft release created: $TAG_VERSION" echo "Visit https://github.com/${{ github.repository }}/releases to review and publish"