fix too many open files

This commit is contained in:
4pmtong 2026-03-23 11:50:46 +08:00
parent 498e365a72
commit aa6b1ea36e

View file

@ -39,6 +39,22 @@ jobs:
run: |
rm -rf node_modules
rm -rf release
rm -rf dist out build .vite
rm -rf node_modules/.cache || true
# Clean build outputs on GitHub-hosted runners to avoid stale artifacts in current job
- name: Clean build outputs (non-Windows)
if: "!contains(matrix.os, 'self-hosted') && runner.os != 'Windows'"
run: |
rm -rf release dist out build .vite
rm -rf node_modules/.cache || true
- name: Clean build outputs (Windows)
if: "!contains(matrix.os, 'self-hosted') && runner.os == 'Windows'"
shell: pwsh
run: |
Remove-Item -Recurse -Force release, dist, out, build, .vite -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force node_modules/.cache -ErrorAction SilentlyContinue
- name: Setup Node.js
if: "!contains(matrix.os, 'self-hosted')"
@ -92,6 +108,54 @@ jobs:
echo "LLVM_DIR=$(brew --prefix llvm@20)/lib/cmake/llvm" >> $GITHUB_ENV
echo "CMAKE_PREFIX_PATH=$(brew --prefix llvm@20)/lib/cmake/llvm" >> $GITHUB_ENV
# Prebuild separately on macOS so signing/package issues are isolated
- name: Build Release Files (macOS prebuild)
if: runner.os == 'macOS'
timeout-minutes: 45
run: |
npm run prebuild
env:
VITE_BASE_URL: ${{ secrets.VITE_BASE_URL }}
VITE_PROXY_URL: ${{ secrets.VITE_PROXY_URL }}
VITE_STACK_PROJECT_ID: ${{ secrets.VITE_STACK_PROJECT_ID }}
VITE_STACK_PUBLISHABLE_CLIENT_KEY: ${{ secrets.VITE_STACK_PUBLISHABLE_CLIENT_KEY }}
VITE_STACK_SECRET_SERVER_KEY: ${{ secrets.VITE_STACK_SECRET_SERVER_KEY }}
USE_NPM_INSTALL_BUN: 'true'
# Inspect payload size/file count before signing to diagnose EMFILE
- name: Inspect app payload before signing (macOS)
if: runner.os == 'macOS'
run: |
echo "==== Release size ===="
du -sh release || true
echo "==== Release file count ===="
find release | wc -l || true
APP_PATH=$(find release -name "*.app" -type d | head -1)
if [ -n "$APP_PATH" ]; then
echo "App found: $APP_PATH"
echo "==== App size ===="
du -sh "$APP_PATH" || true
echo "==== App file count ===="
find "$APP_PATH" | wc -l || true
if [ -d "$APP_PATH/Contents/Resources/prebuilt/venv" ]; then
echo "==== Embedded venv size ===="
du -sh "$APP_PATH/Contents/Resources/prebuilt/venv" || true
echo "==== Embedded venv file count ===="
find "$APP_PATH/Contents/Resources/prebuilt/venv" | wc -l || true
fi
else
echo "❌ No .app found after prebuild"
ls -la release/ || true
exit 1
fi
# Step for macOS builds with signing
- name: Build Release Files (macOS with signing)
if: runner.os == 'macOS'
@ -104,8 +168,20 @@ jobs:
fi
ulimit -n 65536 2>/dev/null || ulimit -n 10240 2>/dev/null || true
echo "File descriptor limit: $(ulimit -n) (hard: $(ulimit -Hn 2>/dev/null || echo 'N/A'))"
npm run prebuild
npx electron-builder --mac --${{ matrix.arch }} --publish never
set +e
npx electron-builder --mac dmg --${{ matrix.arch }} --publish never
BUILD_EXIT=$?
if [ $BUILD_EXIT -ne 0 ]; then
echo "First attempt failed with exit code $BUILD_EXIT"
echo "Retrying once in 5 seconds..."
sleep 5
npx electron-builder --mac dmg --${{ matrix.arch }} --publish never
BUILD_EXIT=$?
fi
exit $BUILD_EXIT
env:
CSC_LINK: ${{ secrets.CERT_P12 }}
CSC_KEY_PASSWORD: ${{ secrets.CERT_PASSWORD }}
@ -198,6 +274,7 @@ jobs:
path: |
release/*.AppImage
retention-days: 5
merge-release:
needs: build
runs-on: ubuntu-latest