Merge pull request #2 from gn64/master #1
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
# More information can be found here: | |
# https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions | |
################################################################################################### | |
# Workflow name | |
################################################################################################### | |
# standard name for CI workflow | |
name: CI | |
################################################################################################### | |
# When to run the workflow | |
################################################################################################### | |
# perform CI only on main branch | |
on: | |
push: | |
branches: [ "master" ] | |
pull_request: | |
branches: [ "master" ] | |
################################################################################################### | |
# environment variables | |
################################################################################################### | |
# more information can be found at https://doc.rust-lang.org/cargo/reference/environment-variables.html | |
env: | |
# Controls whether or not colored output is used in the terminal. | |
CARGO_TERM_COLOR: always # always: Always display colors. | |
# Make sure CI fails on all warnings, including Clippy lints | |
# RUSTFLAGS: "-Dwarnings" this cannot be enabled since some libs have warnings | |
################################################################################################### | |
# jobs | |
################################################################################################### | |
jobs: | |
################################################################################################# | |
# Sanity job | |
################################################################################################# | |
# These 4 were grouped together because they all require installation of dependencies | |
fmt-check-clippy-build: | |
# job name will be displayed in the GitHub UI | |
name: Format / Check / Clippy / Docs / Test | |
# job will run on ubuntu-latest | |
runs-on: ubuntu-latest | |
# job timeout, shouldn't take longer really | |
timeout-minutes: 5 | |
# job steps | |
steps: | |
# This action checks-out your repository under $GITHUB_WORKSPACE, so your workflow can access it. | |
- uses: actions/checkout@v3 | |
# This GitHub Action installs a Rust toolchain using rustup. It is designed for one-line concise usage and good defaults. | |
- uses: dtolnay/rust-toolchain@stable | |
# used by popular Rust projects to check formatting | |
- run: cargo fmt --all --check | |
# check is a weaker version of clippy but it is faster | |
- run: cargo check --all-targets --all-features | |
# source https://doc.rust-lang.org/nightly/clippy/continuous_integration/github_actions.html | |
- run: cargo clippy --all-targets --all-features -- -D warnings | |
# A more pedantic version that should probably be used in the future, but it is too much for now | |
# - run: cargo clippy --all-targets --all-features -- -D warnings -Dclippy::all -Dclippy::pedantic | |
# try and build the project | |
- run: cargo build --verbose | |
# source https://github.com/dtolnay/syn/blob/master/.github/workflows/ci.yml | |
- run: cargo test --all-features --doc | |
- run: cargo doc --all-features | |
# run test suite | |
- run: cargo test --verbose | |
# test cargo clean | |
- run: cargo clean --verbose | |
# run test suite | |
- run: cargo test --verbose | |
################################################################################################# | |
# test docs job | |
################################################################################################# | |
# test-docs: | |
# name: Test Documentation | |
# # run only if the previous job succeeded | |
# # needs: fmt-check-clippy-build | |
# runs-on: ubuntu-latest | |
# timeout-minutes: 5 | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - uses: dtolnay/rust-toolchain@stable | |
# # source https://github.com/dtolnay/syn/blob/master/.github/workflows/ci.yml | |
# - run: cargo test --all-features --doc | |
# - run: cargo doc --all-features | |
################################################################################################# | |
# test job | |
################################################################################################# | |
# test: | |
# name: Test | |
# # needs: test-docs | |
# runs-on: ubuntu-latest | |
# timeout-minutes: 10 | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - uses: dtolnay/rust-toolchain@stable | |
# - run: cargo test --verbose | |
################################################################################################# | |
# Miri job | |
################################################################################################# | |
# miri: | |
# name: Miri | |
# needs: test | |
# runs-on: ubuntu-latest | |
# timeout-minutes: 20 | |
# steps: | |
# - uses: actions/checkout@v3 | |
# # source https://github.com/dtolnay/anyhow/blob/master/.github/workflows/ci.yml | |
# - uses: dtolnay/rust-toolchain@miri | |
# - run: cargo miri setup | |
# - run: cargo miri test --test miri | |
# env: | |
# MIRIFLAGS: -Zmiri-strict-provenance | |
################################################################################################# | |
# Windows job | |
################################################################################################# | |
# windows: | |
# name: Windows | |
# runs-on: windows-latest | |
# timeout-minutes: 4 | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - uses: dtolnay/rust-toolchain@stable | |
# - run: cargo test --verbose | |
################################################################################################# | |
# Windows job | |
################################################################################################# | |
mac-os: | |
name: MacOS | |
runs-on: macos-latest | |
timeout-minutes: 4 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- run: cargo test --verbose | |
################################################################################################# | |
# Clang in Ubuntu | |
################################################################################################# | |
clang-in-ubuntu: | |
name: Clang in Ubuntu | |
runs-on: ubuntu-latest | |
timeout-minutes: 4 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- run: export CXX=clang++ | |
- run: cargo test --verbose | |
################################################################################################# | |
# LLD in Ubuntu | |
################################################################################################# | |
lld-in-ubuntu: | |
name: LLD in Ubuntu | |
runs-on: ubuntu-latest | |
timeout-minutes: 4 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- run: export RUSTFLAGS="-C link-arg=-fuse-ld=lld" | |
- run: cargo test --verbose | |
################################################################################################# | |
# Chainging linker entirely | |
################################################################################################# | |
chainging-linker-entirely: | |
name: Chainging linker entirely | |
runs-on: ubuntu-latest | |
timeout-minutes: 4 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- run: export RUSTFLAGS="-C linker=g++" | |
- run: export CXX=g++ | |
- run: cargo test --verbose | |