Руководство по автоматизированному развертыванию и обновлению открытых Tauri-приложений с помощью GitHub Actions
1. Введение
В этой статье подробно описано, как использовать GitHub Actions для реализации автоматизированной сборки, публикации и функции автоматического обновления приложений для Tauri-приложений через UpgradeLink. С помощью этого руководства вы узнаете, как настроить рабочие процессы GitHub Actions для завершения полностью автоматизированного процесса от отправки кода до обновления приложения.
2. Введение в основные инструменты
1. Официальное Tauri GitHub Action
Официальный плагин GitHub Action, предоставляемый Tauri, помогает разработчикам автоматически собирать, упаковывать и публиковать Tauri-приложения в GitHub Releases в среде GitHub Actions.
2. UpgradeLink Action
Плагин Action, предоставляемый UpgradeLink, используется для загрузки файла обновления (latest.json), сгенерированного Tauri-приложением, на сервер UpgradeLink. UpgradeLink читает адрес файла приложения в json-файле, сохраняет файл, автоматически создает файлы версий приложения и создает соответствующие стратегии обновления.
3. Пример проекта с полным рабочим процессом
Пример проекта с полным рабочим процессом
3. Описание рабочего процесса
Рабочий процесс состоит из двух основных заданий:
publish-tauri: Сборка и публикация Tauri-приложения в GitHub Releases
- Кроссплатформенная сборка: Поддерживает одновременно macOS, Linux и Windows
- Извлечение номера версии: Извлечение номера версии приложения из выходных данных сборки Tauri
- Управление выпусками: Автоматическое создание GitHub Release и загрузка установочных пакетов приложения
upgradeLink-upload: Синхронизация информации об обновлении с UpgradeLink
- Зависимости: Ожидание завершения задания publish-tauri
- Учет версии: Получение номера версии приложения через параметры вывода
- Вызов API: Использование UpgradeLink Action для загрузки latest.json на сервер обновления
4. Подробные шаги интеграции
1. Подготовка
Сначала убедитесь в следующем:
- Репозиторий GitHub создан и код Tauri-приложения загружен
- У вас есть аккаунт платформы UpgradeLink и получены следующие учетные данные:
- ACCESS_KEY (Ключ доступа) Информация о ключах
- ACCESS_SECRET (Секрет доступа) Информация о ключах
- TAURI_KEY (Уникальный идентификатор приложения) Информация о приложении
- В конфигурации 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
3. Проблемы интеграции UpgradeLink
- Проверьте, соответствует ли идентификатор приложения в консоли UpgradeLink конфигурации
- Убедитесь, что в GitHub Releases генерируется правильный файл latest.json
6. Резюме
С помощью вышеуказанной конфигурации вы можете реализовать полностью автоматизированный процесс сборки, публикации и обновления для Tauri-приложений. Каждый раз, когда код отправляется в указанную ветку, GitHub Actions автоматически выполнит следующие задачи:
- Обнаружение изменений в коде
- Сборка Tauri-приложения в средах с несколькими платформами
- Создание GitHub Release и загрузка установочных пакетов
- Извлечение номера версии приложения
- Синхронизация информации об обновлении с платформой UpgradeLink
- Конечные пользователи получат уведомления об обновлении приложения через UpgradeLink
Этот автоматизированный процесс значительно повышает эффективность разработки, уменьшает ошибки при ручных операциях и позволяет разработчикам сосредоточиться больше на разработке функциональных возможностей приложения.