blob: 1bb87b0acd7705ec72a807daee4c73c23ad133d2 [file] [log] [blame]
name: sanity
on:
workflow_dispatch:
workflow_call:
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: clechasseur/rs-cargo@v2
with:
command: check
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: rustup component add rustfmt
- uses: clechasseur/rs-cargo@v2
with:
command: fmt
args: --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: clechasseur/rs-cargo@v2
with:
command: clippy
args: --all-targets --all-features -- -D warnings
sort:
name: Sort dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo install cargo-sort
- run: cargo sort --check --workspace
doctest:
name: Test documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo test --doc
unused_dependencies:
name: Unused dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- uses: taiki-e/install-action@cargo-udeps
- run: cargo +nightly udeps --all-targets --all-features
check-commit-message:
name: Validate commit messages
runs-on: ubuntu-latest
# This action isn't working with workflow_dispatch, skip it
if: github.event_name != 'workflow_dispatch'
steps:
- name: Check subject line length
uses: gsactions/commit-message-checker@v2
with:
excludeDescription: 'false' # exclude description body of a pull request
excludeTitle: 'false' # exclude the title of a pull request
checkAllCommitMessages: 'false' # checks all commits associated with the pull request
accessToken: ${{ secrets.GITHUB_TOKEN }} # needed only when checkAllCommitMessages is true
pattern: '^.{0,80}(\n.*)*$'
error: 'Subject of all commits in the PR and PR body/title has to be shorter than 80 characters.'
- name: Disallow specific prefixes in title
uses: gsactions/commit-message-checker@v2
with:
excludeDescription: 'true'
excludeTitle: 'true'
checkAllCommitMessages: 'true'
accessToken: ${{ secrets.GITHUB_TOKEN }}
pattern: '^(?!(.*(feat|fix|docs|style|refactor|perf|test|chore):.*(\n.*)*$)).*'
error: 'Do not use prefixes like "feat:", "fix:", etc., in the subject of any commit in the PR.'
- name: Disallow lowercase subject
uses: gsactions/commit-message-checker@v2
with:
excludeDescription: 'true'
excludeTitle: 'true'
checkAllCommitMessages: 'true'
accessToken: ${{ secrets.GITHUB_TOKEN }}
pattern: '^[A-Z].*(\n.*)*$'
error: 'Subject of all commits in the PR has to start with a capital letter.'
# Uncomment this when we have a proper release - 1.0.0
# semver-checks:
# name: SemVer SDK
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - uses: obi1kenobi/cargo-semver-checks-action@v2
# with:
# package: iggy