Skip to content

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.

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:

  1. 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
  2. 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:
  • 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 SecretoDescripción
UPGRADE_LINK_ACCESS_KEYClave de acceso proporcionada por la plataforma UpgradeLink para autenticación de llamadas a la API
UPGRADE_LINK_ACCESS_SECRETSecreto de acceso proporcionado por la plataforma UpgradeLink para autenticación de llamadas a la API
UPGRADE_LINK_TAURI_KEYIdentificador único asignado por la plataforma UpgradeLink para tu aplicación Tauri
TAURI_SIGNING_PRIVATE_KEYClave privada de firma de la aplicación Tauri (si es necesaria la firma de código)
TAURI_SIGNING_PRIVATE_KEY_PASSWORDContraseñ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:

yaml
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: write está 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
  • 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:

  1. Detectar cambios en el código
  2. Construir aplicación Tauri en entornos multiplataforma
  3. Crear GitHub Release y cargar paquetes de instalación
  4. Extraer número de versión de la aplicación
  5. Sincronizar información de actualización con la plataforma UpgradeLink
  6. 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.

toolsetlink@163.com