1212 timeout-minutes : 120
1313
1414 strategy :
15+ fail-fast : false
1516 matrix :
1617 include :
1718 - os : macos-latest
3940 run : |
4041 rm -rf node_modules
4142 rm -rf release
43+ rm -rf dist out build .vite
44+ rm -rf node_modules/.cache || true
45+
46+ # Clean build outputs on GitHub-hosted runners to avoid stale artifacts in current job
47+ - name : Clean build outputs (non-Windows)
48+ if : " !contains(matrix.os, 'self-hosted') && runner.os != 'Windows'"
49+ run : |
50+ rm -rf release dist out .vite
51+ rm -rf node_modules/.cache || true
52+
53+ - name : Clean build outputs (Windows)
54+ if : " !contains(matrix.os, 'self-hosted') && runner.os == 'Windows'"
55+ shell : pwsh
56+ run : |
57+ Remove-Item -Recurse -Force release, dist, out, .vite -ErrorAction SilentlyContinue
58+ Remove-Item -Recurse -Force node_modules/.cache -ErrorAction SilentlyContinue
4259
4360 - name : Setup Node.js
4461 if : " !contains(matrix.os, 'self-hosted')"
@@ -92,6 +109,20 @@ jobs:
92109 echo "LLVM_DIR=$(brew --prefix llvm@20)/lib/cmake/llvm" >> $GITHUB_ENV
93110 echo "CMAKE_PREFIX_PATH=$(brew --prefix llvm@20)/lib/cmake/llvm" >> $GITHUB_ENV
94111
112+ # Prebuild separately on macOS so signing/package issues are isolated
113+ - name : Build Release Files (macOS prebuild)
114+ if : runner.os == 'macOS'
115+ timeout-minutes : 45
116+ run : |
117+ npm run prebuild
118+ env :
119+ VITE_BASE_URL : ${{ secrets.VITE_BASE_URL }}
120+ VITE_PROXY_URL : ${{ secrets.VITE_PROXY_URL }}
121+ VITE_STACK_PROJECT_ID : ${{ secrets.VITE_STACK_PROJECT_ID }}
122+ VITE_STACK_PUBLISHABLE_CLIENT_KEY : ${{ secrets.VITE_STACK_PUBLISHABLE_CLIENT_KEY }}
123+ VITE_STACK_SECRET_SERVER_KEY : ${{ secrets.VITE_STACK_SECRET_SERVER_KEY }}
124+ USE_NPM_INSTALL_BUN : ' true'
125+
95126 # Step for macOS builds with signing
96127 - name : Build Release Files (macOS with signing)
97128 if : runner.os == 'macOS'
@@ -104,15 +135,28 @@ jobs:
104135 fi
105136 ulimit -n 65536 2>/dev/null || ulimit -n 10240 2>/dev/null || true
106137 echo "File descriptor limit: $(ulimit -n) (hard: $(ulimit -Hn 2>/dev/null || echo 'N/A'))"
107- npm run prebuild
108- npx electron-builder --mac --${{ matrix.arch }} --publish never
138+
139+ set +e
140+ npx electron-builder --mac dmg --${{ matrix.arch }} --publish never
141+ BUILD_EXIT=$?
142+
143+ if [ $BUILD_EXIT -ne 0 ]; then
144+ echo "First attempt failed with exit code $BUILD_EXIT"
145+ echo "Retrying once in 5 seconds..."
146+ sleep 5
147+ npx electron-builder --mac dmg --${{ matrix.arch }} --publish never
148+ BUILD_EXIT=$?
149+ fi
150+
151+ exit $BUILD_EXIT
109152 env :
110153 CSC_LINK : ${{ secrets.CERT_P12 }}
111154 CSC_KEY_PASSWORD : ${{ secrets.CERT_PASSWORD }}
112155 APPLE_ID : ${{ secrets.APPLE_ID }}
113156 APPLE_APP_SPECIFIC_PASSWORD : ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
114157 APPLE_TEAM_ID : ${{ secrets.APPLE_TEAM_ID }}
115158 VITE_BASE_URL : ${{ secrets.VITE_BASE_URL }}
159+ VITE_PROXY_URL : ${{ secrets.VITE_PROXY_URL }}
116160 VITE_STACK_PROJECT_ID : ${{ secrets.VITE_STACK_PROJECT_ID }}
117161 VITE_STACK_PUBLISHABLE_CLIENT_KEY : ${{ secrets.VITE_STACK_PUBLISHABLE_CLIENT_KEY }}
118162 VITE_STACK_SECRET_SERVER_KEY : ${{ secrets.VITE_STACK_SECRET_SERVER_KEY }}
@@ -127,6 +171,7 @@ jobs:
127171 npx electron-builder --win --${{ matrix.arch }} --publish never
128172 env :
129173 VITE_BASE_URL : ${{ secrets.VITE_BASE_URL }}
174+ VITE_PROXY_URL : ${{ secrets.VITE_PROXY_URL }}
130175 VITE_STACK_PROJECT_ID : ${{ secrets.VITE_STACK_PROJECT_ID }}
131176 VITE_STACK_PUBLISHABLE_CLIENT_KEY : ${{ secrets.VITE_STACK_PUBLISHABLE_CLIENT_KEY }}
132177 VITE_STACK_SECRET_SERVER_KEY : ${{ secrets.VITE_STACK_SECRET_SERVER_KEY }}
@@ -141,6 +186,7 @@ jobs:
141186 npx electron-builder --linux --${{ matrix.arch }} --publish never
142187 env :
143188 VITE_BASE_URL : ${{ secrets.VITE_BASE_URL }}
189+ VITE_PROXY_URL : ${{ secrets.VITE_PROXY_URL }}
144190 VITE_STACK_PROJECT_ID : ${{ secrets.VITE_STACK_PROJECT_ID }}
145191 VITE_STACK_PUBLISHABLE_CLIENT_KEY : ${{ secrets.VITE_STACK_PUBLISHABLE_CLIENT_KEY }}
146192 VITE_STACK_SECRET_SERVER_KEY : ${{ secrets.VITE_STACK_SECRET_SERVER_KEY }}
@@ -195,6 +241,7 @@ jobs:
195241 path : |
196242 release/*.AppImage
197243 retention-days : 5
244+
198245 merge-release :
199246 needs : build
200247 runs-on : ubuntu-latest
0 commit comments