Skip to content

CI: Update

CI: Update #158

Workflow file for this run

name: CI
on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: '0 0 1 * *' # Monthly
jobs:
build:
strategy:
fail-fast: false
matrix:
label:
- Linux
- Windows
- macOS
rust:
- stable
- beta
include:
- label: Linux
os: ubuntu-20.04
target: i686-unknown-linux-gnu
- label: Windows
os: windows-2019
target: i686-pc-windows-msvc
- label: macOS
os: macOS-12
name: ${{ matrix.rust }} - ${{ matrix.label }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
show-progress: false
- name: Install g++-multilib
if: matrix.os == 'ubuntu-20.04'
run: |
sudo apt-get update
sudo apt-get install g++-multilib
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
targets: ${{ matrix.target }}
- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack
- name: Test the Rust crate
run: cargo hack --feature-powerset test
- name: Test the Rust-C++ bridge
run: cargo test --package hltas-cpp-bridge
- name: Test the Rust-C++ bridge on ${{ matrix.target }}
if: matrix.target != ''
run: cargo test --package hltas-cpp-bridge --target=${{ matrix.target }}
- name: Generate the C++ build system
run: |
mkdir build
cd build
cmake ..
- name: Build the C++ library
run: cmake --build build
- name: Test the C++ library
run: |
cd build
ctest --output-on-failure
clippy:
name: Clippy
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
show-progress: false
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Run clippy
run: cargo clippy --all --all-targets
rustfmt:
name: Rustfmt
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
show-progress: false
- name: Install Rust
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- name: Run rustfmt
run: cargo fmt --all -- --check