name: CI
permissions:
contents: read
on:
pull_request:
push:
branches:
- main
workflow_call:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RUST_BACKTRACE: 1
CARGO_TERM_COLOR: always
CARGO_TERM_VERBOSE: "true"
CARGO_INCREMENTAL: 0
CARGO_PROFILE_TEST_DEBUG: 0
jobs:
ci-all:
name: All CI Stages
runs-on: ubuntu-latest
needs:
- lint
- test
- semver-checks
if: ${{ success() || failure()}}
steps:
- name: Job outcomes
run: |
echo "Lint job status: ${{ needs.lint.result }}"
echo "Test job status: ${{ needs.test.result }}"
echo "Semver job status: ${{ needs.semver-checks.result }}"
- if: ${{ needs.lint.result != 'success' }}
run: exit 1
- if: ${{ needs.test.result != 'success' }}
run: exit 1
- if: ${{ needs.semver-checks.result != 'success' }}
run: exit 1
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Rustfmt
run: cargo fmt --all --check
- name: Clippy
run: cargo clippy
- name: Rustdoc
run: cargo doc --no-deps
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Cargo Test
run: cargo test
semver-checks:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Check semver
uses: obi1kenobi/cargo-semver-checks-action@v2