GitHub
このガイドでは、GitHub Actions で tauri-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 lint や npm 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 以降)用のアプリをビルドしてリリースします。
このワークフローが実行する手順は次のとおりです:
actions/checkout@v4を使用してリポジトリをチェックアウトします。- アプリのビルドに必要な Linux システム依存関係をインストールします。
actions/setup-node@v4を使用して、Node.js LTS とグローバル npm/yarn/pnpm パッケージデータのキャッシュを設定します。dtolnay/rust-toolchain@stableとswatinem/rust-cache@v2を使用して、Rust と Rust のビルドアーティファクトのキャッシュを設定します。- フロントエンドの依存関係をインストールし、
beforeBuildCommandとして構成されていない場合は、Web アプリのビルドスクリプトを実行します。 - 最後に、
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 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 }}.AppImageGitHub トークンは、追加の構成なしで各ワークフロー実行のために 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