tauri程序使用github action发布linux中arm架构

Arm Runner 编译

该工作流使用 pguyot/arm-runner-action 直接在仿真 Arm Runner 上进行编译。这弥补了 AppImage 工具中跨架构编译支持的缺失。

arm-runner-action 比 GitHub 的标准运行程序要慢得多,因此在需要按构建分钟数收费的私有软件源中要小心。一个新的 create-tauri-app 项目的无缓存构建需要约 1 个小时。

官方文档有说明:GitHub | Tauri

yaml 复制代码
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_RPi-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/arm-runner-action@v2.6.5
        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 会为每个工作流的运行自动签发 GitHub 令牌,无需进一步配置,这意味着不存在泄密风险。不过,该令牌默认只有读取权限,运行工作流时可能会出现 "Resource not access by integration"(集成无法访问资源)错误。如果出现这种情况,您可能需要为该令牌添加写入权限。为此,请进入 GitHub 项目设置,选择 "操作",向下滚动到 "工作流权限",然后选中 "读写权限"。

通过工作流中的这一行,你可以看到 GitHub 令牌被传递到工作流中

相关推荐
huohaiyu1 小时前
从URL到页面的完整解析流程
前端·网络·chrome·url
阿星AI工作室3 小时前
一个简单Demo彻底理解前后端怎么连的丨Figma + Supabase + Vercel
前端·人工智能
aircrushin3 小时前
一拍即传的平替,完全免费的实时照片墙!
前端
鹏北海5 小时前
JSBridge 原理详解
前端
孟健5 小时前
我的网站被黑了:一天灌入 227 万条垃圾数据,AI 写的代码差点让我社死
前端
anOnion5 小时前
构建无障碍组件之Checkbox pattern
前端·html·交互设计
IT枫斗者7 小时前
IntelliJ IDEA 2025.3史诗级更新:统一发行版+Spring Boot 4支持,这更新太香了!
java·开发语言·前端·javascript·spring boot·后端·intellij-idea
N***p3657 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
NGC_66118 小时前
二分查找算法
java·javascript·算法
享誉霸王8 小时前
15、告别混乱!Vue3复杂项目的规范搭建与基础库封装实战
前端·javascript·vue.js·前端框架·json·firefox·html5