Skip to content

Commit c07b8b4

Browse files
committed
Add Linux arm64 to CI pipeline
1 parent 71dea5c commit c07b8b4

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
@@ -159,9 +159,15 @@ jobs:
159159

160160
linux:
161161
needs: lint
162-
runs-on: ubuntu-22.04-8-cores
162+
runs-on: ${{ matrix.os }}
163163
timeout-minutes: 30
164-
164+
strategy:
165+
matrix:
166+
include:
167+
- os: ubuntu-22.04-8-cores
168+
arch: x64
169+
- os: ubuntu-22.04-arm64-4-cores
170+
arch: arm64
165171
steps:
166172
- run: lsb_release -a
167173
- run: uname -a
@@ -185,6 +191,11 @@ jobs:
185191
- name: Install xvfb and libpulse0
186192
run: sudo apt-get install xvfb libpulse0 || (sudo apt-get update && sudo apt-get install xvfb libpulse0)
187193

194+
# Needed because electron-builder's bundled FPM doesn't support arm64
195+
- name: Install FPM (for packaging)
196+
if: ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' }}
197+
run: sudo gem install fpm
198+
188199
- name: Setup sccache
189200
uses: mozilla-actions/[email protected]
190201
- name: Restore sccache
@@ -219,6 +230,7 @@ jobs:
219230
CXX: sccache g++
220231
SCCACHE_GHA_ENABLED: "true"
221232
DISABLE_INSPECT_FUSE: on
233+
USE_SYSTEM_FPM: ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' && 'true' || '' }}
222234
- name: Build without packaging .deb file
223235
run: pnpm run build:release --linux dir
224236
if: github.ref != 'refs/heads/main'
@@ -227,10 +239,11 @@ jobs:
227239
CXX: sccache g++
228240
SCCACHE_GHA_ENABLED: "true"
229241
DISABLE_INSPECT_FUSE: on
242+
USE_SYSTEM_FPM: ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' && 'true' || '' }}
230243

231244
- name: Upload installer size
232245
if: ${{ github.repository == 'signalapp/Signal-Desktop-Private' && github.ref == 'refs/heads/main' }}
233-
run: node ts/scripts/dd-installer-size.js linux
246+
run: node ts/scripts/dd-installer-size.js linux-${{ matrix.arch }}
234247
env:
235248
DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}
236249

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)