【Tauri2】43——tauri-action

前言

这篇看个简单的——tauri-action

tauri-apps/tauri-action: Build your Web application as a Tauri binary for macOS, Linux and Windowshttps://github.com/tauri-apps/tauri-action这是一个github的工作流,这个东西主要是用于发布tauri

这还是很好的,因为tauri项目一般比较大,再打包一下,非常占存储空间,使用这个工作流打包,不占空间,还能发布版本,还可以跨平台测试。

正文

工作流的参考

关于工作流及相关知识,笔者不细说,自行参考

GitHub 流 - GitHub 文档https://docs.github.com/zh/get-started/using-github/github-flow

准备

首先新建一个项目ta,过程什么的不必细说。直接打包,在github上创建仓库。

然后在根目录下,新建一个.github文件夹,然后在.github文件夹中新建一个workflows文件夹

最后在workflows文件夹里面新建一个yaml文件,这个yaml文件的名字任取。

笔者取名build.yaml文件

学习一下配置的内容

使用之前,看看配置,说了什么东西,笔者也顺便学习一下。

输入参数

项目初始化
名称是否必需描述类型默认值
projectPathTauri 项目根目录相对于当前工作目录的路径字符串.
distPath包含 index.html 和 JS/CSS 的可分发文件夹路径字符串
iconPath用作应用图标的 PNG 文件路径,相对于 projectPath字符串
bundleIdentifier是(如果未通过 --config 设置)初始化 Tauri 应用时注入的 bundle 标识符字符串
appName是(如果未通过 --config 设置)初始化 Tauri 应用时注入的应用名称字符串
appVersion是(如果未通过 --config 设置)初始化 Tauri 应用时注入的应用版本字符串
构建选项
名称是否必需描述类型默认值
projectPathTauri 项目根目录相对于当前工作目录的路径字符串.
includeDebug是否包含调试构建布尔值false
includeRelease是否包含发布构建布尔值true
includeUpdaterJson是否上传更新器的 JSON 文件(仅当配置了更新器时相关)布尔值true
updaterJsonPreferNsis更新器 JSON 文件是否优先使用 NSIS(setup.exe)而非 WiX(.msi)bundle布尔值false(未来 Tauri v2 项目可能改为 true)
updaterJsonKeepUniversal更新器 JSON 文件是否在 aarch64 和 x86_64 字段之外包含 macOS 通用构建布尔值false
tauriScript执行 Tauri CLI 的脚本,不应包含任何参数或命令(如 build)字符串npm run|pnpm|yarn tauri
args当前构建命令的附加参数字符串
retryAttempts如果初始构建失败,重试构建的次数(目前仅影响 tauri build)数字0
Release 配置
名称是否必需描述类型默认值
releaseId要上传构建产物的 Release ID。如果设置,tagName 和 releaseName 将被忽略数字
tagName要上传或创建的 Release 的标签名称,或与 releaseId 对应的 Release 标签字符串
releaseName要创建的 Release 名称。如果 tagName 无对应 Release,则为必需字符串
releaseBody要创建的 Release 的描述内容字符串
releaseDraft要查找或创建的 Release 是否为草稿布尔值false
prerelease要创建的 Release 是否为预发布布尔值false
releaseCommitish创建 Git 标签的分支或提交 SHA,如果标签已存在则忽略字符串当前提交的 SHA
ownerRelease 上传到的仓库的账户所有者。需要 env 中的 GITHUB_TOKEN字符串当前仓库的所有者
repoRelease 上传到的仓库名称。需要 env 中的 GITHUB_TOKEN字符串当前仓库的名称

输出参数

名称描述
releaseId创建的 Release 的 ID
releaseHtmlUrl用户可以导航查看创建的 Release 的 URL
releaseUploadUrl上传资产到创建的 Release 的 URL
artifactPaths生成的构建产物的路径
appVersion应用的版本

