# test-build.yml # Workflow's name name: Test Build # Workflow's trigger 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] 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' run: | yarn config set ignore-engines true yarn install npm rebuild --platform=darwin --arch=arm64 sharp - name: Install dependencies (Windows x64) if: matrix.os == 'windows-latest' run: | yarn config set ignore-engines true yarn install - name: Install dependencies (Windows ARM64) if: 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: Build application (Windows x64) if: matrix.os == 'windows-latest' run: yarn build:win env: ELECTRON_SKIP_NOTARIZATION: true GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GH_TOKEN }} - name: Build application (Windows ARM64) if: 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' 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-packages path: | dist_electron/*.dmg retention-days: 30 if-no-files-found: error - 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-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