|
23 | 23 | NODE_VERSION: '20' |
24 | 24 |
|
25 | 25 | jobs: |
| 26 | + resolve-matrix: |
| 27 | + runs-on: ubuntu-latest |
| 28 | + outputs: |
| 29 | + matrix: ${{ steps.set-matrix.outputs.matrix }} |
| 30 | + |
| 31 | + steps: |
| 32 | + - name: Resolve build matrix |
| 33 | + id: set-matrix |
| 34 | + shell: bash |
| 35 | + env: |
| 36 | + EVENT_NAME: ${{ github.event_name }} |
| 37 | + DELIVERY_PROFILE: ${{ inputs.delivery_profile }} |
| 38 | + run: | |
| 39 | + if [[ "$EVENT_NAME" == "workflow_dispatch" ]]; then |
| 40 | + profile="$DELIVERY_PROFILE" |
| 41 | + else |
| 42 | + profile="full" |
| 43 | + fi |
| 44 | +
|
| 45 | + case "$profile" in |
| 46 | + windows-only) |
| 47 | + matrix='{"include":[{"os":"windows-latest","platform":"windows","build_command":"npx electron-builder --config electron-builder.yml --win --publish never"}]}' |
| 48 | + ;; |
| 49 | + fast) |
| 50 | + matrix='{"include":[{"os":"windows-latest","platform":"windows","build_command":"npx electron-builder --config electron-builder.yml --win --publish never"},{"os":"ubuntu-latest","platform":"linux","build_command":"npx electron-builder --config electron-builder.yml --linux --publish never"}]}' |
| 51 | + ;; |
| 52 | + *) |
| 53 | + matrix='{"include":[{"os":"windows-latest","platform":"windows","build_command":"npx electron-builder --config electron-builder.yml --win --publish never"},{"os":"macos-latest","platform":"macos","build_command":"npx electron-builder --config electron-builder.yml --mac --publish never"},{"os":"ubuntu-latest","platform":"linux","build_command":"npx electron-builder --config electron-builder.yml --linux --publish never"}]}' |
| 54 | + ;; |
| 55 | + esac |
| 56 | +
|
| 57 | + echo "matrix=$matrix" >> "$GITHUB_OUTPUT" |
| 58 | +
|
26 | 59 | build: |
| 60 | + needs: resolve-matrix |
27 | 61 | runs-on: ${{ matrix.os }} |
28 | 62 |
|
29 | 63 | strategy: |
30 | 64 | fail-fast: false |
31 | | - matrix: |
32 | | - include: ${{ fromJSON( |
33 | | - github.event_name == 'workflow_dispatch' && github.event.inputs.delivery_profile == 'windows-only' && |
34 | | - '[{"os":"windows-latest","platform":"windows","build_command":"npx electron-builder --config electron-builder.yml --win --publish never","artifact_name":"windows-build","artifact_path":"dist/*.exe\\ndist/*.zip"}]' || |
35 | | - github.event_name == 'workflow_dispatch' && github.event.inputs.delivery_profile == 'fast' && |
36 | | - '[{"os":"windows-latest","platform":"windows","build_command":"npx electron-builder --config electron-builder.yml --win --publish never","artifact_name":"windows-build","artifact_path":"dist/*.exe\\ndist/*.zip"},{"os":"ubuntu-latest","platform":"linux","build_command":"npx electron-builder --config electron-builder.yml --linux --publish never","artifact_name":"linux-build","artifact_path":"dist/*.AppImage\\ndist/*.deb\\ndist/*.zip"}]' || |
37 | | - '[{"os":"windows-latest","platform":"windows","build_command":"npx electron-builder --config electron-builder.yml --win --publish never","artifact_name":"windows-build","artifact_path":"dist/*.exe\\ndist/*.zip"},{"os":"macos-latest","platform":"macos","build_command":"npx electron-builder --config electron-builder.yml --mac --publish never","artifact_name":"macos-build","artifact_path":"dist/*.dmg\\ndist/*.zip"},{"os":"ubuntu-latest","platform":"linux","build_command":"npx electron-builder --config electron-builder.yml --linux --publish never","artifact_name":"linux-build","artifact_path":"dist/*.AppImage\\ndist/*.deb\\ndist/*.zip"}]' |
38 | | - ) }} |
| 65 | + matrix: ${{ fromJSON(needs.resolve-matrix.outputs.matrix) }} |
39 | 66 |
|
40 | 67 | steps: |
41 | 68 | - name: Checkout code |
@@ -150,11 +177,39 @@ jobs: |
150 | 177 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
151 | 178 | CSC_IDENTITY_AUTO_DISCOVERY: false |
152 | 179 |
|
153 | | - - name: Upload artifacts |
| 180 | + - name: Upload artifacts (Windows) |
| 181 | + if: matrix.platform == 'windows' |
154 | 182 | uses: actions/upload-artifact@v4 |
155 | 183 | with: |
156 | | - name: ${{ matrix.artifact_name }} |
157 | | - path: ${{ matrix.artifact_path }} |
| 184 | + name: windows-build |
| 185 | + path: | |
| 186 | + dist/*.exe |
| 187 | + dist/*.zip |
| 188 | + retention-days: 14 |
| 189 | + compression-level: 0 |
| 190 | + if-no-files-found: ignore |
| 191 | + |
| 192 | + - name: Upload artifacts (macOS) |
| 193 | + if: matrix.platform == 'macos' |
| 194 | + uses: actions/upload-artifact@v4 |
| 195 | + with: |
| 196 | + name: macos-build |
| 197 | + path: | |
| 198 | + dist/*.dmg |
| 199 | + dist/*.zip |
| 200 | + retention-days: 14 |
| 201 | + compression-level: 0 |
| 202 | + if-no-files-found: ignore |
| 203 | + |
| 204 | + - name: Upload artifacts (Linux) |
| 205 | + if: matrix.platform == 'linux' |
| 206 | + uses: actions/upload-artifact@v4 |
| 207 | + with: |
| 208 | + name: linux-build |
| 209 | + path: | |
| 210 | + dist/*.AppImage |
| 211 | + dist/*.deb |
| 212 | + dist/*.zip |
158 | 213 | retention-days: 14 |
159 | 214 | compression-level: 0 |
160 | 215 | if-no-files-found: ignore |
|
0 commit comments