コンテンツにスキップ
Tauri

GitHub

このガイドでは、GitHub Actionstauri-action を使用してアプリを簡単にビルドしてアップロードする方法と、Tauri のアップデータが新しく作成された GitHub リリースに更新を問い合わせるようにする方法を紹介します。

最後に、Linux Arm AppImage 用のより複雑なビルドパイプラインを設定する方法も紹介します。

tauri-action を設定するには、まず GitHub リポジトリを設定する必要があります。Tauri がまだ構成されていないリポジトリでもこのアクションを使用できます。Tauri を自動的に初期化できるためです。必要な構成オプションについては、アクションの readme を参照してください。

GitHub プロジェクトページの [Actions] タブに移動し、[New workflow] を選択してから、[Set up a workflow yourself] を選択します。ファイルを、以下のワークフローまたはアクションの例のいずれかに置き換えます。

利用可能なすべての構成オプションについては、tauri-action readme を参照してください。

アプリがリポジトリのルートにない場合は、projectPath 入力を使用します。

ワークフロー名を自由に変更したり、トリガーを変更したり、npm run lintnpm run test などの手順を追加したりできます。重要なのは、以下の行をワークフローの最後に保持することです。これにより、ビルドスクリプトが実行され、アプリがリリースされます。

以下および tauri-action の例に示すリリースワークフローは、release ブランチへのプッシュによってトリガーされます。アクションは、アプリケーションバージョンを使用して、GitHub リリースの git タグとタイトルを自動的に作成します。

別の例として、app-v0.7.0 などのバージョン git タグのプッシュ時にワークフローを実行するようにトリガーを変更することもできます:

name: 'publish'
on:
push:
tags:
- 'app-v*'

可能なトリガー構成の完全なリストについては、公式の GitHub ドキュメントを確認してください。

以下は、release ブランチにプッシュするたびに実行するように設定されたサンプルワークフローです。

このワークフローは、Windows x64、Linux x64、Linux Arm64、macOS x64、および macOS Arm64(M1 以降)用のアプリをビルドしてリリースします。

このワークフローが実行する手順は次のとおりです:

  1. actions/checkout@v4 を使用してリポジトリをチェックアウトします。
  2. アプリのビルドに必要な Linux システム依存関係をインストールします。
  3. actions/setup-node@v4 を使用して、Node.js LTS とグローバル npm/yarn/pnpm パッケージデータのキャッシュを設定します。
  4. dtolnay/rust-toolchain@stableswatinem/rust-cache@v2 を使用して、Rust と Rust のビルドアーティファクトのキャッシュを設定します。
  5. フロントエンドの依存関係をインストールし、beforeBuildCommand として構成されていない場合は、Web アプリのビルドスクリプトを実行します。
  6. 最後に、tauri-apps/tauri-action@v0 を使用して tauri build を実行し、アーティファクトを生成して GitHub リリースを作成します。
name: 'publish'
on:
workflow_dispatch:
push:
branches:
- release
jobs:
publish-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- platform: 'macos-latest' # Arm ベースの Mac(M1 以降)用。
args: '--target aarch64-apple-darwin'
- platform: 'macos-latest' # Intel ベースの Mac 用。
args: '--target x86_64-apple-darwin'
- platform: 'ubuntu-22.04'
args: ''
- platform: 'ubuntu-22.04-arm' # パブリックリポジトリでのみ利用可能。
args: ''
- platform: 'windows-latest'
args: ''
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04' # これは上記で定義されたプラットフォーム値と一致する必要があります。
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: setup node
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: 'yarn' # これを npm、yarn、または pnpm に設定します。
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable # これを dtolnay/rust-toolchain@nightly に設定します。
with:
# これらのターゲットは macos ランナーでのみ使用されるため、windows と linux のビルドを少し高速化するために `if` 内にあります。
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
# `beforeBuildCommand` を設定していない場合は、ここでフロントエンドもビルドすることをお勧めします。
run: yarn install # 使用するものに応じて、これを npm または pnpm に変更します。
- uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tagName: app-v__VERSION__ # アクションは自動的に \_\_VERSION\_\_ をアプリのバージョンに置き換えます。
releaseName: 'App v__VERSION__'
releaseBody: 'See the assets to download this version and install.'
releaseDraft: true
prerelease: false
args: ${{ matrix.args }}