使用技巧和注意事项

  • 无需 Tauri 配置的仓库:你可以在未配置 Tauri's 仓库中使用此 Action。Action 会在构建前自动初始化 Tauri,并配置为使用你的 Web 资产。

  • 项目初始化配置:可通过 distPath iconPath 选项配置项目初始化。

  • 自定义 tauri.conf.json:如果需要进一步自定义默认的 tauri.conf.json 文件,可以在构建时添加自定义配置文件并合并:

    args: --config custom-config.json
  • 自定义 Tauri CLI 脚本:使用 tauriScript 选项运行自定义 Tauri CLI 脚本。例如,代替运行 yarn tauri <COMMAND> <ARGS>npm run tauri <COMMAND> <ARGS>,Action 将执行 ${tauriScript} <COMMAND> <ARGS>。这在需要自定义构建功能(如 desktop:build 脚本)时很有用。tauriScript 也可以是 tauri-cli 二进制文件的绝对路径,但路径当前不能包含空格。

  • 附加构建参数:通过 args 选项为构建命令添加额外参数。例如,指定特定构建目标:

    args: --target your-target-arch
  • 非根目录的 Tauri 项目:如果 Tauri 项目不在仓库根目录,使用 projectPath 输入参数。通常无需设置,但如果未设置,Action 将安装并使用全局的 @tauri-apps/cli,可能导致问题(例如配置了 tauriScript 或仓库中有多个 tauri.conf.json 文件)。此外,通过 --config 标志提供的相对路径将相对于 projectPath 解析,以匹配 Tauri's 行为。

  • Release 上传逻辑

    • 如果设置了 releaseId,Action 将使用该 Release 上传。

    • 如果设置了 tagName,Action 将尝试查找该标签的现有 Release。如果不存在,Action 需要 releaseName 来为指定的 tagName 创建新 Release

    • 如果你手动创建 Release 并提供 releaseId 但未设置 tagName,更新器 bundle 的下载 URL 将指向 releases/latest/download/<bundle>,如果你的仓库包含不带更新器 bundle Release,可能会导致问题。

    • 如果为现有 Release 提供 tagName,且该 Release 为草稿,则必须将 releaseDraft 设置为 true

  • 仅构建不上传:如果只想构建应用而不上传(例如仅使用 actions/upload-artifact),只需省略 tagNamereleaseNamereleaseId

说实话、配置很多。

简单地打包——仅构建不上传

先试试这个。

需要使用actions/upload-artifact。

yaml文件的内容如下

name: 打包
on:
  workflow_dispatch:
    inputs:
      version:
        description: '打包'
        required: true
        type: boolean


jobs:
  publish-tauri:
    permissions:
      contents: write
    strategy:
      fail-fast: false
      matrix:
        include:
          - platform: 'windows-latest'
            args: ''

    runs-on: ${{ matrix.platform }}
    steps:
      - name: 读取仓库
        uses: actions/checkout@v4

      - name: 安装 node
        uses: actions/setup-node@v4
        with:
          node-version: "23"

      - name: 安装 rust
        uses: dtolnay/rust-toolchain@stable

      - name: 安装 pnpm
        run: npm install -g pnpm

      - name: 安装依赖
        run: pnpm install

      - name: 打包tauri
        uses: tauri-apps/tauri-action@v0
    

      - name: 上传构建产物
        uses: actions/upload-artifact@v4
        with:
          name: tauri-app-${{ matrix.platform }}
          path: src-tauri/target/release/bundle/

1、笔者手动触发工作流

2、笔者只打包了Windows系统,节约时间

每次触发工作流,打包感觉要6-8分钟。

打包上传没问题。

发布

大部分的内容都差不多

name: 发布
on:
  push:
    tags:
      - "v*.*.*"

jobs:
  publish-tauri:
    permissions:
      contents: write
    strategy:
      fail-fast: false
      matrix:
        include:
          - platform: 'windows-latest'
            args: ''

    runs-on: ${{ matrix.platform }}
    steps:
      - name: 读取仓库
        uses: actions/checkout@v4

      - name: 安装 node
        uses: actions/setup-node@v4
        with:
          node-version: "23"

      - name: 安装 rust
        uses: dtolnay/rust-toolchain@stable

      - name: 安装 pnpm
        run: npm install -g pnpm

      - name: 安装依赖
        run: pnpm install

      - name: 发布tauri
        uses: tauri-apps/tauri-action@v0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version.
          releaseName: "App v__VERSION__"
          releaseBody: "See the assets to download this version and install."
          releaseDraft: false
          prerelease: false
          args: ${{ matrix.args }}

笔者使用tag触发工作流

触发

❯ git tag v1.0.0

❯ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/qe-present/ta.git
 * [new tag]         v1.0.0 -> v1.0.

打包的结果如下

 发现自己创建了一个tag

笔者发现,这个版本号是以tauri.config.json里面的version为准

或者使用推送到releases分支时触发

name: 发布release
on:
  push:
    branches:
      - releases

都行。

没有设置更新版本的操作,以后会使用的。

linux下的打包

笔者还从来没有在linux下运行tauri项目,正好可以试试

如下

name: linux打包
on:
    workflow_dispatch:
        inputs:
            version:
                description: '打包'
                required: true
                type: boolean
jobs:
  build-linux:
      runs-on: ubuntu-latest
      steps:
          - name: 读取仓库
            uses: actions/checkout@v4

          - name: 安装 node
            uses: actions/setup-node@v4
            with:
                node-version: "23"

          - name: 安装ubuntu依赖
            run: |
              sudo apt-get update
              sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf

          - name: 安装 rust
            uses: dtolnay/rust-toolchain@stable

          - name: 安装 pnpm
            run: npm install -g pnpm

          - name: 安装依赖
            run: pnpm install

          - name: 打包tauri
            uses: tauri-apps/tauri-action@v0

          - name: 上传构建产物
            uses: actions/upload-artifact@v4
            with:
                name: tauri-app-linux
                path: src-tauri/target/release/bundle/

在工作流中使用最新的ubantu,是24.04.2 LTS

打包的时候,报错了

说什么不能找到这个包,笔者搜了搜

libwebkit2gtk-4.0 not available in Ubuntu 24 & Debian 13 repositories · Issue #9662 · tauri-apps/taurihttps://github.com/tauri-apps/tauri/issues/9662Ubuntu 24.04 无法安装 libwebkit2gtk - 卡卡一点都不卡 - 博客园https://www.cnblogs.com/gonzo/p/18249459dependencies - How to install the libwebkitgtk package on Ubuntu 20.04 LTS? - Stack Overflowhttps://stackoverflow.com/questions/62301866/how-to-install-the-libwebkitgtk-package-on-ubuntu-20-04-lts修改一下source

因此,添加

          - name: 添加软件源
            run: |
              sudo tee -a /etc/apt/sources.list <<< "deb http://cz.archive.ubuntu.com/ubuntu bionic main universe"

 然后,又报错

需要添加一个公钥,

笔者不确定这个公钥是不是固定的,笔者没了解过

总之,按照提示,添加

          - name: 导入公钥
            run: |
              sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

 然后打包,成功了

下载工件,并解压,笔者使用Windows 的wsl运行

适用于 Linux 的 Windows 子系统文档 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/windows/wsl/

wsl运行

wsl -d Ubantu

笔者在运行的时候,也报了前面的错

总之解决报错,好像需要安装下面这个

 sudo apt-get install libwebkit2gtk-4.0-37

安装

 sudo dpkg -i ta_0.1.1_amd64.deb

好像不需要安装,可以直接运行

总之

ta

可以看到如下结果 

原来这就是在linux下的tauri,第一次见。哈哈哈哈

图标还带有一只企鹅。

还有rpm和appImage,就不展示了

总结

总之,使用工作流打包成功了。

wsl挺好用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值