Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial implementation #1

Merged
merged 14 commits into from
Feb 14, 2024
100 changes: 100 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# The "Normal" CI for tests and linters and whatnot
name: Rust CI

# Ci should be run on...
on:
# Every pull request (will need approval for new contributors)
pull_request:
# Every push to...
push:
branches:
# The main branch
- main
# And once a week?
# This can catch things like "rust updated and actually regressed something"
schedule:
- cron: "11 7 * * 1,4"

# We want all these checks to fail if they spit out warnings
env:
RUSTFLAGS: -Dwarnings

jobs:
# Check that rustfmt is a no-op
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt
- run: cargo fmt --all -- --check

# Check that clippy is appeased
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: clippy
- uses: swatinem/rust-cache@v2
- uses: actions-rs/clippy-check@v1
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --workspace --tests --examples

# Make sure the docs build without warnings
docs:
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: -Dwarnings
steps:
- uses: actions/checkout@master
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rust-docs
- uses: swatinem/rust-cache@v2
- run: cargo doc --workspace --no-deps

# Build and run tests/doctests/examples on all platforms
# FIXME: look into `cargo-hack` which lets you more aggressively
# probe all your features and rust versions (see tracing's ci)
test:
runs-on: ${{ matrix.os }}
env:
# runtest the installer scripts
RUIN_MY_COMPUTER_WITH_INSTALLERS: true
strategy:
# Test the cross-product of these platforms+toolchains
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
rust: [stable]
steps:
# Setup tools
- uses: actions/checkout@master
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- uses: swatinem/rust-cache@v2
# Run the tests/doctests (default features)
- run: cargo test --workspace
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
# Run the tests/doctests (all features)
- run: cargo test --workspace --all-features
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
# Test the examples (default features)
- run: cargo test --workspace --examples --bins
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
# Test the examples (all features)
- run: cargo test --workspace --all-features --examples --bins
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/target
Loading
Loading