Al abrir, la app busca en segundo plano una versión nueva en los Releases de GitHub (latest.json), y si la hay —firmada con nuestra clave— la instala sola y reinicia. - Cargo/lib.rs: tauri-plugin-updater + check_update() en el arranque (no bloquea). - tauri.conf.json: bundle.createUpdaterArtifacts=true y plugins.updater con el endpoint (releases/latest/download/latest.json) y la clave PÚBLICA de verificación. - CI: build.yml pasa a tauri-apps/tauri-action, que construye el .exe (Windows) y el .dmg universal (macOS), firma los artefactos del updater y publica todo —incluido latest.json— en un Release. Requiere los secrets TAURI_SIGNING_PRIVATE_KEY y TAURI_SIGNING_PRIVATE_KEY_PASSWORD (la clave privada NO va en el repo). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
69 líneas
2.5 KiB
YAML
69 líneas
2.5 KiB
YAML
name: Publicar app de escritorio (Windows + macOS)
|
|
|
|
# Se dispara al publicar una etiqueta de versión (ej. v1.0.0) y también a mano desde la
|
|
# pestaña Actions (workflow_dispatch). Construye el .exe (Windows) y el .dmg universal
|
|
# (macOS), los firma para el updater y publica todo —incluido latest.json— en un Release.
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*"
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: write # crear/actualizar el Release con los instaladores
|
|
|
|
jobs:
|
|
publish:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
# macOS → .dmg universal (Intel + Apple Silicon)
|
|
- platform: macos-latest
|
|
args: "--target universal-apple-darwin"
|
|
# Windows → instalador .exe (NSIS)
|
|
- platform: windows-latest
|
|
args: ""
|
|
|
|
runs-on: ${{ matrix.platform }}
|
|
steps:
|
|
- name: Clonar repo
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Instalar Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
|
|
- name: Instalar Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
|
|
|
|
- name: Cache de Rust
|
|
uses: swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: src-tauri
|
|
|
|
- name: Instalar dependencias
|
|
run: npm install
|
|
|
|
- name: Generar iconos (desde app-icon.png)
|
|
run: npm run icons
|
|
|
|
- name: Construir, firmar y publicar
|
|
uses: tauri-apps/tauri-action@v0
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
# Firma del updater: la clave privada y su contraseña van como secrets del repo.
|
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
|
with:
|
|
# En un tag usa su nombre (v1.0.0); en ejecución manual, deriva vX.Y.Z de la versión.
|
|
tagName: ${{ github.ref_type == 'tag' && github.ref_name || 'v__VERSION__' }}
|
|
releaseName: "Labstream OS Desktop __VERSION__"
|
|
releaseBody: "Instaladores de escritorio de Labstream OS.\n\n- Windows: el archivo `.exe` (NSIS).\n- macOS: el archivo `.dmg` universal (Intel + Apple Silicon).\n\nActualización automática activada: las apps ya instaladas se actualizan solas al publicar una versión nueva."
|
|
releaseDraft: false
|
|
prerelease: false
|
|
args: ${{ matrix.args }}
|