| 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 |