@@ -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
0 commit comments