@@ -20,26 +20,32 @@ jobs:
2020 platform : win
2121 arch : x64
2222 output : flashforge-webui-win-x64.exe
23+ can_execute : true
2324 - os : macos-15-intel
2425 platform : mac
2526 arch : x64
2627 output : flashforge-webui-macos-x64.bin
28+ can_execute : true
2729 - os : macos-latest
2830 platform : mac
2931 arch : arm64
3032 output : flashforge-webui-macos-arm64.bin
33+ can_execute : true
3134 - os : ubuntu-latest
3235 platform : linux
3336 arch : x64
3437 output : flashforge-webui-linux-x64.bin
38+ can_execute : true
3539 - os : ubuntu-24.04-arm
3640 platform : linux
3741 arch : arm64
3842 output : flashforge-webui-linux-arm64.bin
43+ can_execute : true
3944 - os : ubuntu-latest
4045 platform : linux
4146 arch : armv7
4247 output : flashforge-webui-linux-armv7.bin
48+ can_execute : false
4349
4450 steps :
4551 - name : Checkout code
@@ -98,29 +104,39 @@ jobs:
98104 - name : Verify binary size
99105 shell : bash
100106 run : |
101- size=$(stat -c%s "dist/${{ matrix.output }}" 2>/dev/null || stat -f% "dist/${{ matrix.output }}")
107+ if [[ "${{ runner.os }}" == "macOS" ]] || [[ "${{ runner.os }}" == "macos-latest" ]] || [[ "${{ runner.os }}" == "macos-15-intel" ]]; then
108+ size=$(stat -f%z "dist/${{ matrix.output }}")
109+ elif [[ "${{ runner.os }}" == "Windows" ]]; then
110+ size=$(powershell -Command "(Get-Item 'dist/${{ matrix.output }}').length")
111+ else
112+ size=$(stat -c%s "dist/${{ matrix.output }}")
113+ fi
114+
102115 if [ $size -lt 40000000 ]; then
103116 echo "::error::Binary size ($size bytes) is too small - assets may not be embedded"
104117 exit 1
105118 fi
106119 echo "✓ Binary size: $size bytes"
107120
108121 - name : Start binary in background
122+ if : matrix.can_execute == true
109123 shell : bash
110124 run : |
111125 if [[ "${{ runner.os }}" == "Windows" ]]; then
112- powershell -Command "Start-Process -FilePath '.\dist\${{ matrix.output }}' -ArgumentList '--no-printers' -RedirectStart 'startup.log'"
126+ powershell -Command "Start-Process -FilePath '.\dist\${{ matrix.output }}' -ArgumentList '--no-printers' -RedirectStandardOutput 'startup.log' -RedirectStandardError 'startup.log'"
113127 else
114128 chmod +x dist/${{ matrix.output }}
115129 ./dist/${{ matrix.output }} --no-printers > startup.log 2>&1 &
116130 echo $! > binary.pid
117131 fi
118132
119133 - name : Wait for startup
134+ if : matrix.can_execute == true
120135 shell : bash
121136 run : sleep 15
122137
123138 - name : Validate startup
139+ if : matrix.can_execute == true
124140 shell : bash
125141 run : |
126142 if grep -iE "\[Error\]|\[Fatal\]|exception" startup.log; then
@@ -138,11 +154,12 @@ jobs:
138154 echo "✓ Startup successful"
139155
140156 - name : Test API endpoints
157+ if : matrix.can_execute == true
141158 shell : bash
142159 run : |
143160 # Test 1: Auth status (public endpoint) - should return valid JSON
144161 response=$(curl -s http://localhost:3000/api/auth/status)
145- if ! echo "$response" | jq -e '.authRequired ' > /dev/null; then
162+ if ! echo "$response" | jq '. ' > /dev/null 2>&1 ; then
146163 echo "::error::Auth status API returned invalid JSON: $response"
147164 exit 1
148165 fi
@@ -166,6 +183,7 @@ jobs:
166183 echo "✓ All API tests passed"
167184
168185 - name : Stop binary
186+ if : matrix.can_execute == true
169187 shell : bash
170188 run : |
171189 if [[ "${{ runner.os }}" == "Windows" ]]; then
@@ -180,6 +198,7 @@ jobs:
180198 sleep 3
181199
182200 - name : Verify cleanup
201+ if : matrix.can_execute == true
183202 shell : bash
184203 run : |
185204 if [[ "${{ runner.os }}" == "Windows" ]]; then
0 commit comments