name: Test Build on: workflow_dispatch: inputs: build-mac: description: "Build for Mac" required: true default: true type: boolean build-win: description: "Build for Win" required: true default: false type: boolean build-debug: description: "Build debug version" required: true default: true type: boolean build-release: description: "Build release version" required: true default: false type: boolean jobs: build-mac: if: inputs.build-mac permissions: contents: write strategy: fail-fast: false matrix: settings: - platform: macos-latest args: "--target x86_64-apple-darwin" target: "macos-intel" artifact: "debug-build-macos-intel" - platform: macos-latest args: "--target aarch64-apple-darwin" target: "macos-arm" artifact: "debug-build-macos-arm" runs-on: ${{ matrix.settings.platform }} env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} COMMIT_HASH: ${{ github.sha }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" | tr -d '\r' > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa - name: Add Github RSA run: | echo "${{ secrets.KNOWN_GITHUB_RSA }}" >> ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts - name: Test SSH connection run: ssh -T git@github.com || true - name: Rust setup uses: dtolnay/rust-toolchain@stable - name: Rust cache uses: swatinem/rust-cache@v2 with: workspaces: "./src-tauri -> target" - name: Add Rust targets(macOS Intel) if: matrix.settings.target == 'macos-intel' run: rustup target add x86_64-apple-darwin - name: Add Rust targets(macOS ARM) if: matrix.settings.target == 'macos-arm' run: rustup target add aarch64-apple-darwin - name: Output toolchain run: rustup show - name: Add Offset Conf run: echo '${{ secrets.YAE_CONF }}' | jq -c . > ./src-tauri/lib/conf.json - name: setup node uses: actions/setup-node@v3 with: node-version: 24.8.0 - name: setup pnpm uses: pnpm/action-setup@v2 with: version: 10.23.0 - name: Install frontend dependencies run: pnpm install # Build Debug - name: Build debug app if: github.event.inputs.build-debug == 'true' uses: tauri-apps/tauri-action@dev env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: ${{ matrix.settings.args }} --debug - name: Move Debug Intel if: matrix.settings.target == 'macos-intel' && github.event.inputs.build-debug == 'true' run: mv src-tauri/target/x86_64-apple-darwin/debug/bundle/dmg/*.dmg TeyvatGuide_${{ env.COMMIT_HASH }}_intel-debug.dmg - name: Move Debug ARM if: matrix.settings.target == 'macos-arm' && github.event.inputs.build-debug == 'true' run: mv src-tauri/target/aarch64-apple-darwin/debug/bundle/dmg/*.dmg TeyvatGuide_${{ env.COMMIT_HASH }}_arm-debug.dmg - name: Upload Debug Intel if: matrix.settings.target == 'macos-intel' && github.event.inputs.build-debug == 'true' uses: actions/upload-artifact@v4 with: name: debug-macos-intel path: TeyvatGuide_${{ env.COMMIT_HASH }}_intel-debug.dmg - name: Upload Debug ARM if: matrix.settings.target == 'macos-arm' && github.event.inputs.build-debug == 'true' uses: actions/upload-artifact@v4 with: name: debug-macos-arm path: TeyvatGuide_${{ env.COMMIT_HASH }}_arm-debug.dmg # Build Release - name: Build app if: github.event.inputs.build-release == 'true' uses: tauri-apps/tauri-action@dev env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: ${{ matrix.settings.args }} - name: Move Release Intel if: matrix.settings.target == 'macos-intel' && github.event.inputs.build-release == 'true' run: mv src-tauri/target/x86_64-apple-darwin/release/bundle/dmg/*.dmg TeyvatGuide_${{ env.COMMIT_HASH }}_intel-release.dmg - name: Move Release ARM if: matrix.settings.target == 'macos-arm' && github.event.inputs.build-release == 'true' run: mv src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*.dmg TeyvatGuide_${{ env.COMMIT_HASH }}_arm-release.dmg - name: Upload Release Intel if: matrix.settings.target == 'macos-intel' && github.event.inputs.build-release uses: actions/upload-artifact@v4 with: name: release-macos-intel path: TeyvatGuide_${{ env.COMMIT_HASH }}_intel-release.dmg - name: Upload Release ARM if: matrix.settings.target == 'macos-arm' && github.event.inputs.build-release == 'true' uses: actions/upload-artifact@v4 with: name: release-macos-arm path: TeyvatGuide_${{ env.COMMIT_HASH }}_arm-release.dmg build-win: if: inputs.build-win permissions: contents: write runs-on: windows-latest env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} COMMIT_HASH: ${{ github.sha }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" | tr -d '\r' > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa - name: Add Github RSA run: | echo "${{ secrets.KNOWN_GITHUB_RSA }}" >> ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts - name: Test SSH connection run: ssh -T git@github.com || true - name: Rust setup uses: dtolnay/rust-toolchain@stable - name: Rust cache uses: swatinem/rust-cache@v2 with: workspaces: "./src-tauri -> target" - name: Add Offset Conf run: echo '${{ secrets.YAE_CONF }}' | jq -c . > ./src-tauri/lib/conf.json - name: setup node uses: actions/setup-node@v3 with: node-version: 24.8.0 - name: setup pnpm uses: pnpm/action-setup@v2 with: version: 10.23.0 - name: Setup sentry-cli run: npm install -g @sentry/cli - name: Install frontend dependencies run: pnpm install # Build Debug - name: Build debug app if: github.event.inputs.build-debug == 'true' uses: tauri-apps/tauri-action@dev env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: --debug - name: Move Debug if: github.event.inputs.build-debug == 'true' run: mv src-tauri/target/debug/bundle/msi/*.msi TeyvatGuide_${{ env.COMMIT_HASH }}_win-debug.msi - name: Upload Debug if: github.event.inputs.build-debug == 'true' uses: actions/upload-artifact@v4 with: name: debug-win path: TeyvatGuide_${{ env.COMMIT_HASH }}_win-debug.msi # Build Release - name: Build app if: github.event.inputs.build-release == 'true' uses: tauri-apps/tauri-action@dev env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Move Release if: github.event.inputs.build-release == 'true' run: mv src-tauri/target/release/bundle/msi/*.msi TeyvatGuide_${{ env.COMMIT_HASH }}_win-release.msi - name: Upload Release if: github.event.inputs.build-release uses: actions/upload-artifact@v4 with: name: release-win path: TeyvatGuide_${{ env.COMMIT_HASH }}_win-release.msi - name: Upload Sentry Pdb if: matrix.settings.target == 'windows' run: | echo "Uploading release: $SENTRY_RELEASE" sentry-cli releases new "$SENTRY_RELEASE" sentry-cli upload-dif src-tauri/target/release/TeyvatGuide.pdb sentry-cli releases finalize "$SENTRY_RELEASE" env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_RELEASE: ${{ env.VITE_SENTRY_RELEASE }}