@@ -12,7 +12,7 @@ permissions:
1212 id-token : write
1313
1414jobs :
15- linux :
15+ linux_x86 :
1616 if : startsWith(github.ref, 'refs/tags/') && github.event_name == 'push'
1717 runs-on : ubuntu-latest
1818 steps :
3636 - name : Setup Rust toolchain
3737 run : |
3838 rustup target install x86_64-unknown-linux-musl
39+ sudo apt-get update
3940 sudo apt-get install -y musl musl-dev musl-tools dpkg-dev liblzma-dev
4041 cargo install cargo-deb cargo-auditable cargo-audit
4142 - id : version
@@ -105,6 +106,79 @@ jobs:
105106 if-no-files-found : error
106107 retention-days : 5
107108
109+ linux_arm :
110+ if : startsWith(github.ref, 'refs/tags/') && github.event_name == 'push'
111+ runs-on : ubuntu-24.04-arm
112+ steps :
113+ - name : Harden Runner
114+ uses : step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
115+ with :
116+ egress-policy : audit
117+ allowed-endpoints : >
118+ azure.archive.ubuntu.com:80
119+ cdn.fwupd.org:443
120+ crates.io:443
121+ esm.ubuntu.com:443
122+ github.com:443
123+ index.crates.io:443
124+ motd.ubuntu.com:443
125+ ppa.launchpadcontent.net:443
126+ static.crates.io:443
127+ static.rust-lang.org:443
128+
129+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
130+ - name : Setup Rust toolchain
131+ run : |
132+ rustup target install aarch64-unknown-linux-musl
133+ sudo apt-get update
134+ sudo apt-get install -y musl musl-dev musl-tools dpkg-dev liblzma-dev
135+ cargo install cargo-deb cargo-auditable cargo-audit
136+ - id : version
137+ run : echo "version=$(cargo metadata --format-version=1 --no-deps | jq '.packages[] | select(.name == "malwaredb") | .version' --raw-output)" >>$GITHUB_OUTPUT
138+ - name : Install dependencies
139+ run : sudo apt-get install -y libmagic-dev
140+ - name : Install GUI dependencies
141+ run : sudo apt-get install -y libxcb-shape0-dev libxcb-xfixes0-dev libx11-dev libxkbcommon-dev libfontconfig-dev libxext-dev libxft-dev libxinerama-dev libxcursor-dev libxrender-dev libxfixes-dev
142+ - name : Build client
143+ run : cargo auditable build --workspace --bin mdb_client --target aarch64-unknown-linux-musl --release
144+ - name : Package client
145+ run : |
146+ cd client
147+ cargo auditable deb --target aarch64-unknown-linux-musl
148+ - name : Build server
149+ run : cargo auditable build --features=admin,admin-gui,sqlite,vt --bin mdb_server --release
150+ - name : Package server
151+ run : cargo deb --locked --cargo-build 'auditable build' --target aarch64-unknown-linux-gnu
152+ - run : mv target/release/mdb_server target/release/mdb_server_linux_gnu_arm64
153+ - name : Upload mdb_server
154+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
155+ with :
156+ name : mdb_server_linux_gnu_arm64
157+ path : target/release/mdb_server_linux_gnu_arm64
158+ if-no-files-found : error
159+ retention-days : 5
160+ - name : Upload mdb_server deb
161+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
162+ with :
163+ name : " malwaredb_${{ steps.version.outputs.version }}-1_arm64.deb"
164+ path : " target/aarch64-unknown-linux-gnu/debian/malwaredb_${{ steps.version.outputs.version }}-1_arm64.deb"
165+ if-no-files-found : error
166+ retention-days : 5
167+ - run : mv target/aarch64-unknown-linux-musl/release/mdb_client target/aarch64-unknown-linux-musl/release/mdb_client_linux_musl_arm64
168+ - name : Upload mdb_client
169+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
170+ with :
171+ name : mdb_client_linux_musl_arm64
172+ path : target/aarch64-unknown-linux-musl/release/mdb_client_linux_musl_arm64
173+ retention-days : 5
174+ - name : Upload mdb_client deb
175+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
176+ with :
177+ name : " malwaredb-client_${{ steps.version.outputs.version }}-1_arm64.deb"
178+ path : " target/aarch64-unknown-linux-musl/debian/malwaredb-client_${{ steps.version.outputs.version }}-1_arm64.deb"
179+ if-no-files-found : error
180+ retention-days : 5
181+
108182 macos :
109183 if : startsWith(github.ref, 'refs/tags/') && github.event_name == 'push'
110184 runs-on : macos-14
@@ -239,7 +313,7 @@ jobs:
239313
240314 release :
241315 if : startsWith(github.ref, 'refs/tags/') && github.event_name == 'push'
242- needs : [ windows, macos, linux ]
316+ needs : [ windows, macos, linux_x86, linux_arm ]
243317 runs-on : ubuntu-latest
244318 permissions :
245319 id-token : write
@@ -284,15 +358,27 @@ jobs:
284358 - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
285359 with :
286360 name : mdb_server_linux_musl_x86_64
361+ - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
362+ with :
363+ name : mdb_server_linux_gnu_arm64
287364 - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
288365 with :
289366 name : " malwaredb_${{ steps.version.outputs.version }}-1_amd64.deb"
367+ - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
368+ with :
369+ name : " malwaredb_${{ steps.version.outputs.version }}-1_arm64.deb"
290370 - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
291371 with :
292372 name : mdb_client_linux_musl_x86_64
373+ - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
374+ with :
375+ name : mdb_client_linux_musl_arm64
293376 - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
294377 with :
295378 name : " malwaredb-client_${{ steps.version.outputs.version }}-1_amd64.deb"
379+ - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
380+ with :
381+ name : " malwaredb-client_${{ steps.version.outputs.version }}-1_arm64.deb"
296382 - uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
297383 with :
298384 name : sbom.xml
@@ -309,7 +395,7 @@ jobs:
309395 run : |
310396 mkdir ~/.minisign/
311397 echo "${{ secrets.MINISIGN_KEY }}" > ~/.minisign/minisign.key
312- echo | ./minisign -Sm mdb_* malwaredb* sbom.*
398+ echo | ./minisign -t "MalwareDB ${{ steps.version.outputs.version }}" - Sm mdb_* malwaredb* sbom.*
313399 echo | ./minisign -R
314400 - uses : softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
315401 with :
@@ -333,10 +419,18 @@ jobs:
333419 mdb_server_linux_musl_x86_64.minisig
334420 mdb_client_linux_musl_x86_64
335421 mdb_client_linux_musl_x86_64.minisig
422+ mdb_server_linux_gnu_arm64
423+ mdb_server_linux_gnu_arm64.minisig
424+ mdb_client_linux_musl_arm64
425+ mdb_client_linux_musl_arm64.minisig
336426 malwaredb_${{ steps.version.outputs.version }}-1_amd64.deb
337427 malwaredb_${{ steps.version.outputs.version }}-1_amd64.deb.minisig
338428 malwaredb-client_${{ steps.version.outputs.version }}-1_amd64.deb
339429 malwaredb-client_${{ steps.version.outputs.version }}-1_amd64.deb.minisig
430+ malwaredb_${{ steps.version.outputs.version }}-1_arm64.deb
431+ malwaredb_${{ steps.version.outputs.version }}-1_arm64.deb.minisig
432+ malwaredb-client_${{ steps.version.outputs.version }}-1_arm64.deb
433+ malwaredb-client_${{ steps.version.outputs.version }}-1_arm64.deb.minisig
340434 sbom.xml
341435 sbom.xml.minisig
342436 sbom.json
@@ -355,5 +449,7 @@ jobs:
355449 mdb_client_arm64.exe
356450 mdb_server_linux_musl_x86_64
357451 mdb_client_linux_musl_x86_64
452+ mdb_server_linux_gnu_arm64
453+ mdb_client_linux_musl_arm64
358454 sbom.xml
359455 sbom.json
0 commit comments