Skip to content

Руководство по автоматизированному развертыванию и обновлению открытых Tauri-приложений с помощью GitHub Actions

1. Введение

В этой статье подробно описано, как использовать GitHub Actions для реализации автоматизированной сборки, публикации и функции автоматического обновления приложений для Tauri-приложений через UpgradeLink. С помощью этого руководства вы узнаете, как настроить рабочие процессы GitHub Actions для завершения полностью автоматизированного процесса от отправки кода до обновления приложения.

2. Введение в основные инструменты

1. Официальное Tauri GitHub Action

Официальный плагин GitHub Action, предоставляемый Tauri, помогает разработчикам автоматически собирать, упаковывать и публиковать Tauri-приложения в GitHub Releases в среде GitHub Actions.

Плагин Action, предоставляемый UpgradeLink, используется для загрузки файла обновления (latest.json), сгенерированного Tauri-приложением, на сервер UpgradeLink. UpgradeLink читает адрес файла приложения в json-файле, сохраняет файл, автоматически создает файлы версий приложения и создает соответствующие стратегии обновления.

3. Пример проекта с полным рабочим процессом

Пример проекта с полным рабочим процессом

3. Описание рабочего процесса

Рабочий процесс состоит из двух основных заданий:

  1. publish-tauri: Сборка и публикация Tauri-приложения в GitHub Releases

    • Кроссплатформенная сборка: Поддерживает одновременно macOS, Linux и Windows
    • Извлечение номера версии: Извлечение номера версии приложения из выходных данных сборки Tauri
    • Управление выпусками: Автоматическое создание GitHub Release и загрузка установочных пакетов приложения
  2. upgradeLink-upload: Синхронизация информации об обновлении с UpgradeLink

    • Зависимости: Ожидание завершения задания publish-tauri
    • Учет версии: Получение номера версии приложения через параметры вывода
    • Вызов API: Использование UpgradeLink Action для загрузки latest.json на сервер обновления

4. Подробные шаги интеграции

1. Подготовка

Сначала убедитесь в следующем:

  • Репозиторий GitHub создан и код Tauri-приложения загружен
  • У вас есть аккаунт платформы UpgradeLink и получены следующие учетные данные:
  • В конфигурации tauri-приложения на платформе UpgradeLink настроен адрес репозитория GitHub.

2. Настройка GitHub Secrets

Добавьте следующие зашифрованные переменные среды в настройках репозитория GitHub > Security > Secrets and variables > Actions:

Название секретаОписание
UPGRADE_LINK_ACCESS_KEYКлюч доступа, предоставленный платформой UpgradeLink для аутентификации вызовов API
UPGRADE_LINK_ACCESS_SECRETСекрет доступа, предоставленный платформой UpgradeLink для аутентификации вызовов API
UPGRADE_LINK_TAURI_KEYУникальный идентификатор, присвоенный платформой UpgradeLink для вашего Tauri-приложения
TAURI_SIGNING_PRIVATE_KEYЗакрытый ключ подписи Tauri-приложения (если требуется подписание кода)
TAURI_SIGNING_PRIVATE_KEY_PASSWORDПароль закрытого ключа подписи (если установлен)

3. Рекомендуется сначала протестировать с помощью официального tauri-action, предоставляемого Tauri, чтобы убедиться в нормальной сборке и публикации версий Releases.

Потому что при использовании рабочего процесса tauri-action могут возникнуть различные проблемы с разрешениями, вам нужно предварительно пройти весь процесс.

4. Измените информацию о конфигурации по умолчанию, предоставленную официально

Официальный пример рабочего процесса

Внесите следующие изменения на основе официального примера:

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. Распространенные проблемы и их решения

1. Проблемы с разрешениями GitHub Actions

Если вы столкнулись с ошибками недостатка разрешений, убедитесь:

  • В файле рабочего процесса настроено permissions: contents: write
  • Разрешения Actions правильно настроены в настройках репозитория

2. Устранение неполадок при сбое сборки

  • Проверьте журналы GitHub Actions на наличие конкретной информации об ошибке
  • Убедитесь, что все зависимости правильно установлены, особенно системные зависимости для платформы Linux
  • Обеспечьте совместимость версий Rust и Node.js
  • Проверьте, соответствует ли идентификатор приложения в консоли UpgradeLink конфигурации
  • Убедитесь, что в GitHub Releases генерируется правильный файл latest.json

6. Резюме

С помощью вышеуказанной конфигурации вы можете реализовать полностью автоматизированный процесс сборки, публикации и обновления для Tauri-приложений. Каждый раз, когда код отправляется в указанную ветку, GitHub Actions автоматически выполнит следующие задачи:

  1. Обнаружение изменений в коде
  2. Сборка Tauri-приложения в средах с несколькими платформами
  3. Создание GitHub Release и загрузка установочных пакетов
  4. Извлечение номера версии приложения
  5. Синхронизация информации об обновлении с платформой UpgradeLink
  6. Конечные пользователи получат уведомления об обновлении приложения через UpgradeLink

Этот автоматизированный процесс значительно повышает эффективность разработки, уменьшает ошибки при ручных операциях и позволяет разработчикам сосредоточиться больше на разработке функциональных возможностей приложения.

toolsetlink@163.com