84 líneas
2.9 KiB
YAML
84 líneas
2.9 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: Probar el cliente
|
|
run: npm test
|
|
|
|
- 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: true
|
|
prerelease: false
|
|
args: ${{ matrix.args }}
|
|
|
|
activar:
|
|
needs: publish
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Publicar solo cuando ambos instaladores estan completos
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
VERSION=$(node -p "require('./package.json').version")
|
|
gh release edit "v$VERSION" --draft=false --latest
|