这些error的坑,肯定是很多人不想看到的,我的开源软件PakePlus是使用tauri开发的,PakePlus是一个界面化将任何网站打包为轻量级跨平台软件的程序,利用Tauri轻松构建轻量级多端桌面应用和多端手机应用,为了实现发布的时候支持mac的inter芯片和arm芯片,还有windows的inter芯片和arm芯片,需要编写github action的编译文件build.yml,tauri官网支持的并不是很完善,需要手动添加额外的平台,官方文档:GitHub | Tauri
这里记录一下编译的时候报错的解决办法,以及一个可以直接复制过去使用的文件。
常见报错
1.没有给x86_64-pc-windows-msvc配置target就会报下面的错
D:\a\PakePlus\PakePlus\src-tauri\target\release\bundle\nsis\PakePlus_0.3.2_x64-setup.exe
86Found release with tag main.
87Deleting existing PakePlus_0.3.2_x64_en-US.msi...
88Uploading PakePlus_0.3.2_x64_en-US.msi...
89Error: Not Found - REST API endpoints for release assets - GitHub Docs
解决办法:添加target
2.没有添加target属性还会报这个错
Run rustup target add
4error: error: the following required arguments were not provided:
5 <target>...
7Usage: rustup target add <target>...
9For more information, try '--help'.
因为Install rust target阶段需要安装声明好的依赖,没有就会报错:
3.没有安装aarch64-pc-windows-msvc依赖导致的
✓ built in 10.25s
53 Error failed to build app: Target aarch64-pc-windows-msvc is not installed (installed targets: i686-pc-windows-msvc, x86_64-pc-windows-gnu, x86_64-pc-windows-msvc). Please run `rustup target add aarch64-pc-windows-msvc`.
54 ELIFECYCLE Command failed with exit code 1.
55Error: Command failed with exit code 1: pnpm tauri build --target aarch64-pc-windows-msvc
要编译生成arm架构的windows安装包,就需要这个依赖支持,所以需要添加下面的步骤,然后配合matrix的平台一起使用:
4.在linux系统中安装依赖环境
Reading state information...
30E: Unable to locate package libwebkit2gtk-4.1-dev
31E: Couldn't find any package by glob 'libwebkit2gtk-4.1-dev'
32E: Couldn't find any package by regex 'libwebkit2gtk-4.1-dev'
33Error: Process completed with exit code 100.
Sync node version and setup cache
0s
install Rust stable
0s
Rust cache
0s
install frontend dependencies
0s
Run tauri-apps/tauri-action@v0
0s
Post Run pnpm/action-setup@v3
0s
Post Setup node
0s
Post Run actions/checkout@v4
0s
Complete job
0s
需要增加这一步:
分享一个直接可以使用的文件:
javascript
name: Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
branch:
description: 'Branch to run the workflow on'
required: true
default: 'template'
jobs:
publish-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- platform: 'macos-latest' # for Arm based macs (M1 and above).
target: 'aarch64-apple-darwin'
args: '--target aarch64-apple-darwin'
- platform: 'macos-latest' # for Intel based macs.
target: 'x86_64-apple-darwin'
args: '--target x86_64-apple-darwin'
- platform: 'ubuntu-20.04'
target: 'x86_64-unknown-linux-gnu'
args: ''
- platform: 'windows-latest'
target: 'x86_64-pc-windows-msvc'
- platform: 'windows-latest'
target: 'i686-pc-windows-msvc'
- platform: 'windows-latest'
target: 'aarch64-pc-windows-msvc'
args: '--target aarch64-pc-windows-msvc'
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install rust target
run: rustup target add ${{ matrix.target }}
- name: Install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-20.04'
# You can remove libayatana-appindicator3-dev if you don't use the system tray feature.
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libayatana-appindicator3-dev librsvg2-dev
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v3
with:
version: latest
# 获取 pnpm 缓存
- name: Sync node version and setup cache
uses: actions/setup-node@v4
with:
node-version: 20
cache: 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: pnpm install # change this to npm or pnpm depending on which one you use.
- uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tagName: ${{ github.ref_name }} # This only works if your workflow triggers on new tags.
releaseName: 'PakePlus v__VERSION__' # tauri-action replaces \_\_VERSION\_\_ with the app version.
releaseBody: 'This is a workflow to help you automate the publishing of your PakePlus project to GitHub Packages.'
releaseDraft: false
prerelease: false
publish: true
args: ${{ matrix.args }}