name: Development Test on: workflow_dispatch: inputs: run_windows: description: "运行 Windows" required: false type: boolean default: true run_macos_aarch64: description: "运行 macOS aarch64" required: false type: boolean default: true permissions: write-all env: TAG_NAME: deploytest TAG_CHANNEL: DeployTest CARGO_INCREMENTAL: 0 RUST_BACKTRACE: short concurrency: group: "${{ github.workflow }} - ${{ github.head_ref || github.ref }}" cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: dev: strategy: fail-fast: false matrix: include: - os: windows-latest target: x86_64-pc-windows-msvc bundle: nsis id: windows input: run_windows - os: macos-latest target: aarch64-apple-darwin bundle: dmg id: macos-aarch64 input: run_macos_aarch64 runs-on: ${{ matrix.os }} steps: - name: Skip job if not selected if: github.event.inputs[matrix.input] != 'true' run: echo "Job ${{ matrix.id }} skipped as requested" - name: Checkout Repository if: github.event.inputs[matrix.input] == 'true' uses: actions/checkout@v4 - name: Install Rust Stable if: github.event.inputs[matrix.input] == 'true' uses: dtolnay/rust-toolchain@stable - name: Add Rust Target if: github.event.inputs[matrix.input] == 'true' run: rustup target add ${{ matrix.target }} - name: Rust Cache if: github.event.inputs[matrix.input] == 'true' uses: Swatinem/rust-cache@v2 with: workspaces: src-tauri save-if: false cache-all-crates: true shared-key: autobuild-shared - uses: pnpm/action-setup@v4 name: Install pnpm if: github.event.inputs[matrix.input] == 'true' with: run_install: false - name: Install Node if: github.event.inputs[matrix.input] == 'true' uses: actions/setup-node@v4 with: node-version: "20" cache: "pnpm" - name: Pnpm install and check if: github.event.inputs[matrix.input] == 'true' run: | pnpm i pnpm run prebuild ${{ matrix.target }} - name: Release ${{ env.TAG_CHANNEL }} Version if: github.event.inputs[matrix.input] == 'true' run: pnpm release-version ${{ env.TAG_NAME }} - name: Tauri build if: github.event.inputs[matrix.input] == 'true' uses: tauri-apps/tauri-action@v0 env: NODE_OPTIONS: "--max_old_space_size=4096" GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} with: tauriScript: pnpm args: --target ${{ matrix.target }} -b ${{ matrix.bundle }} - name: Upload Artifacts if: matrix.os == 'macos-latest' && github.event.inputs[matrix.input] == 'true' uses: actions/upload-artifact@v4 with: name: ${{ matrix.target }} path: src-tauri/target/${{ matrix.target }}/release/bundle/dmg/*.dmg if-no-files-found: error - name: Upload Artifacts if: matrix.os == 'windows-latest' && github.event.inputs[matrix.input] == 'true' uses: actions/upload-artifact@v4 with: name: ${{ matrix.target }} path: src-tauri/target/${{ matrix.target }}/release/bundle/nsis/*.exe if-no-files-found: error