From 6a1f20d52c42ea3073145bd7cfc174d11d2aa1e2 Mon Sep 17 00:00:00 2001 From: LongYinan Date: Wed, 17 May 2023 15:13:08 +0800 Subject: [PATCH] build: fix electron release build process --- .github/workflows/build.yml | 5 +- .github/workflows/nightly-build.yml | 57 ++++++++++++++--------- .github/workflows/release-desktop-app.yml | 36 ++++++-------- apps/electron/package.json | 4 -- apps/electron/scripts/generate-assets.mjs | 3 -- 5 files changed, 50 insertions(+), 55 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8f99e6e535c4f..cc78b7c6d8f57 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -337,12 +337,11 @@ jobs: shell: bash run: | rm -rf apps/electron/node_modules/better-sqlite3/build - yarn workspace @affine/electron rebuild:for-electron + yarn workspace @affine/electron rebuild:for-electron --arch=${{ matrix.spec.arch }} - name: Run desktop tests if: ${{ matrix.spec.test && matrix.spec.os == 'ubuntu-latest' }} - run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test - working-directory: apps/electron + run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn workspace @affine/electron test env: COVERAGE: true diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 5ad0ffe7f16d6..e2e969321a5db 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -73,28 +73,36 @@ jobs: name: before-make-web-static path: apps/electron/resources/web-static - - name: Upload Artifact (electron dist) - uses: actions/upload-artifact@v3 - with: - name: before-make-electron-dist - path: apps/electron/dist - - - name: Upload YML Build Script - uses: actions/upload-artifact@v3 - with: - name: release-yml-build-script - path: apps/electron/scripts/generate-yml.js - make-distribution: environment: production strategy: # all combinations: macos-latest x64, macos-latest arm64, windows-latest x64, ubuntu-latest x64 matrix: spec: - - { os: macos-latest, platform: macos, arch: x64 } - - { os: macos-latest, platform: macos, arch: arm64 } - - { os: ubuntu-latest, platform: linux, arch: x64 } - - { os: windows-latest, platform: windows, arch: x64 } + - { + os: macos-latest, + platform: macos, + arch: x64, + target: x86_64-apple-darwin, + } + - { + os: macos-latest, + platform: macos, + arch: arm64, + target: aarch64-apple-darwin, + } + - { + os: ubuntu-latest, + platform: linux, + arch: x64, + target: x86_64-unknown-linux-gnu, + } + - { + os: windows-latest, + platform: windows, + arch: x64, + target: x86_64-pc-windows-msvc, + } runs-on: ${{ matrix.spec.os }} needs: - before-make @@ -114,10 +122,14 @@ jobs: with: name: before-make-web-static path: apps/electron/resources/web-static - - uses: actions/download-artifact@v3 - with: - name: before-make-electron-dist - path: apps/electron/dist + - name: Rebuild Electron dependences + shell: bash + run: | + rm -rf apps/electron/node_modules/better-sqlite3/build + yarn workspace @affine/electron rebuild:for-electron --arch=${{ matrix.spec.arch }} + + - name: Build layers + run: yarn workspace @affine/electron build-layers - name: Signing By Apple Developer ID if: ${{ matrix.spec.platform == 'macos' }} @@ -127,8 +139,7 @@ jobs: p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }} - name: make - run: yarn make-${{ matrix.spec.platform }}-${{ matrix.spec.arch }} - working-directory: apps/electron + run: yarn workspace @affine/electron make --platform=${{ matrix.spec.platform }} --arch=${{ matrix.spec.arch }} - name: Save artifacts (mac) if: ${{ matrix.spec.platform == 'macos' }} @@ -195,7 +206,7 @@ jobs: node-version: 18 - name: Generate Release yml run: | - node generate-yml.js + node ./apps/electron/scripts/generate-yml.js env: RELEASE_VERSION: ${{ needs.set-build-version.outputs.version }} - name: Create Release Draft diff --git a/.github/workflows/release-desktop-app.yml b/.github/workflows/release-desktop-app.yml index 9d1b8e93fd680..2c65a075d5bd1 100644 --- a/.github/workflows/release-desktop-app.yml +++ b/.github/workflows/release-desktop-app.yml @@ -49,8 +49,7 @@ jobs: - name: Setup Node.js uses: ./.github/actions/setup-node - name: generate-assets - working-directory: apps/electron - run: yarn generate-assets + run: yarn workspace @affine/electron generate-assets env: NEXT_PUBLIC_FIREBASE_API_KEY: ${{ secrets.NEXT_PUBLIC_FIREBASE_API_KEY }} NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${{ secrets.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN }} @@ -75,18 +74,6 @@ jobs: name: before-make-web-static path: apps/electron/resources/web-static - - name: Upload Artifact (electron dist) - uses: actions/upload-artifact@v3 - with: - name: before-make-electron-dist - path: apps/electron/dist - - - name: Upload YML Build Script - uses: actions/upload-artifact@v3 - with: - name: release-yml-build-script - path: apps/electron/scripts/generate-yml.js - make-distribution: environment: ${{ github.ref_name == 'master' && 'production' || 'development' }} strategy: @@ -136,10 +123,15 @@ jobs: with: name: before-make-web-static path: apps/electron/resources/web-static - - uses: actions/download-artifact@v3 - with: - name: before-make-electron-dist - path: apps/electron/dist + + - name: Rebuild Electron dependences + shell: bash + run: | + rm -rf apps/electron/node_modules/better-sqlite3/build + yarn workspace @affine/electron rebuild:for-electron --arch=${{ matrix.spec.arch }} + + - name: Build layers + run: yarn workspace @affine/electron build-layers - name: Signing By Apple Developer ID if: ${{ matrix.spec.platform == 'macos' }} @@ -149,8 +141,7 @@ jobs: p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }} - name: make - run: yarn make-${{ matrix.spec.platform }}-${{ matrix.spec.arch }} - working-directory: apps/electron + run: yarn workspace @affine/electron make --platform=${{ matrix.spec.platform }} --arch=${{ matrix.spec.arch }} - name: Save artifacts (mac) if: ${{ matrix.spec.platform == 'macos' }} @@ -213,8 +204,9 @@ jobs: with: node-version: 18 - name: Generate Release yml - run: | - RELEASE_VERSION=${{ github.event.inputs.version }} node generate-yml.js + run: node ./apps/electron/scripts/generate-yml.js + env: + RELEASE_VERSION: ${{ github.event.inputs.version }} - name: Create Release Draft uses: softprops/action-gh-release@v1 env: diff --git a/apps/electron/package.json b/apps/electron/package.json index 122fafbf2d184..d5266077fa204 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -18,10 +18,6 @@ "generate-main-exposed-meta": "zx scripts/generate-main-exposed-meta.mjs", "package": "electron-forge package", "make": "electron-forge make", - "make-macos-arm64": "electron-forge make --platform=darwin --arch=arm64", - "make-macos-x64": "electron-forge make --platform=darwin --arch=x64", - "make-windows-x64": "electron-forge make --platform=win32 --arch=x64", - "make-linux-x64": "electron-forge make --platform=linux --arch=x64", "rebuild:for-unit-test": "yarn rebuild better-sqlite3", "rebuild:for-electron": "yarn electron-rebuild", "test": "playwright test" diff --git a/apps/electron/scripts/generate-assets.mjs b/apps/electron/scripts/generate-assets.mjs index abf5c2f384ccb..70b35d4683528 100644 --- a/apps/electron/scripts/generate-assets.mjs +++ b/apps/electron/scripts/generate-assets.mjs @@ -32,9 +32,6 @@ if (process.platform === 'win32') { cd(repoRootDir); -// step 1: build electron resources -await $`yarn workspace @affine/electron build-layers`; - // step 2: build web (nextjs) dist if (!process.env.SKIP_WEB_BUILD) { process.env.ENABLE_LEGACY_PROVIDER = 'false';