126 lines
3.1 KiB
YAML
126 lines
3.1 KiB
YAML
#
|
|
# Rust Test Suite
|
|
#
|
|
# This workflow builds the project via Cargo, configures a suitable test
|
|
# environment, and then runs the test-suite defined in Cargo.
|
|
#
|
|
|
|
name: "Rust Test Suite"
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches-ignore: ["pr/**"]
|
|
tags: ["**"]
|
|
workflow_dispatch:
|
|
|
|
defaults:
|
|
run:
|
|
shell: "bash"
|
|
|
|
jobs:
|
|
#
|
|
# CI with Default Configuration
|
|
#
|
|
# This simply runs `cargo build && cargo test` on all sources. We want to
|
|
# explicitly ensure that this project stays compatible to the stable channel
|
|
# and the standard build setup.
|
|
#
|
|
ci:
|
|
name: "Default - rust-${{ matrix.rust }}@${{ matrix.os }}"
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: ["ubuntu-latest"]
|
|
rust: ["nightly", "stable"]
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: "Fetch Sources"
|
|
uses: actions/checkout@v3
|
|
- name: "Install Rust Components"
|
|
run: rustup default "${{ matrix.rust }}"
|
|
- name: "Build Project"
|
|
run: cargo build --verbose --all-targets
|
|
- name: "Run Tests"
|
|
run: cargo test --verbose
|
|
|
|
#
|
|
# Cross-Compilation to UEFI Target
|
|
#
|
|
# This cross-compiles all sources (including the examples) for native UEFI
|
|
# targets. This test ensures that we can actually compile for our main target
|
|
# platforms.
|
|
#
|
|
ci-cross:
|
|
name: "Cross-Compilation - ${{ matrix.target }}/rust-${{ matrix.rust }}@${{ matrix.os }}"
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: ["ubuntu-latest"]
|
|
rust: ["nightly", "stable"]
|
|
target:
|
|
- "aarch64-unknown-uefi"
|
|
- "i686-unknown-uefi"
|
|
- "x86_64-unknown-uefi"
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: "Fetch Sources"
|
|
uses: actions/checkout@v3
|
|
- name: "Install Rust Components"
|
|
run: |
|
|
rustup default "${{ matrix.rust }}"
|
|
rustup target add --toolchain "${{ matrix.rust }}" "${{ matrix.target }}"
|
|
- name: "Build Project"
|
|
run: |
|
|
cargo build \
|
|
--examples \
|
|
--features native \
|
|
--lib \
|
|
--target "${{ matrix.target }}" \
|
|
--verbose
|
|
|
|
#
|
|
# Bootstrap to UEFI Target
|
|
#
|
|
# This uses the `-Zbuild-std` feature to fully bootstrap a native UEFI target
|
|
# via cross-compilation. This currently requires a nightly compiler.
|
|
#
|
|
ci-bootstrap:
|
|
name: "Bootstrap - ${{ matrix.target }}/rust-${{ matrix.rust }}@${{ matrix.os }}"
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: ["ubuntu-latest"]
|
|
rust: ["nightly"]
|
|
target:
|
|
- "aarch64-unknown-uefi"
|
|
- "i686-unknown-uefi"
|
|
- "x86_64-unknown-uefi"
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: "Fetch Sources"
|
|
uses: actions/checkout@v3
|
|
- name: "Install Rust Components"
|
|
run: |
|
|
rustup default "${{ matrix.rust }}"
|
|
rustup component add --toolchain "${{ matrix.rust }}" rust-src
|
|
- name: "Build Project"
|
|
run: |
|
|
cargo build \
|
|
-Zbuild-std=core,compiler_builtins,alloc \
|
|
-Zbuild-std-features=compiler-builtins-mem \
|
|
--examples \
|
|
--features native \
|
|
--lib \
|
|
--target "${{ matrix.target }}" \
|
|
--verbose
|