diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e5783be2e3..55b597c6c03 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -155,9 +155,15 @@ jobs: linux: needs: lint - runs-on: ubuntu-22.04-8-cores + runs-on: ${{ matrix.os }} timeout-minutes: 30 - + strategy: + matrix: + include: + - os: ubuntu-22.04-8-cores + arch: x64 + - os: ubuntu-22.04-arm64-4-cores + arch: arm64 steps: - run: lsb_release -a - run: uname -a @@ -187,6 +193,11 @@ jobs: # path: ${{ env.SCCACHE_PATH }} # key: sccache-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'patches/**') }} + # Needed because electron-builder's bundled FPM doesn't support arm64 + - name: Install FPM (for packaging) + if: ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' }} + run: sudo gem install fpm + - name: Install Desktop node_modules run: pnpm install env: @@ -213,6 +224,7 @@ jobs: # CXX: sccache g++ # SCCACHE_GHA_ENABLED: "true" DISABLE_INSPECT_FUSE: on + USE_SYSTEM_FPM: ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' && 'true' || '' }} - name: Build without packaging .deb file run: pnpm run build:release --linux dir if: github.ref != 'refs/heads/main' @@ -221,10 +233,11 @@ jobs: # CXX: sccache g++ # SCCACHE_GHA_ENABLED: "true" DISABLE_INSPECT_FUSE: on + USE_SYSTEM_FPM: ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' && 'true' || '' }} - name: Upload installer size if: ${{ github.repository == 'signalapp/Signal-Desktop-Private' && github.ref == 'refs/heads/main' }} - run: node ts/scripts/dd-installer-size.js linux + run: node ts/scripts/dd-installer-size.js linux-${{ matrix.arch }} env: DD_API_KEY: ${{ secrets.DATADOG_API_KEY }} diff --git a/ts/scripts/dd-installer-size.ts b/ts/scripts/dd-installer-size.ts index eef964d1bc2..fc7320ddae5 100644 --- a/ts/scripts/dd-installer-size.ts +++ b/ts/scripts/dd-installer-size.ts @@ -7,7 +7,8 @@ import { join } from 'node:path'; import { name as NAME, version as VERSION } from '../../package.json'; const SUPPORT_CONFIG = new Set([ - 'linux', + 'linux-x64', + 'linux-arm64', 'windows', 'macos-arm64', 'macos-x64', diff --git a/ts/scripts/test-release.ts b/ts/scripts/test-release.ts index fbfc2ecdb0b..22111b3d14c 100644 --- a/ts/scripts/test-release.ts +++ b/ts/scripts/test-release.ts @@ -31,6 +31,9 @@ if (process.platform === 'darwin') { } else if (process.platform === 'win32') { archive = join('win-unpacked', 'resources', 'app.asar'); exe = join('win-unpacked', `${packageJson.productName}.exe`); +} else if (process.platform === 'linux' && process.arch !== 'x64') { + archive = join(`linux-${process.arch}-unpacked`, 'resources', 'app.asar'); + exe = join(`linux-${process.arch}-unpacked`, packageJson.name); } else if (process.platform === 'linux') { archive = join('linux-unpacked', 'resources', 'app.asar'); exe = join('linux-unpacked', packageJson.name);