name: CI on: push: branches: [main] pull_request: branches: [main] env: CARGO_TERM_COLOR: always jobs: # ── Windows x64: 테스트 + 포터블 zip ─────────────────────── windows-x64: runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: workspaces: src-tauri - run: npm ci - name: ffmpeg 사이드카 (x64) run: pwsh scripts/fetch-ffmpeg.ps1 -Target win64 - name: 코어 크레이트 테스트 (ffmpeg/네트워크 통합 포함) working-directory: src-tauri run: cargo test --workspace - name: Tauri 빌드 (x64) run: npm run tauri build -- --no-bundle - name: 포터블 zip 패키징 run: pwsh scripts/package-portable.ps1 -Target x64 - uses: actions/upload-artifact@v4 with: name: archive-windows-x64-portable path: dist-portable/*.zip # ── Windows ARM64: 크로스컴파일 (스파이크 ① 상시 검증) ────── windows-arm64-cross: runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - uses: dtolnay/rust-toolchain@stable with: targets: aarch64-pc-windows-msvc - uses: Swatinem/rust-cache@v2 with: workspaces: src-tauri key: arm64-cross - run: npm ci - name: ffmpeg 사이드카 (ARM64) run: pwsh scripts/fetch-ffmpeg.ps1 -Target winarm64 - name: Tauri 빌드 (ARM64 크로스) run: npm run tauri build -- --target aarch64-pc-windows-msvc --no-bundle - name: 포터블 zip 패키징 (ARM64) run: pwsh scripts/package-portable.ps1 -Target arm64 - uses: actions/upload-artifact@v4 with: name: archive-windows-arm64-portable path: dist-portable/*.zip # ── Windows ARM64 네이티브 러너: 실제 ARM64에서 테스트 실행 ── windows-arm64-native: runs-on: windows-11-arm steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: workspaces: src-tauri key: arm64-native - name: 코어 크레이트 테스트 (ARM64 네이티브) working-directory: src-tauri run: cargo test --workspace # ── macOS: Intel + Apple Silicon ──────────────────────────── macos: runs-on: macos-14 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - uses: dtolnay/rust-toolchain@stable with: targets: aarch64-apple-darwin, x86_64-apple-darwin - uses: Swatinem/rust-cache@v2 with: workspaces: src-tauri - run: npm ci - name: ffmpeg 사이드카 (universal — lipo) run: pwsh scripts/fetch-ffmpeg-macos.ps1 - name: 코어 크레이트 테스트 (헤드리스) working-directory: src-tauri run: cargo test --workspace # 배포 빌드 시 서명/공증: APPLE_CERTIFICATE 등 시크릿이 있으면 tauri-action이 처리. # 미서명 빌드는 Gatekeeper에서 우클릭-열기 필요 (README 안내). - name: Tauri 빌드 (universal .app + dmg) run: npm run tauri build -- --target universal-apple-darwin - uses: actions/upload-artifact@v4 with: name: archive-macos-universal path: src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg