Files
TeyvatGuide/.github/workflows/test.yml
2025-12-30 03:53:47 +08:00

233 lines
8.2 KiB
YAML

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.SENTRY_RELEASE }}