name: "Artcraft Windows Publish" on: push: branches: - release - artcraft-release - artcraft-windows # Additional branch for Windows testing # This workflow creates Windows builds. # On each push to the release branches it will create or update a GitHub release, build your app, and upload the artifacts to the release. jobs: publish-artcraft-windows: permissions: contents: write strategy: fail-fast: false matrix: include: # Windows builds - platform: 'windows-latest' args: '' runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v4 - name: install Rust stable uses: dtolnay/rust-toolchain@stable - name: install wreq dependencies run: | choco install cmake -y choco install strawberryperl -y choco install pkgconfiglite -y choco install llvm -y choco install nasm -y shell: cmd - name: setup node uses: actions/setup-node@v4 with: node-version: lts/* - name: install frontend dependencies run: | # Navigate to the frontend directory to install dependencies cd ./frontend npm cache clean --force echo "Installing all workspace dependencies..." npm ci echo "=== Version Information ===" echo "Node version:" node --version echo "NPM version:" npm --version echo "=== Nx versions from lockfile ===" npm list --depth=0 | findstr nx - name: Pre-build frontend to avoid Tauri build issues run: | # Build the frontend app from the correct directory cd ./frontend # Increase Node.js memory limit for the build $env:NODE_OPTIONS="--max-old-space-size=8192" # Use npx to ensure we use the local nx version echo "Building with npx nx..." npx nx run artcraft:build if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } echo "Checking build output..." dir apps/artcraft/dist/ | Select-Object -First 10 # Update Tauri config to skip the build (since we already built) cd ${{ github.workspace }}/crates/desktop/artcraft Copy-Item tauri.conf.json tauri.conf.json.bak # Set beforeBuildCommand to empty using PowerShell $config = Get-Content tauri.conf.json | ConvertFrom-Json $config.build.beforeBuildCommand = "" $config | ConvertTo-Json -Depth 10 | Set-Content tauri.conf.json - name: build and publish uses: tauri-apps/tauri-action@v0 env: # NB(bt): This is needed by wreq. Hopefully it doesn't kill Tauri RUSTFLAGS: "-C target-feature=+crt-static" GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Use the SQLx query cache for SQLite SQLX_OFFLINE: true with: projectPath: ./crates/desktop/artcraft tagName: artcraft-v__VERSION__ # the action automatically replaces __VERSION__ with the app version. releaseName: "ArtCraft v__VERSION__" releaseBody: "Production build of ArtCraft. See the assets below to download and install." releaseDraft: true prerelease: false args: ${{ matrix.args }}