name: CI
on: [push, pull_request, workflow_dispatch]
jobs:
build-docker:
strategy:
fail-fast: false
matrix:
include:
- container: wpilib/roborio-cross-ubuntu:2025-22.04
artifact-name: Athena
build-options: "linuxathena"
- container: wpilib/raspbian-cross-ubuntu:bookworm-22.04
artifact-name: Arm32
build-options: "linuxarm32"
- container: wpilib/aarch64-cross-ubuntu:bookworm-22.04
artifact-name: Arm64
build-options: "linuxarm64"
- container: wpilib/ubuntu-base:22.04
artifact-name: Linux
build-options: "linuxx86-64"
- container: wpilib/ubuntu-base:22.04
artifact-name: Headers
build-options: "headers"
name: "Build - ${{ matrix.artifact-name }}"
runs-on: ubuntu-22.04
container: ${{ matrix.container }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: Fetch all history and metadata
run: |
git config --global --add safe.directory /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Build maven artifact
run: cargo xtask ${{ matrix.build-options }}
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact-name }}
path: target/maven
build-host:
env:
MACOSX_DEPLOYMENT_TARGET: 13.3
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
artifact-name: WinX64
architecture: x64
build-options: "windowsx86-64"
- os: windows-2022
artifact-name: WinArm64
architecture: aarch64
build-options: "windowsarm64"
- os: macos-14
artifact-name: macOS
architecture: aarch64
build-options: "osxuniversal"
name: "Build - ${{ matrix.artifact-name }}"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Build maven artifact
run: cargo xtask ${{ matrix.build-options }}
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact-name }}
path: target/maven
combine:
name: Combine
needs: [build-docker, build-host]
runs-on: ubuntu-22.04
steps:
- uses: actions/download-artifact@v4
with:
path: artifacts
- name: Flatten Artifacts
run: mkdir -p maven && rsync -av --delete artifacts/*/* maven/
- uses: actions/upload-artifact@v4
with:
name: rdxusb-${{github.ref_name}}
path: maven