Skip to content

Fix GitHub Actions workflow to use yarn instead of npm ci #108

Fix GitHub Actions workflow to use yarn instead of npm ci

Fix GitHub Actions workflow to use yarn instead of npm ci #108

name: Build Windows Native
on:
push:
branches: [ main, develop, 'feature/*', 'fix/*', 'copilot/*' ]
paths-ignore:
- 'docs/**'
- '*.md'
pull_request:
branches: [ main, develop ]
paths-ignore:
- 'docs/**'
- '*.md'
workflow_dispatch:
release:
types: [ published ]
jobs:
build-windows-native:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Cache Node modules
uses: actions/cache@v4
with:
path: |
node_modules
~/.yarn/cache
~/AppData/Local/electron/Cache
~/AppData/Local/electron-builder/Cache
key: ${{ runner.os }}-windows-native-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-windows-native-
${{ runner.os }}-yarn-
- name: Install dependencies
shell: bash
run: |
for i in 1 2 3; do
yarn install --frozen-lockfile && break || sleep 10
done
- name: Build web application
run: yarn build
- name: Install system dependencies for native builds
run: |
# Install Wine for potential cross-compilation support
# Note: Not needed on Windows, but kept for consistency
echo "Windows native build environment ready"
- name: Build Windows native applications
run: ./scripts/build-native-windows.sh
shell: bash
- name: Verify Windows builds
run: |
echo "Verifying Windows native builds..."
if (Test-Path "native-builds/windows") {
Get-ChildItem -Recurse "native-builds/windows" -Include *.exe,*.msi | ForEach-Object {
$size = [math]::Round($_.Length / 1MB, 2)
Write-Host "✓ $($_.Name): ${size}MB"
}
} else {
Write-Error "Windows builds not found!"
exit 1
}
shell: powershell
- name: Create build artifacts metadata
run: |
$version = (Get-Content package.json | ConvertFrom-Json).version
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
# Create metadata file using simple string concatenation
$metadata = "SVMSeek Wallet - Windows Native Build Artifacts`n"
$metadata += "===============================================`n"
$metadata += "Version: $version`n"
$metadata += "Build Date: $(Get-Date)`n"
$metadata += "Build System: Windows (GitHub Actions)`n"
$metadata += "Node Version: $(node --version)`n`n"
$metadata += "Windows Native Packages:`n"
if (Test-Path "native-builds/windows") {
Get-ChildItem -Recurse "native-builds/windows" -Include *.exe,*.msi | ForEach-Object {
$size = [math]::Round($_.Length / 1MB, 2)
$metadata += "- $($_.Name): ${size}MB`n"
}
}
$metadata += "`nInstallation Instructions:`n"
$metadata += "1. NSIS Installer (.exe): Run and follow setup wizard`n"
$metadata += "2. Portable (.exe): Extract and run directly`n"
$metadata += "3. MSI Package (.msi): Use Windows Installer`n`n"
$metadata += "Distribution Ready: Yes`n"
$metadata += "Digitally Signed: No (requires code signing certificate)`n"
$metadata | Out-File -FilePath "native-builds/windows/windows-build-metadata.txt" -Encoding UTF8
shell: powershell
- name: Upload Windows native artifacts
uses: actions/upload-artifact@v4
with:
name: svmseek-wallet-windows-native
path: |
native-builds/windows/
retention-days: 30
if-no-files-found: error
- name: Upload Windows installer for releases
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: svmseek-wallet-windows-installer
path: |
native-builds/windows/**/*.exe
native-builds/windows/**/*.msi
retention-days: 90
- name: Attach to GitHub Release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v1
with:
files: |
native-builds/windows/**/*.exe
native-builds/windows/**/*.msi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Windows Store package (if configured)
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
run: |
# Future: Create MSIX package for Microsoft Store
echo "Windows Store package creation would go here"
echo "Requires Microsoft Store developer account and certificates"
shell: bash