From aad8b1cb316f75eb142ca9cbbc328c16391f357e Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Tue, 16 Jan 2024 10:50:50 +0000 Subject: [PATCH] Add CI/CD Signed-off-by: Nikolaos Karaolidis --- .gitlab-ci.yml | 89 +++++++++++++++++++++++++++++++++++++++++++ support/ci/Dockerfile | 5 +++ 2 files changed, 94 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 support/ci/Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..fc6aa7b --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,89 @@ +stages: + - build + - test + - release + +cache: &global_cache + key: + files: + - Cargo.lock + - Cargo.toml + paths: + - target/debug/deps + - target/debug/build + policy: pull-push + +variables: + RUSTFLAGS: "-Dwarnings" + +build: + image: registry.karaolidis.com/karaolidis/qrust/rust + stage: build + cache: + <<: *global_cache + script: + - cargo build --verbose + +test: + image: registry.karaolidis.com/karaolidis/qrust/rust + stage: test + cache: + <<: *global_cache + script: + - cargo test --verbose + +lint: + image: registry.karaolidis.com/karaolidis/qrust/rust + stage: test + cache: + <<: *global_cache + script: + - cargo clippy --all-targets --all-features + +depcheck: + image: registry.karaolidis.com/karaolidis/qrust/rust + stage: test + cache: + <<: *global_cache + script: + - cargo outdated + - cargo +nightly udeps + +build-release: + image: registry.karaolidis.com/karaolidis/qrust/rust + stage: release + cache: + <<: *global_cache + script: + - cargo build --release --verbose + after_script: + - echo "JOB_ID=$CI_JOB_ID" >> job.env + artifacts: + paths: + - target/release/qrust + expire_in: 1d + reports: + dotenv: job.env + only: + - tags + +release: + image: registry.gitlab.com/gitlab-org/release-cli + stage: release + needs: + - job: build-release + artifacts: true + script: + - echo "Create Release $CI_COMMIT_TAG" + release: + name: Release $CI_COMMIT_TAG + tag_name: $CI_COMMIT_TAG + description: Release $CI_COMMIT_SHA + ref: $CI_COMMIT_TAG + assets: + links: + - name: qrust + url: https://gitlab.com/karaolidis/qrust/-/jobs/$CI_JOB_ID/artifacts/raw/target/release/qrust + link_type: other + only: + - tags diff --git a/support/ci/Dockerfile b/support/ci/Dockerfile new file mode 100644 index 0000000..b34d71b --- /dev/null +++ b/support/ci/Dockerfile @@ -0,0 +1,5 @@ +FROM rust + +RUN rustup install nightly +RUN rustup component add clippy +RUN cargo install cargo-udeps cargo-outdated