2f7ef55856
Публичный URL Gitea-сервера сам по себе не секрет — только GITEA_TOKEN остаётся в secrets. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
131 lines
5.5 KiB
YAML
131 lines
5.5 KiB
YAML
# Gitea-native версия — публикует релиз через прямые вызовы Gitea Release API
|
||
# (scripts/gitea-publish-release.mjs), а не через tauri-apps/tauri-action:
|
||
# та жёстко ходит в api.github.com, для Gitea не годится (не настраиваемый
|
||
# эндпоинт). GitHub-версия пайплайна (.github/workflows/release.yml) не тронута
|
||
# и продолжает работать как раньше через tauri-action.
|
||
#
|
||
# У Gitea нет built-in алиаса /releases/latest/download/<file> как у GitHub —
|
||
# эмулируем его: тег "latest" пересоздаётся на каждом релизе с теми же
|
||
# ассетами, что и версионный тег. Апдейтер (tauri.conf.json) ходит именно
|
||
# по этому стабильному URL.
|
||
#
|
||
# Только десктоп (Windows/macOS/Linux) — Android/iOS обновляются через сторы,
|
||
# самообновление там запрещено политиками платформ (см. src-tauri/src/lib.rs).
|
||
# Триггер — тег вида v1.2.3 (совпадает с полем "version" в tauri.conf.json).
|
||
#
|
||
# Нужные секреты в Gitea: TAURI_SIGNING_PRIVATE_KEY(_PASSWORD) — как и раньше,
|
||
# плюс GITEA_TOKEN (личный токен с правом записи в этот репозиторий).
|
||
# GITEA_SERVER_URL (напр. https://git.example.com, без слэша на конце) — это
|
||
# НЕ секрет (публичный URL сервера), задаётся как repo Variable (vars.*), не
|
||
# Actions secret.
|
||
#
|
||
# shell: bash на windows-latest требует Git for Windows/bash в PATH раннера —
|
||
# на GitHub-хостед раннерах это есть из коробки, на самохостед Gitea-раннере
|
||
# под Windows нужно проверить отдельно (не проверялось вживую — нет доступа
|
||
# к реальному Windows/macOS раннеру в этой среде).
|
||
name: Release Desktop
|
||
|
||
on:
|
||
push:
|
||
tags:
|
||
- "v*"
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
build:
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
include:
|
||
- platform: "macos-latest"
|
||
args: "--target aarch64-apple-darwin"
|
||
updater_key: darwin-aarch64
|
||
- platform: "macos-latest"
|
||
args: "--target x86_64-apple-darwin"
|
||
updater_key: darwin-x86_64
|
||
- platform: "ubuntu-24.04"
|
||
args: ""
|
||
updater_key: linux-x86_64
|
||
- platform: "windows-latest"
|
||
args: ""
|
||
updater_key: windows-x86_64
|
||
|
||
runs-on: ${{ matrix.platform }}
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- uses: pnpm/action-setup@v4
|
||
with:
|
||
version: 9
|
||
|
||
- uses: actions/setup-node@v4
|
||
with:
|
||
node-version: 20
|
||
cache: pnpm
|
||
|
||
- name: Install Rust
|
||
uses: dtolnay/rust-toolchain@stable
|
||
with:
|
||
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
|
||
|
||
- name: Install Linux system deps (webkit2gtk, etc.)
|
||
if: matrix.platform == 'ubuntu-24.04'
|
||
run: |
|
||
sudo apt-get update
|
||
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
|
||
|
||
- run: pnpm install --frozen-lockfile
|
||
|
||
# Tauri CLI напрямую, не tauri-action — она сама публикует релиз на
|
||
# GitHub попутно со сборкой, тут публикация вынесена в отдельный job.
|
||
# Подписывающие переменные окружения читает сам Tauri CLI, без разницы,
|
||
# кто его вызывает — .sig-файлы создаются точно так же, как и раньше.
|
||
- name: Build
|
||
shell: bash
|
||
env:
|
||
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||
run: pnpm tauri build ${{ matrix.args }}
|
||
|
||
# Собираем только то, что реально нужно апдейтеру (парами файл+.sig) —
|
||
# не гадаем про точные имена/подпапки бандлов на каждой платформе,
|
||
# просто берём всё, что Tauri CLI подписал.
|
||
- name: Collect signed updater bundles
|
||
shell: bash
|
||
run: |
|
||
mkdir -p dist-bundle
|
||
find src-tauri/target -name "*.sig" | while read -r sig; do
|
||
base="${sig%.sig}"
|
||
cp "$sig" dist-bundle/
|
||
cp "$base" dist-bundle/
|
||
done
|
||
ls -la dist-bundle
|
||
|
||
- uses: actions/upload-artifact@v4
|
||
with:
|
||
name: bundle-${{ matrix.updater_key }}
|
||
path: dist-bundle/*
|
||
if-no-files-found: error
|
||
|
||
publish:
|
||
needs: build
|
||
runs-on: ubuntu-24.04
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- uses: actions/download-artifact@v4
|
||
with:
|
||
path: artifacts
|
||
|
||
- uses: actions/setup-node@v4
|
||
with:
|
||
node-version: 20
|
||
|
||
- name: Publish release to Gitea
|
||
env:
|
||
GITEA_SERVER_URL: ${{ vars.GITEA_SERVER_URL }}
|
||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||
GITEA_REPO: ${{ github.repository }}
|
||
RELEASE_VERSION: ${{ github.ref_name }}
|
||
run: node scripts/gitea-publish-release.mjs artifacts
|