ci: build and check Windows ARM (#1801)

* ci: build and check Windows ARM

* forgot to update these

* ???

* is it the image or smth

* nope not that

* Update build_releases.yml

* Update ci.yml

* Update build_releases.yml

* fix build

* ???

* ????

* ????????

* okay that works, now just set the output file
This commit is contained in:
Clement Tsang 2025-08-21 22:40:30 -04:00 committed by GitHub
parent 47cc0b346a
commit 6c62e7817f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 52 additions and 26 deletions

View File

@ -122,9 +122,12 @@ jobs:
cross: true,
}
# Seems like cross' FreeBSD image is a bit broken? I
# get build errors, may be related to this issue:
# https://github.com/cross-rs/cross/issues/1291
# Windows ARM
- {
os: "windows-11-arm",
target: "aarch64-pc-windows-msvc",
cross: false,
}
steps:
- name: Checkout repository
if: matrix.info.container == ''
@ -220,7 +223,7 @@ jobs:
name: "release-${{ matrix.info.target }}"
path: release
build-vm:
build-with-vm:
name: "Build binaries via VMs"
runs-on: "ubuntu-latest"
timeout-minutes: 12
@ -304,8 +307,22 @@ jobs:
build-msi:
name: "Build MSI (WiX) installer"
runs-on: "windows-2022"
timeout-minutes: 12
strategy:
fail-fast: false
matrix:
info:
- {
os: "windows-2022",
target: "x86_64-pc-windows-msvc",
output: "bottom_x86_64_installer.msi"
}
- {
os: "windows-11-arm",
target: "aarch64-pc-windows-msvc",
output: "bottom_aarch64_installer.msi"
}
runs-on: ${{ matrix.info.os }}
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
@ -314,18 +331,19 @@ jobs:
- name: Install Net-Framework-Core
shell: powershell
run: Install-WindowsFeature Net-Framework-Core
run: |
choco install dotnet-sdk --pre -y --no-progress;
- name: Install wixtoolset
uses: crazy-max/ghaction-chocolatey@0e015857dd851f84fcb7fb53380eb5c4c8202333 # v3.0.0
with:
args: install -y wixtoolset
shell: powershell
run: |
choco install -y wixtoolset --no-progress;
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17
with:
toolchain: stable
target: x86_64-pc-windows-msvc
target: ${{ matrix.info.target }}
- name: Install cargo-wix
shell: powershell
@ -337,24 +355,27 @@ jobs:
env:
BTM_GENERATE: true
run: |
Import-Module "$env:ChocolateyInstall/helpers/chocolateyInstaller.psm1"
refreshenv
cargo wix --nocapture
mv bottom_installer.msi ${{ matrix.info.output }}
- name: Generate artifact attestation for file
uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2
with:
subject-path: "bottom_x86_64_installer.msi"
subject-path: ${{ matrix.info.output }}
- name: Create release directory for artifact, move files
shell: bash
run: |
mkdir release
mv bottom_x86_64_installer.msi release/
mv ${{ matrix.info.output }} release/
- name: Save release as artifact
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
name: "release-build-msi"
name: "release-${{ matrix.info.target }}-msi"
path: release
build-cirrus:

View File

@ -137,11 +137,8 @@ jobs:
#
# TODO: Maybe some of these should be allowed to fail? If so, I guess we can add back the "unofficial" MSRV,
# I would also put android there.
other-check:
unsupported-check:
needs: pre-job
runs-on: ${{ matrix.info.os }}
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
timeout-minutes: 12
strategy:
fail-fast: false
matrix:
@ -228,7 +225,16 @@ jobs:
no-default-features: true,
no-clippy: true,
}
# Windows ARM
- {
os: "windows-11-arm",
target: "aarch64-pc-windows-msvc",
cross: false,
}
runs-on: ${{ matrix.info.os }}
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
timeout-minutes: 12
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
@ -265,8 +271,7 @@ jobs:
use-cross: ${{ matrix.info.cross }}
cross-version: ${{ matrix.info.cross-version || '0.2.5' }}
vm-check:
name: "Test using VMs"
unsupported-check-freebsd:
needs: pre-job
if: ${{ needs.pre-job.outputs.should_skip != 'true' }}
runs-on: "ubuntu-latest"
@ -326,23 +331,23 @@ jobs:
completion:
name: "CI Pass Check"
needs: [supported, other-check, vm-check]
if: ${{ needs.supported.result != 'skipped' || needs.other-check.result != 'skipped' || needs.vm-check.result != 'skipped' }}
needs: [supported, unsupported-check, unsupported-check-freebsd]
if: ${{ needs.supported.result != 'skipped' || needs.unsupported-check.result != 'skipped' || needs.unsupported-check-freebsd.result != 'skipped' }}
runs-on: "ubuntu-latest"
steps:
- name: CI Passed
if: ${{ (needs.supported.result == 'success' || needs.supported.result == 'skipped') && (needs.other-check.result == 'success' || needs.other-check.result == 'skipped') && (needs.vm-check.result == 'success' || needs.vm-check.result == 'skipped') }}
if: ${{ (needs.supported.result == 'success' || needs.supported.result == 'skipped') && (needs.unsupported-check.result == 'success' || needs.unsupported-check.result == 'skipped') && (needs.unsupported-check-freebsd.result == 'success' || needs.unsupported-check-freebsd.result == 'skipped') }}
run: |
echo "CI workflow completed successfully.";
- name: CI Failed
if: ${{ needs.supported.result == 'failure' || needs.other-check.result == 'failure' || needs.vm-check.result == 'failure' }}
if: ${{ needs.supported.result == 'failure' || needs.unsupported-check.result == 'failure' || needs.unsupported-check-freebsd.result == 'failure' }}
run: |
echo "CI workflow failed.";
exit 1;
- name: CI Cancelled
if: ${{ needs.supported.result == 'cancelled' || needs.other-check.result == 'cancelled' || needs.vm-check.result == 'cancelled' }}
if: ${{ needs.supported.result == 'cancelled' || needs.unsupported-check.result == 'cancelled' || needs.unsupported-check-freebsd.result == 'cancelled' }}
run: |
echo "CI workflow was cancelled.";
exit 1;

View File

@ -239,7 +239,7 @@ depends = "libc6:arm64 (>= 2.28)"
depends = "libc6:armhf (>= 2.28)"
[package.metadata.wix]
output = "bottom_x86_64_installer.msi"
output = "bottom_installer.msi"
[package.metadata.generate-rpm]
assets = [