オープンソース Tauri アプリケーション GitHub Actions 自動デプロイとアップグレードガイド
1. はじめに
この記事では、GitHub Actions を使用して Tauri アプリケーションの自動ビルド、公開、および UpgradeLink を介したアプリケーションの自動更新機能を実装する方法について詳細に説明します。このガイドを通じて、コードの送信からアプリケーションの更新までの完全な自動化プロセスを完了するために GitHub Actions ワークフローを設定する方法を学びます。
2. コアツールの紹介
1. 公式 Tauri GitHub Action
Tauri が提供する公式の GitHub Action プラグインは、開発者が GitHub Actions 環境で Tauri アプリケーションを自動的にビルド、パッケージ化、GitHub Releases に公開するのを支援します。
2. UpgradeLink Action
UpgradeLink が提供する Action プラグインは、Tauri アプリケーションによって生成された更新ファイル(latest.json)を UpgradeLink サーバーにアップロードするために使用されます。UpgradeLink は json ファイル内のアプリケーションファイルアドレスを読み取り、ファイルを保存し、アプリケーションバージョンファイルを自動的に作成し、対応するアップグレード戦略を作成します。
3. 完全なワークフローを備えたサンプルプロジェクト
完全なワークフローを備えたサンプルプロジェクト
3. ワークフローの説明
ワークフローは、2つの主要なジョブで構成されています:
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 (アプリケーション固有識別子) アプリケーション情報
- UpgradeLink プラットフォームの Tauri アプリケーション設定で、GitHub リポジトリアドレスを設定している。
2. GitHub Secrets の設定
GitHub リポジトリの Settings > Security > Secrets and variables > Actions で、以下の暗号化された環境変数を追加します:
| Secret 名 | 説明 |
|---|---|
| UPGRADE_LINK_ACCESS_KEY | API 呼び出し認証のために UpgradeLink プラットフォームから提供されるアクセスキー |
| UPGRADE_LINK_ACCESS_SECRET | API 呼び出し認証のために UpgradeLink プラットフォームから提供されるアクセスシークレット |
| UPGRADE_LINK_TAURI_KEY | あなたの Tauri アプリケーションに UpgradeLink プラットフォームによって割り当てられた固有識別子 |
| TAURI_SIGNING_PRIVATE_KEY | Tauri アプリケーション署名秘密キー(コード署名が必要な場合) |
| 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 のバージョンが互換性があることを確認する
3. UpgradeLink 統合の問題
- UpgradeLink コンソールのアプリケーション識別子が設定と一致しているか確認する
- GitHub Releases に正しい latest.json ファイルが生成されているか確認する
6. まとめ
上記の設定により、Tauri アプリケーションの完全自動化されたビルド、公開、更新プロセスを実現することができます。コードが指定されたブランチにプッシュされるたびに、GitHub Actions は自動的に以下の作業を完了します:
- コードの変更を検出する
- マルチプラットフォーム環境で Tauri アプリケーションをビルドする
- GitHub Release を作成し、インストールパッケージをアップロードする
- アプリケーションバージョン番号を抽出する
- 更新情報を UpgradeLink プラットフォームに同期する
- エンドユーザーは UpgradeLink を通じてアプリケーションの更新通知を受け取る
この自動化されたプロセスにより、開発効率が大幅に向上し、手動操作のエラーが減少し、開発者はアプリケーションの機能開発により集中することができます。