108 lines
3.3 KiB
YAML
108 lines
3.3 KiB
YAML
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 }}
|