variables: GIT_SUBMODULE_STRATEGY: recursive BUILD_IMAGE_LINUX_AMD64: $CI_REGISTRY/veilid/ci-cd/veilid-build-linux-amd64:latest stages: - clippy - test - build ############# Clippy Lint clippy: stage: clippy image: ${BUILD_IMAGE_LINUX_AMD64} cache: key: $CI_COMMIT_REF_SLUG-linux-amd64 paths: - target/ tags: - linux - amd64 script: - cargo clippy # Only run clippy on non-protected branches, for development rules: - if: $CI_COMMIT_TAG when: never - if: $CI_MERGE_REQUEST_IID when: never - if: $CI_COMMIT_REF_PROTECTED == "false" ############# Unit Testing .test_rules_common: # Only do tests for tags, protected branches, or merge requests rules: - if: $CI_COMMIT_TAG - if: $CI_MERGE_REQUEST_IID - if: $CI_COMMIT_REF_PROTECTED == "true" test_linux_amd64: stage: test image: ${BUILD_IMAGE_LINUX_AMD64} cache: key: $CI_COMMIT_REF_SLUG-linux-amd64 paths: - target/ tags: - linux - amd64 script: - RUST_BACKTRACE=1 dbus-run-session -- cargo test -- --nocapture rules: - !reference [.test_rules_common, rules] ############# Build .build_rules_common: # Only build for tags or protected branches rules: - if: $CI_COMMIT_TAG - if: $CI_COMMIT_REF_PROTECTED == "true" build_linux_amd64: stage: build image: ${BUILD_IMAGE_LINUX_AMD64} cache: key: $CI_COMMIT_REF_SLUG-linux-amd64 paths: - target/ tags: - linux - amd64 script: - cargo build --release artifacts: name: $CI_COMMIT_REF_SLUG-linux-amd64 paths: - target/release/veilid-cli - target/release/veilid-server rules: - !reference [.build_rules_common, rules]