その他の構成オプションについては、tauri-action リポジトリとそのを確認してください。

このワークフローは、pguyot/arm-runner-action を使用して、エミュレートされた Arm ランナーで直接コンパイルします。これにより、AppImage ツールにクロスアーキテクチャのビルドサポートがないというギャップが埋められます。

name: 'Publish Linux Arm builds'
on:
workflow_dispatch:
push:
branches:
- release
jobs:
build:
runs-on: ubuntu-22.04
strategy:
matrix:
arch: [aarch64, armv7l]
include:
- arch: aarch64
cpu: cortex-a72
base_image: https://dietpi.com/downloads/images/DietPi_RPi5-ARMv8-Bookworm.img.xz
deb: arm64
rpm: aarch64
appimage: aarch64
- arch: armv7l
cpu: cortex-a53
deb: armhfp
rpm: arm
appimage: armhf
base_image: https://dietpi.com/downloads/images/DietPi_RPi-ARMv7-Bookworm.img.xz
steps:
- uses: actions/checkout@v3
- name: Cache rust build artifacts
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
cache-on-failure: true
- name: Build app
uses: pguyot/[email protected]
with:
base_image: ${{ matrix.base_image }}
cpu: ${{ matrix.cpu }}
bind_mount_repository: true
image_additional_mb: 10240
optimize_image: no
#exit_on_fail: no
commands: |
# Prevent Rust from complaining about $HOME not matching eid home
export HOME=/root
# Workaround to CI worker being stuck on Updating crates.io index
export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse
# Install setup prerequisites
apt-get update -y --allow-releaseinfo-change
apt-get autoremove -y
apt-get install -y --no-install-recommends --no-install-suggests curl libwebkit2gtk-4.1-dev build-essential libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf libfuse2 file
curl https://sh.rustup.rs -sSf | sh -s -- -y
. "$HOME/.cargo/env"
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash
apt-get install -y nodejs
# Install frontend dependencies
npm install
# Build the application
npm run tauri build -- --verbose
- name: Get app version
run: echo "APP_VERSION=$(jq -r .version src-tauri/tauri.conf.json)" >> $GITHUB_ENV
# TODO: Combine this with the basic workflow and upload the files to the Release.
- name: Upload deb bundle
uses: actions/upload-artifact@v3
with:
name: Debian Bundle
path: ${{ github.workspace }}/src-tauri/target/release/bundle/deb/appname_${{ env.APP_VERSION }}_${{ matrix.deb }}.deb
- name: Upload rpm bundle
uses: actions/upload-artifact@v3
with:
name: RPM Bundle
path: ${{ github.workspace }}/src-tauri/target/release/bundle/rpm/appname-${{ env.APP_VERSION }}-1.${{ matrix.rpm }}.rpm
- name: Upload appimage bundle
uses: actions/upload-artifact@v3
with:
name: AppImage Bundle
path: ${{ github.workspace }}/src-tauri/target/release/bundle/appimage/appname_${{ env.APP_VERSION }}_${{ matrix.appimage }}.AppImage

GitHub トークンは、追加の構成なしで各ワークフロー実行のために GitHub によって自動的に発行されます。つまり、シークレット漏洩のリスクはありません。ただし、このトークンにはデフォルトで読み取り権限しかなく、ワークフローを実行するときに「Resource not accessible by integration」(リソースは統合によってアクセスできません)というエラーが発生する場合があります。これが発生した場合は、このトークンに書き込み権限を追加する必要がある場合があります。これを行うには、GitHub プロジェクト設定に移動し、Actions を選択し、Workflow permissions まで下にスクロールして、[Read and write permissions] をオンにします。

ワークフロー内の次の行を使用して、GitHub トークンがワークフローに渡されていることを確認できます:

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

© 2025 Tauri Contributors. CC-BY / MIT