集成自动更新

This commit is contained in:
Tthfyth
2025-12-08 17:23:31 +08:00
parent e266754f46
commit cfac80a3ed
5 changed files with 393 additions and 68 deletions

View File

@@ -1,47 +1,167 @@
name: Publish
name: Build and Release
on:
push:
branches:
- main
tags:
- 'v*'
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g., 1.0.0)'
required: false
default: ''
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
publish:
# To enable auto publishing to github, update your electron publisher
# config in package.json > "build" and remove the conditional below
if: ${{ github.repository_owner == 'electron-react-boilerplate' }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest]
# 构建 Windows 版本
build-windows:
runs-on: windows-latest
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Checkout code
uses: actions/checkout@v4
- name: Install Node and NPM
uses: actions/setup-node@v3
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
node-version: 22
cache: npm
version: 8
- name: Install and build
run: |
npm install
npm run postinstall
npm run build
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Publish releases
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build application
run: pnpm run build
- name: Package for Windows
run: pnpm exec electron-builder --win --publish never
- name: Upload Windows artifacts
uses: actions/upload-artifact@v4
with:
name: windows-build
path: |
release/build/*.exe
release/build/*.exe.blockmap
retention-days: 5
# 构建 macOS 版本
build-macos:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build application
run: pnpm run build
- name: Package for macOS
env:
# The APPLE_* values are used for auto updates signing
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASS }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
# macOS 签名(可选)
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
# This is used for uploading release assets to github
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
npm exec electron-builder -- --publish always --win --mac --linux
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_ID_PASS }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: pnpm exec electron-builder --mac --publish never
- name: Upload macOS artifacts
uses: actions/upload-artifact@v4
with:
name: macos-build
path: |
release/build/*.dmg
release/build/*.dmg.blockmap
release/build/*.zip
retention-days: 5
# 构建 Linux 版本
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build application
run: pnpm run build
- name: Package for Linux
run: pnpm exec electron-builder --linux --publish never
- name: Upload Linux artifacts
uses: actions/upload-artifact@v4
with:
name: linux-build
path: |
release/build/*.AppImage
release/build/*.deb
release/build/*.rpm
retention-days: 5
# 发布 Release
release:
needs: [build-windows, build-macos, build-linux]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Display structure of downloaded files
run: ls -R artifacts
- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: |
artifacts/windows-build/*
artifacts/macos-build/*
artifacts/linux-build/*
draft: false
prerelease: false
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,34 +1,74 @@
name: Test
name: CI
on: [push, pull_request]
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
runs-on: ${{ matrix.os }}
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run ESLint
run: pnpm run lint
- name: TypeScript check
run: pnpm exec tsc --noEmit
build:
runs-on: ${{ matrix.os }}
needs: lint
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
os: [windows-latest, macos-latest, ubuntu-latest]
fail-fast: false
steps:
- name: Check out Git repository
uses: actions/checkout@v3
- name: Checkout code
uses: actions/checkout@v4
- name: Install Node.js and NPM
uses: actions/setup-node@v3
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
node-version: 22
cache: npm
version: 8
- name: npm install
run: |
npm install
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: npm test
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build application
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
npm run package
npm run lint
npm exec tsc
npm test
run: pnpm run build
- name: Run tests
run: pnpm test
- name: Package application
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: pnpm run package