Skip to content

Guia de Implantação e Atualização Automatizada do GitHub Actions para Aplicativos Tauri de Código Aberto

1. Introdução

Este artigo detalha como usar o GitHub Actions para implementar construção automatizada, publicação e funcionalidade de atualização automática de aplicativos para aplicativos Tauri por meio do UpgradeLink. Por meio deste guia, você aprenderá como configurar fluxos de trabalho do GitHub Actions para completar o processo totalmente automatizado desde o envio de código até as atualizações do aplicativo.

2. Introdução às Ferramentas Core

1. GitHub Action Oficial do Tauri

O plugin do GitHub Action oficial fornecido pelo Tauri ajuda desenvolvedores a construir, empacotar e publicar automaticamente aplicativos Tauri no GitHub Releases no ambiente do GitHub Actions.

O plugin Action fornecido pelo UpgradeLink é usado para fazer upload do arquivo de atualização (latest.json) gerado pelo aplicativo Tauri para o servidor do UpgradeLink. O UpgradeLink lê o endereço do arquivo do aplicativo no arquivo json, salva o arquivo, cria automaticamente arquivos de versão do aplicativo e cria estratégias de atualização correspondentes.

3. Projeto de Exemplo com Fluxo de Trabalho Completo

Projeto de exemplo com fluxo de trabalho completo

3. Descrição do Fluxo de Trabalho

O fluxo de trabalho consiste em dois jobs principais:

  1. publish-tauri: Construir e publicar aplicativo Tauri no GitHub Releases

    • Construção multiplataforma: Suporta macOS, Linux e Windows simultaneamente
    • Extração de número de versão: Extrair número de versão do aplicativo do resultado da construção do Tauri
    • Gerenciamento de publicação: Criar automaticamente GitHub Release e fazer upload de pacotes de instalação do aplicativo
  2. upgradeLink-upload: Sincronizar informações de atualização com o UpgradeLink

    • Dependências: Aguardar conclusão do job publish-tauri
    • Conhecimento de versão: Obter número da versão do aplicativo por meio de parâmetros de saída
    • Chamada de API: Usar UpgradeLink Action para fazer upload do latest.json para o servidor de atualização

4. Passos Detalhados de Integração

1. Preparação

Primeiro, certifique-se de que:

  • O repositório GitHub foi criado e o código do aplicativo Tauri foi enviado
  • Você tem uma conta na plataforma UpgradeLink e obteve as seguintes credenciais:
  • Na configuração do aplicativo tauri da plataforma UpgradeLink, configure o endereço do repositório GitHub.

2. Configurar GitHub Secrets

Adicione as seguintes variáveis de ambiente criptografadas em Configurações do Repositório GitHub > Segurança > Secrets and variables > Actions:

Nome do SecretDescrição
UPGRADE_LINK_ACCESS_KEYChave de acesso fornecida pela plataforma UpgradeLink para autenticação de chamada de API
UPGRADE_LINK_ACCESS_SECRETSegredo de acesso fornecido pela plataforma UpgradeLink para autenticação de chamada de API
UPGRADE_LINK_TAURI_KEYIdentificador único atribuído pela plataforma UpgradeLink para seu aplicativo Tauri
TAURI_SIGNING_PRIVATE_KEYChave privada de assinatura do aplicativo Tauri (se assinatura de código for necessária)
TAURI_SIGNING_PRIVATE_KEY_PASSWORDSenha da chave privada de assinatura (se definida)

3. Recomenda-se primeiro testar usando o tauri-action oficial fornecido pelo Tauri para garantir construção e publicação normais de versões Releases.

Porque o uso do fluxo de trabalho tauri-action pode encontrar vários problemas de permissão, você precisa executar todo o processo com antecedência.

4. Modificar as informações de configuração padrão fornecidas pelo oficial

Fluxo de Trabalho de Exemplo Oficial

Faça as seguintes modificações com base no exemplo 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' # for Arm based macs (M1 and above).
            args: '--target aarch64-apple-darwin'
          - platform: 'macos-latest' # for Intel based macs.
            args: '--target x86_64-apple-darwin'
          - platform: 'ubuntu-22.04'
            args: ''
          - platform: 'ubuntu-22.04-arm' # Only available in public repos.
            args: ''
          - platform: 'windows-latest'
            args: ''

    runs-on: ${{ matrix.platform }}
    steps:
      - uses: actions/checkout@v4

      - name: install dependencies (ubuntu only)
        if: startsWith(matrix.platform, 'ubuntu-') # This must match the platform value defined above.
        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' # Set this to npm, yarn or pnpm.

      - name: install Rust stable
        uses: dtolnay/rust-toolchain@stable # Set this to dtolnay/rust-toolchain@nightly
        with:
          # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
          targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}

      - name: Rust cache
        uses: swatinem/rust-cache@v2
        with:
          workspaces: './src-tauri -> target'

      - name: install frontend dependencies
        # If you don't have `beforeBuildCommand` configured you may want to build your frontend here too.
        run: yarn install # change this to npm or pnpm depending on which one you use.

      - uses: tauri-apps/tauri-action@v0
        id: tauri-action  # Add id for later reference
        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: 'See the assets to download this version and install.'
          releaseDraft: false # Do not create draft version
          prerelease: false # Not as pre-release version
          args: ${{ matrix.args }}

      - name: Set job output
        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  # Depends on publish-tauri job completion
      permissions:
        contents: write
      runs-on: ubuntu-latest
      steps:
        - name: Send a request to 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 Comuns e Soluções

1. Problemas de Permissão do GitHub Actions

Se você encontrar erros de permissão insuficiente, certifique-se de:

  • permissions: contents: write está configurado no arquivo de fluxo de trabalho
  • As permissões das Actions estão corretamente configuradas nas configurações do repositório

2. Solução de Problemas de Falha de Construção

  • Verificar logs do GitHub Actions para informações específicas de erro
  • Confirmar que todas as dependências estão corretamente instaladas, especialmente dependências do sistema para a plataforma Linux
  • Garantir compatibilidade de versões do Rust e Node.js
  • Verificar se o identificador do aplicativo no console do UpgradeLink corresponde à configuração
  • Confirmar se o arquivo latest.json correto é gerado no GitHub Releases

6. Resumo

Com a configuração acima, você pode implementar um processo totalmente automatizado de construção, publicação e atualização para aplicativos Tauri. Sempre que o código for enviado para o branch especificado, o GitHub Actions completará automaticamente as seguintes tarefas:

  1. Detectar alterações no código
  2. Construir aplicativo Tauri em ambientes multiplataforma
  3. Criar GitHub Release e fazer upload de pacotes de instalação
  4. Extrair número da versão do aplicativo
  5. Sincronizar informações de atualização com a plataforma UpgradeLink
  6. Usuários finais receberão notificações de atualização do aplicativo por meio do UpgradeLink

Este processo automatizado melhora muito a eficiência do desenvolvimento, reduz erros de operação manual e permite que desenvolvedores se concentrem mais no desenvolvimento de recursos do aplicativo.

toolsetlink@163.com