Skip to content

feat: updater

feat: updater #5

name: Build and Release
on:
push:
branches:
- master
pull_request:
branches:
- master
permissions:
contents: write
jobs:
check-version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get-version.outputs.version }}
should-release: ${{ steps.check-release.outputs.should-release }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get version from package.json
id: get-version
run: |
VERSION=$(node -p "require('./package.json').version")
echo "version=v$VERSION" >> $GITHUB_OUTPUT
echo "Version: v$VERSION"
- name: Check if release exists
id: check-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
VERSION="${{ steps.get-version.outputs.version }}"
if gh release view "$VERSION" &> /dev/null; then
echo "Release $VERSION already exists, skipping..."
echo "should-release=false" >> $GITHUB_OUTPUT
else
echo "Release $VERSION does not exist, proceeding..."
echo "should-release=true" >> $GITHUB_OUTPUT
fi
build-and-release:
needs: check-version
if: needs.check-version.outputs.should-release == 'true'
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 8
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Create release and publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: pnpm run publish