Skip to content
Snippets Groups Projects
Verified Commit a6e4a9b4 authored by Geoffrey Arthaud's avatar Geoffrey Arthaud
Browse files

Improve CI

parent 8371ec1f
No related branches found
No related tags found
No related merge requests found
/target /target
.idea .idea
.cargo
*
!.gitignore
variables:
RUST_VERSION: 1.76 # slim or alpine not adapted because of openSSL dependency
TARGET_ARCH: default
CARGO_HOME: .cargo
default:
cache:
key: rust-$TARGET_ARCH
paths:
- .cargo
- target/debug/deps
- target/debug/build
- target/release/deps
- target/release/build
- target/$TARGET_ARCH/release/deps
- target/$TARGET_ARCH/release/build
policy: pull-push
stages: stages:
- build_test - build_test
- release - release
...@@ -5,44 +23,56 @@ stages: ...@@ -5,44 +23,56 @@ stages:
include: include:
- remote: 'https://api.r2devops.io/job/r/gitlab/r2devops/hub/docker_build@latest.yaml' - remote: 'https://api.r2devops.io/job/r/gitlab/r2devops/hub/docker_build@latest.yaml'
- remote: 'https://api.r2devops.io/job/r/gitlab/r2devops/hub/gitleaks@latest.yaml'
check-format: check-format:
stage: build_test stage: build_test
image: rust:latest image: rust:$RUST_VERSION
script: script:
- rustup component add rustfmt - rustup component add rustfmt
- rustup component add clippy
- cargo fmt --all -- --check - cargo fmt --all -- --check
- cargo clippy -- -D warnings
allow_failure: true
test-rust-latest: gitleaks:
stage: build_test stage: build_test
image: rust:latest
test-rust-current:
stage: build_test
image: rust:$RUST_VERSION
script: script:
- cargo test --verbose - cargo test --verbose
rules:
- if: $CI_COMMIT_REF_NAME == 'main'
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
test-rust-nightly: test-rust-nightly:
stage: build_test extends: test-rust-current
image: rustlang/rust:nightly image: rustlang/rust:nightly
script:
- cargo test --verbose
allow_failure: true
.rust-release: .rust-release:
stage: release stage: release
variables: variables:
TARGET: target/$TARGET_ARCH/release/gitlab-project-doctor TARGET: target/$TARGET_ARCH/release/gitlab-project-doctor
PKG_VERSION: ${CI_COMMIT_TAG:-latest}
script: script:
- rustup target add $TARGET_ARCH - rustup target add $TARGET_ARCH
- cargo build $CARGO_OPTS --target $TARGET_ARCH --release - cargo build $CARGO_OPTS --target $TARGET_ARCH --release
- strip $TARGET - strip $TARGET
- $LDD_CMD $TARGET - $LDD_CMD $TARGET
- $TARGET --help - $TARGET --help
- 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/$TARGET_ARCH/$PKG_VERSION/gitlab-project-doctor" -O'
artifacts: artifacts:
paths: paths:
- $TARGET - $TARGET
rules:
- if: $CI_COMMIT_REF_NAME == 'main'
- if: $CI_COMMIT_TAG
release-linux: release-linux:
extends: .rust-release extends: .rust-release
image: rust:latest image: rust:$RUST_VERSION
variables: variables:
TARGET_ARCH: x86_64-unknown-linux-musl TARGET_ARCH: x86_64-unknown-linux-musl
LDD_CMD: ldd LDD_CMD: ldd
...@@ -70,9 +100,25 @@ release-macos-x86: ...@@ -70,9 +100,25 @@ release-macos-x86:
docker_build: docker_build:
stage: deploy stage: deploy
variables:
COMMIT_CREATE_LATEST: "false"
IMAGE_TAG: "v1.19.2-debug"
retry: 2
needs:
- release-linux
cache: []
rules:
- if: $CI_COMMIT_REF_NAME == 'main'
docker_build-prod:
stage: deploy
extends: docker_build
variables: variables:
COMMIT_CREATE_LATEST: "true" COMMIT_CREATE_LATEST: "true"
IMAGE_TAG: "v1.19.2-debug" IMAGE_TAG: "v1.19.2-debug"
retry: 2 retry: 2
needs: needs:
- release-linux - release-linux
cache: []
rules:
- if: $CI_COMMIT_TAG
\ No newline at end of file
...@@ -18,4 +18,7 @@ pub use self::packages::Packages; ...@@ -18,4 +18,7 @@ pub use self::packages::Packages;
mod delete_file; mod delete_file;
mod package; mod package;
mod package_files; mod package_files;
// Naming convention extends gitlab crate
#[allow(clippy::module_inception)]
mod packages; mod packages;
...@@ -54,7 +54,7 @@ impl Reportable for ContainerAnalysisReport { ...@@ -54,7 +54,7 @@ impl Reportable for ContainerAnalysisReport {
} }
impl ContainerAnalysisJob { impl ContainerAnalysisJob {
fn to_report( fn into_report(
self, self,
report_status: Vec<ReportStatus>, report_status: Vec<ReportStatus>,
containers: Vec<GitlabContainerRepository>, containers: Vec<GitlabContainerRepository>,
...@@ -108,7 +108,7 @@ impl ReportJob for ContainerAnalysisJob { ...@@ -108,7 +108,7 @@ impl ReportJob for ContainerAnalysisJob {
pending_msg: fl!("container-analysing"), pending_msg: fl!("container-analysing"),
job: std::thread::spawn(move || { job: std::thread::spawn(move || {
if !self.project.jobs_enabled { if !self.project.jobs_enabled {
return self.to_report(vec![ReportStatus::NA(fl!("no-cicd"))], vec![]); return self.into_report(vec![ReportStatus::NA(fl!("no-cicd"))], vec![]);
} }
let endpoint = api::registry::Repositories::builder() let endpoint = api::registry::Repositories::builder()
...@@ -119,7 +119,7 @@ impl ReportJob for ContainerAnalysisJob { ...@@ -119,7 +119,7 @@ impl ReportJob for ContainerAnalysisJob {
let query: Result<Vec<GitlabRawContainerRepository>, _> = let query: Result<Vec<GitlabRawContainerRepository>, _> =
gitlab::api::paged(endpoint, Pagination::All).query(&self.gitlab); gitlab::api::paged(endpoint, Pagination::All).query(&self.gitlab);
match query { match query {
Err(e) => self.to_report( Err(e) => self.into_report(
vec![ReportStatus::ERROR(format!( vec![ReportStatus::ERROR(format!(
"{} {}", "{} {}",
fl!("error"), fl!("error"),
...@@ -144,7 +144,7 @@ impl ReportJob for ContainerAnalysisJob { ...@@ -144,7 +144,7 @@ impl ReportJob for ContainerAnalysisJob {
.iter() .iter()
.map(|cr| cr.tags.iter().filter(|t| t.created_at < ref_date).count()) .map(|cr| cr.tags.iter().filter(|t| t.created_at < ref_date).count())
.sum(); .sum();
self.to_report( self.into_report(
vec![ vec![
warning_if( warning_if(
registry_size > CONTAINER_REGISTRY_LIMIT, registry_size > CONTAINER_REGISTRY_LIMIT,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment