# ClawPanel 发布构建工作流 # 推送 v* 标签时自动构建跨平台产物并创建 GitHub Release name: Release on: push: tags: - "v*" workflow_dispatch: inputs: tag_name: description: '发布版本号 (例如: v1.0.0)' required: true type: string default: 'v1.0.0' jobs: release: name: 构建 (${{ matrix.platform.name }}) runs-on: ${{ matrix.platform.os }} permissions: contents: write strategy: fail-fast: false matrix: platform: # macOS Apple Silicon (ARM64) - name: macOS (ARM64) os: macos-latest args: --target aarch64-apple-darwin rust_target: aarch64-apple-darwin # macOS Intel (x64) - name: macOS (Intel) os: macos-latest args: --target x86_64-apple-darwin rust_target: x86_64-apple-darwin # Linux x86_64 - name: Linux (x64) os: ubuntu-22.04 args: "" rust_target: "" # Windows x86_64 - name: Windows (x64) os: windows-latest args: "" rust_target: "" steps: # 签出代码 - name: 签出代码 uses: actions/checkout@v4 # 安装 Node.js 22 - name: 安装 Node.js uses: actions/setup-node@v4 with: node-version: 22 cache: npm # 安装前端依赖 - name: 安装前端依赖 run: npm ci # 安装 Rust 工具链 (stable) - name: 安装 Rust 工具链 uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.platform.rust_target }} # Rust 编译缓存 - name: Rust 编译缓存 uses: swatinem/rust-cache@v2 with: workspaces: src-tauri -> target # Linux 专用: 安装 Tauri v2 系统依赖 - name: 安装 Linux 系统依赖 if: matrix.platform.os == 'ubuntu-22.04' run: | sudo apt-get update sudo apt-get install -y \ libwebkit2gtk-4.1-dev \ libappindicator3-dev \ librsvg2-dev \ patchelf \ libssl-dev \ libgtk-3-dev \ libayatana-appindicator3-dev - name: 设置 Release 标签 id: vars shell: bash run: | if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then echo "TAG_NAME=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV else echo "TAG_NAME=${{ github.ref_name }}" >> $GITHUB_ENV fi # 使用 tauri-action 构建并发布 - name: 构建 Tauri 应用 uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tagName: ${{ env.TAG_NAME }} releaseName: "ClawPanel ${{ env.TAG_NAME }}" releaseBody: "详细变更记录请查看提交历史。" releaseDraft: false prerelease: false args: ${{ matrix.platform.args }}