Skip to content

オープンソース Tauri アプリケーション GitHub Actions 自動デプロイとアップグレードガイド

1. はじめに

この記事では、GitHub Actions を使用して Tauri アプリケーションの自動ビルド、公開、および UpgradeLink を介したアプリケーションの自動更新機能を実装する方法について詳細に説明します。このガイドを通じて、コードの送信からアプリケーションの更新までの完全な自動化プロセスを完了するために GitHub Actions ワークフローを設定する方法を学びます。

2. コアツールの紹介

1. 公式 Tauri GitHub Action

Tauri が提供する公式の GitHub Action プラグインは、開発者が GitHub Actions 環境で Tauri アプリケーションを自動的にビルド、パッケージ化、GitHub Releases に公開するのを支援します。

UpgradeLink が提供する Action プラグインは、Tauri アプリケーションによって生成された更新ファイル(latest.json)を UpgradeLink サーバーにアップロードするために使用されます。UpgradeLink は json ファイル内のアプリケーションファイルアドレスを読み取り、ファイルを保存し、アプリケーションバージョンファイルを自動的に作成し、対応するアップグレード戦略を作成します。

3. 完全なワークフローを備えたサンプルプロジェクト

完全なワークフローを備えたサンプルプロジェクト

3. ワークフローの説明

ワークフローは、2つの主要なジョブで構成されています:

  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 プラットフォームのアカウントを持ち、以下の認証情報を取得している:
  • UpgradeLink プラットフォームの Tauri アプリケーション設定で、GitHub リポジトリアドレスを設定している。

2. GitHub Secrets の設定

GitHub リポジトリの Settings > Security > Secrets and variables > Actions で、以下の暗号化された環境変数を追加します:

Secret 名説明
UPGRADE_LINK_ACCESS_KEYAPI 呼び出し認証のために UpgradeLink プラットフォームから提供されるアクセスキー
UPGRADE_LINK_ACCESS_SECRETAPI 呼び出し認証のために UpgradeLink プラットフォームから提供されるアクセスシークレット
UPGRADE_LINK_TAURI_KEYあなたの Tauri アプリケーションに UpgradeLink プラットフォームによって割り当てられた固有識別子
TAURI_SIGNING_PRIVATE_KEYTauri アプリケーション署名秘密キー(コード署名が必要な場合)
TAURI_SIGNING_PRIVATE_KEY_PASSWORD署名秘密キーのパスワード(設定されている場合)

3. まず、Tauri が提供する公式の tauri-action を使用してテストし、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