name: Push or PR
on:
[push, pull_request]
env:
CARGO_TERM_COLOR: always
jobs:
build_n_test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- name: rustfmt
if: ${{ !cancelled() }}
run: cargo fmt --all -- --check
- name: check
if: ${{ !cancelled() }}
run: cargo check --verbose
- name: clippy
if: ${{ !cancelled() }}
run: |
cargo clippy --all-targets -- -D warnings
cargo clippy --all-targets --all-features -- -D warnings
- name: Build
if: ${{ !cancelled() }}
run: |
cargo build --verbose --examples --tests
- name: Abort on error
if: ${{ failure() }}
run: echo "Some of jobs failed" && false
- name: Build x86_64-FreeBSD
uses: cross-platform-actions/action@v0.28.0
if: startsWith(matrix.os, 'ubuntu')
env:
TARGET: x86_64-unknown-freebsd
with:
operating_system: freebsd
environment_variables: TARGET
architecture: x86-64
version: 13.2
shell: bash
memory: 5G
cpu_count: 4
run: |
uname -a
echo $SHELL
pwd
ls -lah
whoami
env | sort
sudo pkg install -y git protobuf llvm15
curl --proto 'https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
export CC=clang
export CXX=clang++
cargo fmt --all -- --check
export CARGO_TERM_COLOR=always
cargo clippy --all-targets -- -D warnings
cargo clippy --all-targets --features bindgen -- -D warnings
semver:
name: Check semver
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: obi1kenobi/cargo-semver-checks-action@v2