Skip to content

Commit 1c0017e

Browse files
committed
Add Linux arm64 to CI pipeline
1 parent 07a05f3 commit 1c0017e

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

.github/workflows/ci.yml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,15 @@ jobs:
155155

156156
linux:
157157
needs: lint
158-
runs-on: ubuntu-22.04-8-cores
158+
runs-on: ${{ matrix.os }}
159159
timeout-minutes: 30
160-
160+
strategy:
161+
matrix:
162+
include:
163+
- os: ubuntu-22.04-8-cores
164+
arch: x64
165+
- os: ubuntu-22.04-arm64-4-cores
166+
arch: arm64
161167
steps:
162168
- run: lsb_release -a
163169
- run: uname -a
@@ -187,6 +193,11 @@ jobs:
187193
# path: ${{ env.SCCACHE_PATH }}
188194
# key: sccache-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'patches/**') }}
189195

196+
# Needed because electron-builder's bundled FPM doesn't support arm64
197+
- name: Install FPM (for packaging)
198+
if: ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' }}
199+
run: sudo gem install fpm
200+
190201
- name: Install Desktop node_modules
191202
run: pnpm install
192203
env:
@@ -213,6 +224,7 @@ jobs:
213224
# CXX: sccache g++
214225
# SCCACHE_GHA_ENABLED: "true"
215226
DISABLE_INSPECT_FUSE: on
227+
USE_SYSTEM_FPM: ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' && 'true' || '' }}
216228
- name: Build without packaging .deb file
217229
run: pnpm run build:release --linux dir
218230
if: github.ref != 'refs/heads/main'
@@ -221,10 +233,11 @@ jobs:
221233
# CXX: sccache g++
222234
# SCCACHE_GHA_ENABLED: "true"
223235
DISABLE_INSPECT_FUSE: on
236+
USE_SYSTEM_FPM: ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' && 'true' || '' }}
224237

225238
- name: Upload installer size
226239
if: ${{ github.repository == 'signalapp/Signal-Desktop-Private' && github.ref == 'refs/heads/main' }}
227-
run: node ts/scripts/dd-installer-size.js linux
240+
run: node ts/scripts/dd-installer-size.js linux-${{ matrix.arch }}
228241
env:
229242
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
230243

ts/scripts/dd-installer-size.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { join } from 'node:path';
77
import { name as NAME, version as VERSION } from '../../package.json';
88

99
const SUPPORT_CONFIG = new Set([
10-
'linux',
10+
'linux-x64',
11+
'linux-arm64',
1112
'windows',
1213
'macos-arm64',
1314
'macos-x64',

ts/scripts/test-release.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ if (process.platform === 'darwin') {
3131
} else if (process.platform === 'win32') {
3232
archive = join('win-unpacked', 'resources', 'app.asar');
3333
exe = join('win-unpacked', `${packageJson.productName}.exe`);
34+
} else if (process.platform === 'linux' && process.arch !== 'x64') {
35+
archive = join(`linux-${process.arch}-unpacked`, 'resources', 'app.asar');
36+
exe = join(`linux-${process.arch}-unpacked`, packageJson.name);
3437
} else if (process.platform === 'linux') {
3538
archive = join('linux-unpacked', 'resources', 'app.asar');
3639
exe = join('linux-unpacked', packageJson.name);

0 commit comments

Comments
 (0)