ci: add GitHub Actions workflows (ci, release)

This commit is contained in:
Yury Rebrov 2026-01-29 12:22:23 +03:00
parent d24af36b6b
commit f828487683
2 changed files with 92 additions and 0 deletions

51
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,51 @@
name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
jobs:
lint-typecheck:
name: Lint & TypeScript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: desktop/ui/package-lock.json
- name: Install UI deps
run: cd desktop/ui && npm ci
- name: Lint
run: cd desktop/ui && npm run lint
- name: TypeScript
run: cd desktop/ui && npx tsc --noEmit
rust-check:
name: Rust check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-action@stable
- name: Cache Cargo
uses: actions/cache@v4
with:
path: |
desktop/src-tauri/target
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-${{ hashFiles('desktop/src-tauri/Cargo.lock') }}
- name: Check
run: cd desktop/src-tauri && cargo check

41
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,41 @@
# Релиз: сборка .app / DMG, подпись (при наличии ключа), публикация в GitHub Releases и latest.json
# Настройка: в Secrets репозитория добавить TAURI_SIGNING_PRIVATE_KEY (приватный ключ от tauri signer generate)
name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
release:
name: Build & Release
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: desktop/ui/package-lock.json
- name: Install Rust
uses: dtolnay/rust-action@stable
- name: Install UI deps
run: cd desktop/ui && npm ci
- name: Build Tauri (release)
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
with:
projectPath: desktop/src-tauri
includeUpdaterJson: true
tagName: ${{ github.ref_name }}