name: Test Build on: workflow_dispatch: env: ELECTRON_OUTPUT_PATH: ./dist_electron GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GH_TOKEN }} USE_HARD_LINKS: false jobs: test-build: name: Test Build for ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-13, windows-latest, windows-11-arm, macos-latest] steps: - name: Set up git config run: | git config --global core.autocrlf false - name: Check out git repository uses: actions/checkout@v4 - name: Install Node.js uses: actions/setup-node@v4 with: node-version: '22.x' - name: Install system deps if: matrix.os == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install --no-install-recommends -y icnsutils graphicsmagick xz-utils - name: Install dependencies (macOS) if: matrix.os == 'macos-13' || matrix.os == 'macos-latest' run: | yarn config set ignore-engines true yarn install - name: Install dependencies (Windows) if: matrix.os == 'windows-latest' || matrix.os == 'windows-11-arm' run: | yarn config set ignore-engines true yarn install - name: Install dependencies (Linux) if: matrix.os == 'ubuntu-latest' run: | yarn config set ignore-engines true yarn install - name: Modify electron-builder.json for Windows x64 if: matrix.os == 'windows-latest' run: | # Remove arm64 from the arch array, keep only x64 $config = Get-Content electron-builder.json | ConvertFrom-Json $config.win.target[0].arch = @("x64", "ia32") $config | ConvertTo-Json -Depth 10 | Set-Content electron-builder.json - name: Modify electron-builder.json for Windows ARM64 if: matrix.os == 'windows-11-arm' run: | # Remove x64 from the arch array, keep only arm64 $config = Get-Content electron-builder.json | ConvertFrom-Json $config.win.target[0].arch = @("arm64") $config | ConvertTo-Json -Depth 10 | Set-Content electron-builder.json - name: Modify electron-builder.json for Macos x64 if: matrix.os == 'macos-13' run: | # Remove arm64 from the arch array, keep only x64 jq '.mac.target[0].arch = ["x64"]' electron-builder.json > tmp.json && mv tmp.json electron-builder.json - name: Modify electron-builder.json for Macos ARM64 if: matrix.os == 'macos-latest' run: | # Remove x64 from the arch array, keep only arm64 jq '.mac.target[0].arch = ["arm64"]' electron-builder.json > tmp.json && mv tmp.json electron-builder.json - name: Build application (Windows x64) if: matrix.os == 'windows-latest' || matrix.os == 'windows-11-arm' run: yarn build:win env: ELECTRON_SKIP_NOTARIZATION: true GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GH_TOKEN }} - name: Build application (macOS) if: matrix.os == 'macos-13' || matrix.os == 'macos-latest' run: yarn build:mac env: ELECTRON_SKIP_NOTARIZATION: true GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GH_TOKEN }} USE_HARD_LINKS: false - name: Build application (Linux) if: matrix.os == 'ubuntu-latest' run: yarn build:linux env: ELECTRON_SKIP_NOTARIZATION: true GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GH_TOKEN }} - name: Upload Windows x64 executables if: matrix.os == 'windows-latest' uses: actions/upload-artifact@v4 with: name: windows-x64-executables path: | dist_electron/* retention-days: 30 if-no-files-found: error - name: Upload Windows ARM64 executables if: matrix.os == 'windows-11-arm' uses: actions/upload-artifact@v4 with: name: windows-arm64-executables path: | dist_electron/*.exe retention-days: 30 if-no-files-found: error - name: Upload macOS packages if: matrix.os == 'macos-13' uses: actions/upload-artifact@v4 with: name: macos-x64-packages path: | dist_electron/*.dmg retention-days: 30 if-no-files-found: error - name: Upload macOS ARM64 packages if: matrix.os == 'macos-latest' uses: actions/upload-artifact@v4 with: name: macos-arm64-packages path: | dist_electron/*.dmg retention-days: 30 - name: Upload Linux packages if: matrix.os == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: linux-packages path: | dist_electron/*.AppImage dist_electron/*.snap retention-days: 30 if-no-files-found: ignore - name: Upload Windows x64 yml if: matrix.os == 'windows-latest' uses: actions/upload-artifact@v4 with: name: windows-x64-yml path: | dist_electron/github/* retention-days: 30 if-no-files-found: error - name: Upload Windows ARM64 yml if: matrix.os == 'windows-11-arm' uses: actions/upload-artifact@v4 with: name: windows-arm64-yml path: | dist_electron/github/* retention-days: 30 if-no-files-found: error - name: Upload macOS yml if: matrix.os == 'macos-13' uses: actions/upload-artifact@v4 with: name: macos-x64-yml path: | dist_electron/github/* retention-days: 30 if-no-files-found: error - name: Upload macOS ARM64 yml if: matrix.os == 'macos-latest' uses: actions/upload-artifact@v4 with: name: macos-arm64-yml path: | dist_electron/github/* retention-days: 30 if-no-files-found: error - name: Upload Linux yml if: matrix.os == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: linux-yml path: | dist_electron/github/* retention-days: 30 if-no-files-found: ignore