Edition 2021 #619
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Rust checks | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
schedule: | |
- cron: '0 5 * * 5' | |
jobs: | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: Run cargo check | |
uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
build: [beta, stable, windows, macos] | |
include: | |
- build: macos | |
os: macos-latest | |
rust: stable | |
- build: windows | |
os: windows-latest | |
rust: stable | |
- build: beta | |
os: ubuntu-latest | |
rust: beta | |
- build: stable | |
os: ubuntu-latest | |
rust: stable | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.rust }} | |
override: true | |
- name: Run tests | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --no-fail-fast | |
test_c_api: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: prefix-dev/[email protected] | |
with: | |
pixi-version: v0.25.0 | |
cache: true | |
frozen: true | |
- name: Build C API | |
run: | | |
pixi run cargo cbuild --verbose --release | |
- name: Run C API tests | |
run: | | |
pixi run cargo capi test --verbose --release | |
- name: Install into temporary location | |
if: startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') | |
run: | | |
pixi run cargo cinstall --verbose --release --destdir=temp | |
- name: Copy installed files to /usr/local | |
if: startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') | |
run: | | |
sudo cp -r temp/usr/local/* /usr/local/ | |
- name: Test pkg-config | |
if: startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') | |
run: | | |
set -x | |
test "`echo $(pkg-config --cflags gsw) | xargs`" = "-I/usr/local/include" | |
test "`echo $(pkg-config --libs gsw) | xargs`" = "-L/usr/local/lib -lgsw" | |
- name: Update dynamic linker cache | |
if: startsWith(matrix.os, 'ubuntu') | |
run: | | |
sudo ldconfig | |
- name: Test usage from C (using Makefile) | |
if: startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') | |
working-directory: examples/usage-from-c | |
run: | | |
pixi run make | |
cross_testing: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [ | |
aarch64-unknown-linux-gnu, | |
powerpc64le-unknown-linux-gnu, | |
s390x-unknown-linux-gnu, | |
] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
targets: ${{ matrix.target }} | |
- name: Run tests | |
uses: actions-rs/cargo@v1 | |
with: | |
use-cross: true | |
command: test | |
args: --target ${{ matrix.target }} --no-fail-fast -- | |
coverage: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
override: true | |
- name: Get Rust Version | |
id: rust-version | |
run: echo "::set-output name=version::$(cargo -V | head -n1 | awk '{print $2}')" | |
- name: Get Tarpaulin Version | |
id: tarpaulin-version | |
run: echo "::set-output name=version::$(wget -qO- 'https://api.github.com/repos/xd009642/tarpaulin/releases/latest' | jq -r '.tag_name')" | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/bin/cargo-tarpaulin | |
~/.cargo/git | |
~/.cargo/registry | |
target | |
key: ${{ runner.os }}-cargo-${{ steps.rust-version.outputs.version }}-tarpaulin-${{ steps.tarpaulin-version.outputs.version }} }} | |
- name: Install Tarpaulin | |
run: | | |
test -e ~/.cargo/bin/cargo-tarpaulin || cargo install cargo-tarpaulin --version ${{ steps.tarpaulin-version.outputs.version }} | |
- name: Run cargo-tarpaulin | |
run: cargo tarpaulin --timeout 600 --out Xml -- --test-threads 1 | |
- name: Upload coverage to codecov | |
uses: codecov/codecov-action@v3 | |
lints: | |
name: Lints | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt, clippy | |
- name: Run cargo fmt | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --all-features --tests -- -D warnings | |
check_cbindgen: | |
name: "Check if cbindgen runs cleanly for generating the C headers" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
override: true | |
- run: cargo build --features cbindgen | |
- name: check if headers have the same content | |
run: | | |
git update-index --refresh | |
git diff | |
git diff-index --quiet HEAD -- assets/gswteos-10.h || echo "::error file=assets/gswteos-10.h::Header doesn't match committed file, did you forget to rerun cbindgen?" | |
minimum_rust_version: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: check if README matches MSRV defined here | |
run: grep '1.68.0' README.md | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: 1.68.0 | |
- name: Check if it builds | |
run: cargo build | |
publish: | |
name: Publish (dry-run) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- uses: prefix-dev/[email protected] | |
with: | |
pixi-version: v0.25.0 | |
cache: true | |
frozen: true | |
- name: Make sure we can publish | |
run: pixi run cargo publish --dry-run |