Skip to content

Add upstream check #172

Add upstream check

Add upstream check #172

Workflow file for this run

on:
pull_request:
branches: [main]
push:
branches: [main]
release:
types: [published]
name: CI
env:
RUSTFLAGS: "-D warnings"
jobs:
build:
name: Build
runs-on: ubuntu-latest
strategy:
matrix:
target:
- aarch64-unknown-linux-gnu
- x86_64-pc-windows-gnu
- x86_64-unknown-linux-gnu
- arm-unknown-linux-gnueabi
- armv7-unknown-linux-gnueabihf
- riscv64gc-unknown-linux-gnu
steps:
- name: Checkout sources
uses: actions/checkout@v3
#- uses: Swatinem/rust-cache@v1
- name: Install cross
uses: taiki-e/install-action@cross
- name: Build
run: cross build --release --all-features --target=${{ matrix.target }}
build_no_std:
name: Build for no-std targets
runs-on: ubuntu-latest
strategy:
matrix:
target:
- thumbv6m-none-eabi
- thumbv7em-none-eabihf
steps:
- name: Checkout sources
uses: actions/checkout@v3
#- uses: Swatinem/rust-cache@v1
- name: Install cross
uses: taiki-e/install-action@cross
- name: Build
run: cross build --release --features embedded_graphics_textstyle --target=${{ matrix.target }}
build_no_features:
name: Build with no features
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
#- uses: Swatinem/rust-cache@v1
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Build
run: cargo build --release --no-default-features
build_feature_std:
name: Build with 'std' feature
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
#- uses: Swatinem/rust-cache@v1
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Build
run: cargo build --release --no-default-features --features std
build_feature_embedded_graphics_textstyle:
name: Build with 'embedded_graphics_textstyle' feature
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
#- uses: Swatinem/rust-cache@v1
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Build
run: cargo build --release --no-default-features --features embedded_graphics_textstyle
build_examples:
name: Build examples
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install libsdl2-dev
run: sudo apt-get install -y libsdl2-dev
#- uses: Swatinem/rust-cache@v1
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Build
run: cargo build --release --all --manifest-path ./examples/simulator/Cargo.toml
test:
name: Test Suite
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Build
run: cargo test --all-features -- --test-threads 1
lints:
name: Lints
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Run cargo fmt
run: cargo fmt --all -- --check
- name: Run cargo clippy
run: cargo clippy --all-features -- -D warnings
docs:
name: Documentation
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install nightly toolchain
uses: dtolnay/rust-toolchain@nightly
- name: Run cargo doc
env:
RUSTDOCFLAGS: "--cfg docsrs -Dwarnings"
run: cargo doc --all-features
leaks:
name: Memory leaks
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install llvm
# Required to resolve symbols in sanitizer output
run: sudo apt-get install -y llvm
- name: Install nightly toolchain
uses: dtolnay/rust-toolchain@nightly
#- uses: Swatinem/rust-cache@v1
- name: Build
env:
RUSTFLAGS: "-Z sanitizer=address"
run: cargo build --target x86_64-unknown-linux-gnu --tests
- name: Run tests with leak sanitizer
env:
RUSTFLAGS: "-Z sanitizer=address"
run: cargo test --target x86_64-unknown-linux-gnu --tests -- --test-threads 1
check_fonts:
name: Check generated fonts
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: true
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
#- uses: Swatinem/rust-cache@v1
- name: Regenerate and check
run: ./regenerate_fonts_file.sh --check --hide-progress
msrv:
name: Minimum Supported Rust Version
runs-on: ubuntu-latest
env:
RUSTFLAGS: "-D warnings"
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install cargo-binstall
uses: taiki-e/install-action@v2
with:
tool: cargo-binstall
- name: Install cargo-msrv
run: cargo binstall --version 0.16.0-beta.17 --no-confirm cargo-msrv
#- uses: Swatinem/rust-cache@v1
- name: Check MSRV
#run: cargo msrv --log-target=stdout
run: cargo msrv verify --log-target=stdout
semver:
name: Semantic Versioning
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Check semver
uses: obi1kenobi/cargo-semver-checks-action@v2
release:
name: Publish version
runs-on: ubuntu-latest
environment: production
if: github.event_name == 'release'
needs: [
build,
build_no_std,
build_no_features,
build_feature_std,
build_feature_embedded_graphics_textstyle,
build_examples,
test,
lints,
docs,
leaks,
check_fonts,
msrv,
semver
]
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Query crate version
run: echo "crate_version=$(cargo metadata --format-version=1 --no-deps | python -c "import sys,json; print('v' + json.load(sys.stdin)['packages'][0]['version'])")" >> $GITHUB_ENV
- name: Query release tag version
run: echo "release_tag_version=${{ github.event.release.name }}" >> $GITHUB_ENV
- name: Print versions
run: echo "Crate - ${{ env.crate_version }}, Release - ${{ env.release_tag_version }}"
- name: Check version not empty
run: test -n ${{ env.crate_version }}
- name: Check matching versions
run: test ${{ env.crate_version }} = ${{ env.release_tag_version }}
- name: Cargo login
run: cargo login ${{ secrets.CRATES_IO_TOKEN }}
- name: Cargo publish
run: cargo publish