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.
2. UpgradeLink Action
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:
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
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:
- ACCESS_KEY (Chave de Acesso) Informações da Chave
- ACCESS_SECRET (Segredo de Acesso) Informações da Chave
- TAURI_KEY (Identificador Único do Aplicativo) Informações do Aplicativo
- 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 Secret | Descrição |
|---|---|
| UPGRADE_LINK_ACCESS_KEY | Chave de acesso fornecida pela plataforma UpgradeLink para autenticação de chamada de API |
| UPGRADE_LINK_ACCESS_SECRET | Segredo de acesso fornecido pela plataforma UpgradeLink para autenticação de chamada de API |
| UPGRADE_LINK_TAURI_KEY | Identificador único atribuído pela plataforma UpgradeLink para seu aplicativo Tauri |
| TAURI_SIGNING_PRIVATE_KEY | Chave privada de assinatura do aplicativo Tauri (se assinatura de código for necessária) |
| TAURI_SIGNING_PRIVATE_KEY_PASSWORD | Senha 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: writeestá 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
3. Problemas de Integração com UpgradeLink
- 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:
- Detectar alterações no código
- Construir aplicativo Tauri em ambientes multiplataforma
- Criar GitHub Release e fazer upload de pacotes de instalação
- Extrair número da versão do aplicativo
- Sincronizar informações de atualização com a plataforma UpgradeLink
- 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.