jaycelu_Smart-Review/.github/workflows/release-plugin.yml
2026-06-23 20:42:39 +08:00

66 lines
1.7 KiB
YAML

name: Release Obsidian plugin
on:
push:
tags:
- "[0-9]*.[0-9]*.[0-9]*"
permissions:
contents: write
attestations: write
id-token: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up pnpm
uses: pnpm/action-setup@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Verify tag matches manifest version
run: |
TAG="${GITHUB_REF_NAME}"
if ! echo "$TAG" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "Tag $TAG is not a plain SemVer version like 0.1.1" >&2
exit 1
fi
VERSION="$(node -p "JSON.parse(require('fs').readFileSync('manifest.json', 'utf8')).version")"
if [ "$TAG" != "$VERSION" ]; then
echo "Tag $TAG does not match manifest.json version $VERSION" >&2
exit 1
fi
- name: Build release assets
run: pnpm run release:plugin
- name: Attest release assets
uses: actions/attest-build-provenance@v2
with:
subject-path: |
dist/plugin/main.js
dist/plugin/manifest.json
dist/plugin/styles.css
- name: Create GitHub release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release create "$GITHUB_REF_NAME" \
dist/plugin/main.js \
dist/plugin/manifest.json \
dist/plugin/styles.css \
--title "$GITHUB_REF_NAME" \
--generate-notes