stages:
- formatting
- linting
- conventional-commits-linting
- conventional-commits-next-version-checking
- compiling
- unit-testing
formatting:
stage: formatting
image: rust
before_script:
- rustup component add rustfmt
script:
- cargo fmt --all -- --check
rules:
- if: $CI_MERGE_REQUEST_ID
linting:
stage: linting
image: rust
before_script:
- rustup component add clippy
script:
- cargo clippy --verbose --workspace --all-targets -- -D warnings
- cargo clippy --verbose --workspace --all-targets --all-features -- -D warnings
- cargo clippy --verbose --workspace --all-targets --no-default-features -- -D warnings
rules:
- if: $CI_MERGE_REQUEST_ID
conventional-commits-linting:
stage: conventional-commits-linting
image: rust
before_script:
- cargo install conventional_commits_linter
script:
- COMMON_ANCESTOR_COMMIT=`git merge-base origin/$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME`
- /usr/local/cargo/bin/conventional_commits_linter --from-commit-hash $COMMON_ANCESTOR_COMMIT --allow-angular-type-only
rules:
- if: $CI_MERGE_REQUEST_ID
conventional-commits-next-version-checking:
stage: conventional-commits-next-version-checking
image: rust
before_script:
- cargo install conventional_commits_next_version
script:
- CURRENT_VERSION=`grep '^version = "[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*"$' Cargo.toml | cut -d '"' -f 2`
- LATEST_TAG=`git describe --tags --abbrev=0`
- echo $LATEST_TAG | grep "^[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*$"
- /usr/local/cargo/bin/conventional_commits_next_version --batch-commits --from-reference $LATEST_TAG --from-version $LATEST_TAG --current-version $CURRENT_VERSION
rules:
- if: $CI_MERGE_REQUEST_ID
compiling:
stage: compiling
image: rust
script:
- cargo build --verbose --workspace
- cargo build --verbose --workspace --all-features
- cargo build --verbose --workspace --no-default-features
rules:
- if: $CI_MERGE_REQUEST_ID
- if: $CI_COMMIT_BRANCH == "master"
unit-testing:
stage: unit-testing
image: rust
script:
- cargo test --verbose --workspace
- cargo test --verbose --workspace --all-features
- cargo test --verbose --workspace --no-default-features
rules:
- if: $CI_MERGE_REQUEST_ID
- if: $CI_COMMIT_BRANCH == "master"