@@ -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,19 @@ 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+
201+ - name : Setup sccache
202+ uses :
mozilla-actions/[email protected] 203+ - name : Restore sccache
204+ uses : actions/cache@v4
205+ with :
206+ path : ${{ env.SCCACHE_PATH }}
207+ key : sccache-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml', 'patches/**') }}
208+
190209 - name : Install Desktop node_modules
191210 run : pnpm install
192211 env :
@@ -213,6 +232,7 @@ jobs:
213232 # CXX: sccache g++
214233 # SCCACHE_GHA_ENABLED: "true"
215234 DISABLE_INSPECT_FUSE : on
235+ USE_SYSTEM_FPM : ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' && 'true' || '' }}
216236 - name : Build without packaging .deb file
217237 run : pnpm run build:release --linux dir
218238 if : github.ref != 'refs/heads/main'
@@ -221,10 +241,11 @@ jobs:
221241 # CXX: sccache g++
222242 # SCCACHE_GHA_ENABLED: "true"
223243 DISABLE_INSPECT_FUSE : on
244+ USE_SYSTEM_FPM : ${{ matrix.os == 'ubuntu-22.04-arm64-4-cores' && 'true' || '' }}
224245
225246 - name : Upload installer size
226247 if : ${{ github.repository == 'signalapp/Signal-Desktop-Private' && github.ref == 'refs/heads/main' }}
227- run : node ts/scripts/dd-installer-size.js linux
248+ run : node ts/scripts/dd-installer-size.js linux-${{ matrix.arch }}
228249 env :
229250 DD_API_KEY : ${{ secrets.DATADOG_API_KEY }}
230251
0 commit comments