Guía de Despliegue y Actualización Automatizada con GitHub Actions para Aplicaciones Tauri de Código Abierto
1. Introducción
Este artículo detalla cómo usar GitHub Actions para implementar la construcción automatizada, publicación y funcionalidad de actualización automática de aplicaciones para aplicaciones Tauri a través de UpgradeLink. A través de esta guía, aprenderás a configurar flujos de trabajo de GitHub Actions para completar el proceso completamente automatizado desde la presentación del código hasta las actualizaciones de la aplicación.
2. Introducción a Herramientas Fundamentales
1. GitHub Action Oficial de Tauri
El complemento GitHub Action oficial proporcionado por Tauri ayuda a los desarrolladores a construir, empaquetar y publicar automáticamente aplicaciones Tauri en GitHub Releases en el entorno de GitHub Actions.
2. UpgradeLink Action
El complemento Action proporcionado por UpgradeLink se usa para cargar el archivo de actualización (latest.json) generado por la aplicación Tauri al servidor de UpgradeLink. UpgradeLink lee la dirección del archivo de la aplicación en el archivo json, guarda el archivo, crea automáticamente archivos de versión de la aplicación y crea estrategias de actualización correspondientes.
3. Proyecto de Ejemplo con Flujo de Trabajo Completo
Proyecto de ejemplo con flujo de trabajo completo
3. Descripción del Flujo de Trabajo
El flujo de trabajo consta de dos trabajos principales:
publish-tauri: Construir y publicar aplicación Tauri en GitHub Releases
- Construcción multiplataforma: Soporta macOS, Linux y Windows simultáneamente
- Extracción de número de versión: Extraer número de versión de la aplicación desde la salida de construcción de Tauri
- Gestión de publicaciones: Crear automáticamente GitHub Release y cargar paquetes de instalación de la aplicación
upgradeLink-upload: Sincronizar información de actualización con UpgradeLink
- Dependencias: Esperar la finalización del trabajo publish-tauri
- Conciencia de versión: Obtener número de versión de la aplicación a través de parámetros de salida
- Llamada a API: Usar UpgradeLink Action para cargar latest.json al servidor de actualización
4. Pasos Detallados de Integración
1. Preparación
Primero, asegúrate de lo siguiente:
- Se ha creado el repositorio de GitHub y se ha cargado el código de la aplicación Tauri
- Tienes una cuenta de la plataforma UpgradeLink y has obtenido las siguientes credenciales:
- ACCESS_KEY (Clave de Acceso) Información de Clave
- ACCESS_SECRET (Secreto de Acceso) Información de Clave
- TAURI_KEY (Identificador Único de la Aplicación) Información de la Aplicación
- En la configuración de la aplicación tauri de la plataforma UpgradeLink, configura la dirección del repositorio de GitHub.
2. Configurar Secretos de GitHub
Agrega las siguientes variables de entorno cifradas en Configuración del repositorio de GitHub > Seguridad > Secretos y variables > Acciones:
| Nombre del Secreto | Descripción |
|---|---|
| UPGRADE_LINK_ACCESS_KEY | Clave de acceso proporcionada por la plataforma UpgradeLink para autenticación de llamadas a la API |
| UPGRADE_LINK_ACCESS_SECRET | Secreto de acceso proporcionado por la plataforma UpgradeLink para autenticación de llamadas a la API |
| UPGRADE_LINK_TAURI_KEY | Identificador único asignado por la plataforma UpgradeLink para tu aplicación Tauri |
| TAURI_SIGNING_PRIVATE_KEY | Clave privada de firma de la aplicación Tauri (si es necesaria la firma de código) |
| TAURI_SIGNING_PRIVATE_KEY_PASSWORD | Contraseña de la clave privada de firma (si está configurada) |
3. Se recomienda probar primero usando la tauri-action oficial proporcionada por Tauri para确保 la construcción y publicación normal de las versiones de Releases.
Debido a que el uso del flujo de trabajo tauri-action puede encontrar varios problemas de permisos, es necesario ejecutar el proceso con anticipación.
4. Modificar la información de configuración predeterminada proporcionada por la oficial
Flujo de Trabajo de Ejemplo Oficial
Haz las siguientes modificaciones basadas en el ejemplo oficial:
name: 'publish'
on:
push:
branches:
- main
jobs:
publish-tauri:
permissions:
contents: write
outputs:
appVersion: ${{ steps.set-job-output.outputs.appVersion }}
strategy:
fail-fast: false
matrix:
include:
- platform: 'macos-latest' # para macs basados en Arm (M1 y superior).
args: '--target aarch64-apple-darwin'
- platform: 'macos-latest' # para macs basados en Intel.
args: '--target x86_64-apple-darwin'
- platform: 'ubuntu-22.04'
args: ''
- platform: 'ubuntu-22.04-arm' # Solo disponible en repositorios públicos.
args: ''
- platform: 'windows-latest'
args: ''
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: instalar dependencias (solo ubuntu)
if: startsWith(matrix.platform, 'ubuntu-') # Esto debe coincidir con el valor de plataforma definido anteriormente.
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf xdg-utils
- name: setup node
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: 'yarn' # Establece esto en npm, yarn o pnpm.
- name: instalar Rust estable
uses: dtolnay/rust-toolchain@stable # Establece esto en dtolnay/rust-toolchain@nightly
with:
# Esos objetivos solo se usan en runners de macos, por lo que está en un `if` para acelerar ligeramente las construcciones de windows y linux.
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
- name: Caché de Rust
uses: swatinem/rust-cache@v2
with:
workspaces: './src-tauri -> target'
- name: instalar dependencias frontend
# Si no tienes configurado `beforeBuildCommand`, es posible que también quieras construir tu frontend aquí.
run: yarn install # cambia esto a npm o pnpm según cuál uses.
- uses: tauri-apps/tauri-action@v0
id: tauri-action # Agregar id para referencia posterior
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
with:
tagName: tauri-demo-v__VERSION__
releaseName: 'tauri-demo v__VERSION__'
releaseBody: 'Ve los assets para descargar esta versión e instalarla.'
releaseDraft: false # No crear versión borrador
prerelease: false # No como versión pre-lanzamiento
args: ${{ matrix.args }}
- name: Establecer salida del trabajo
id: set-job-output
if: matrix.platform == 'ubuntu-22.04'
run: |
echo "appVersion=${{ steps.tauri-action.outputs.appVersion }}" >> $GITHUB_OUTPUT
upgradeLink-upload:
needs: publish-tauri # Depende de la finalización del trabajo publish-tauri
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Enviar solicitud a UpgradeLink
uses: toolsetlink/upgradelink-action@3.0.2
with:
access_key: ${{ secrets.UPGRADE_LINK_ACCESS_KEY }}
access_secret: ${{ secrets.UPGRADE_LINK_ACCESS_SECRET }}
config: |
{
"app_type": "tauri",
"request": {
"app_key": "${{ secrets.UPGRADE_LINK_TAURI_KEY }}",
"latest_json_url": "https://github.com/toolsetlink/tauri-demo/releases/download/tauri-demo-v${{ needs.publish-tauri.outputs.appVersion }}/latest.json"
}
}5. Problemas Comunes y Soluciones
1. Problemas de Permisos de GitHub Actions
Si encuentras errores de permisos insuficientes, asegúrate de:
permissions: contents: writeestá configurado en el archivo de flujo de trabajo- Los permisos de Actions están correctamente configurados en la configuración del repositorio
2. Solución de Problemas de Construcción
- Verificar registros de GitHub Actions para información de error específica
- Confirmar que todas las dependencias estén correctamente instaladas, especialmente las dependencias del sistema para la plataforma Linux
- Asegurar compatibilidad de versiones de Rust y Node.js
3. Problemas de Integración con UpgradeLink
- Verificar si el identificador de la aplicación en la consola de UpgradeLink coincide con la configuración
- Confirmar si se genera el archivo latest.json correcto en GitHub Releases
6. Resumen
Con la configuración anterior, puedes implementar un proceso completamente automatizado de construcción, publicación y actualización para aplicaciones Tauri. Cada vez que se empuje código a la rama especificada, GitHub Actions completará automáticamente las siguientes tareas:
- Detectar cambios en el código
- Construir aplicación Tauri en entornos multiplataforma
- Crear GitHub Release y cargar paquetes de instalación
- Extraer número de versión de la aplicación
- Sincronizar información de actualización con la plataforma UpgradeLink
- Los usuarios finales recibirán notificaciones de actualización de la aplicación a través de UpgradeLink
Este proceso automatizado mejora enormemente la eficiencia del desarrollo, reduce errores de operación manual y permite a los desarrolladores enfocarse más en el desarrollo de funciones de la aplicación.