Files
netrunner-app/.gitea/workflows/release.yml
T
nineap 2f7ef55856 CI: GITEA_SERVER_URL переносит из secrets в vars
Публичный URL Gitea-сервера сам по себе не секрет — только GITEA_TOKEN
остаётся в secrets.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-09 16:36:39 +07:00

131 lines
5.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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