Skip to content

Commit 3458ea6

Browse files
author
刘威
committed
ci: fix dynamic matrix workflow parsing
1 parent f284332 commit 3458ea6

1 file changed

Lines changed: 66 additions & 11 deletions

File tree

.github/workflows/build.yml

Lines changed: 66 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,46 @@ env:
2323
NODE_VERSION: '20'
2424

2525
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+
2659
build:
60+
needs: resolve-matrix
2761
runs-on: ${{ matrix.os }}
2862

2963
strategy:
3064
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) }}
3966

4067
steps:
4168
- name: Checkout code
@@ -150,11 +177,39 @@ jobs:
150177
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
151178
CSC_IDENTITY_AUTO_DISCOVERY: false
152179

153-
- name: Upload artifacts
180+
- name: Upload artifacts (Windows)
181+
if: matrix.platform == 'windows'
154182
uses: actions/upload-artifact@v4
155183
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
158213
retention-days: 14
159214
compression-level: 0
160215
if-no-files-found: ignore

0 commit comments

Comments
 (0)