1
0
forked from boos/BoosAPI

feat: implement macOS notarization and ad-hoc signing in afterSign script

feat: add run-server script to manage server execution and compatibility checks

feat: create main application logic for desktop with window management, server handling, and auto-updater

test: add unit tests for desktop runtime helpers

feat: implement desktop server environment configuration and health check

test: add tests for server configuration and desktop routes

feat: add native module guard for better-sqlite3 compatibility

test: add tests for native module guard functionality

test: add comprehensive tests for account verification feedback handling

feat: implement account verification feedback helpers

chore: add TypeScript configuration for desktop builds
This commit is contained in:
cita
2026-03-06 16:24:41 +08:00
parent acdc846b13
commit 2a810facb8
45 changed files with 6712 additions and 405 deletions
+23 -62
View File
@@ -39,7 +39,7 @@ jobs:
run: npm run build
build-packages:
name: Build Package (${{ matrix.os }})
name: Build Desktop Package (${{ matrix.os }})
needs: verify
runs-on: ${{ matrix.os }}
timeout-minutes: 30
@@ -61,70 +61,31 @@ jobs:
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Build desktop artifacts
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
CSC_IDENTITY_AUTO_DISCOVERY: true
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: npm run dist:desktop
- name: Prune dev dependencies
run: npm prune --omit=dev
- name: Assemble archive (Unix)
if: runner.os != 'Windows'
shell: bash
run: |
set -euxo pipefail
ASSET_OS="$(echo "${RUNNER_OS}" | tr '[:upper:]' '[:lower:]')"
ASSET_ARCH="$(echo "${RUNNER_ARCH}" | tr '[:upper:]' '[:lower:]')"
ASSET_NAME="metapi-${GITHUB_REF_NAME}-${ASSET_OS}-${ASSET_ARCH}.tar.gz"
PACKAGE_DIR="release/metapi"
mkdir -p "$PACKAGE_DIR"
cp -R dist node_modules drizzle "$PACKAGE_DIR"/
cp package.json "$PACKAGE_DIR"/
[ -f .env.example ] && cp .env.example "$PACKAGE_DIR"/
[ -f LICENSE ] && cp LICENSE "$PACKAGE_DIR"/
cp scripts/release/start.sh "$PACKAGE_DIR"/start.sh
chmod +x "$PACKAGE_DIR"/start.sh
tar -czf "release/${ASSET_NAME}" -C release metapi
echo "ASSET_NAME=${ASSET_NAME}" >> "$GITHUB_ENV"
- name: Assemble archive (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
$assetOs = $env:RUNNER_OS.ToLower()
$assetArch = $env:RUNNER_ARCH.ToLower()
$assetName = "metapi-$env:GITHUB_REF_NAME-$assetOs-$assetArch.zip"
$packageDir = "release\\metapi"
New-Item -ItemType Directory -Path $packageDir -Force | Out-Null
Copy-Item -Recurse -Force dist $packageDir
Copy-Item -Recurse -Force node_modules $packageDir
Copy-Item -Recurse -Force drizzle $packageDir
Copy-Item -Force package.json $packageDir
if (Test-Path ".env.example") { Copy-Item -Force .env.example $packageDir }
if (Test-Path "LICENSE") { Copy-Item -Force LICENSE $packageDir }
Copy-Item -Force scripts\\release\\start.bat "$packageDir\\start.bat"
Compress-Archive -Path $packageDir -DestinationPath "release\\$assetName" -Force
"ASSET_NAME=$assetName" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Upload package (Unix)
if: runner.os != 'Windows'
- name: Upload desktop package
uses: actions/upload-artifact@v4
with:
name: metapi-${{ github.ref_name }}-${{ runner.os }}-${{ runner.arch }}
path: release/*.tar.gz
if-no-files-found: error
- name: Upload package (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v4
with:
name: metapi-${{ github.ref_name }}-${{ runner.os }}-${{ runner.arch }}
path: release/*.zip
name: metapi-desktop-${{ github.ref_name }}-${{ runner.os }}-${{ runner.arch }}
path: |
release/*.exe
release/*.dmg
release/*.zip
release/*.AppImage
release/*.deb
release/*.blockmap
release/latest*.yml
release/latest*.json
release/builder-debug.yml
if-no-files-found: error
publish-release: