Skip to content
Snippets Groups Projects

Refactored CI

Merged Geoffrey Arthaud requested to merge xx-update-ci-and-deps into main
1 file
+ 51
45
Compare changes
  • Side-by-side
  • Inline
+ 51
45
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
- if: $CI_COMMIT_TAG
variables:
RUST_VERSION: "1.76" # slim or alpine not adapted because of openSSL dependency
RUST_VERSION: "1.79" # slim or alpine not adapted because of openSSL dependency
TARGET_ARCH: default
CARGO_HOME: .cargo
TEST_OPTIONS: --url $CI_PROJECT_URL -a
@@ -14,30 +20,47 @@ default:
policy: pull-push
stages:
- prepare
- build_test
- release
- deploy
- deploy_test
include:
- remote: 'https://gitlab.com/r2devops/hub/-/raw/docker_build@2.0.2/jobs/docker_build/docker_build.yml'
- remote: 'https://gitlab.com/r2devops/hub/-/raw/gitleaks@1.2.2/jobs/gitleaks/gitleaks.yml'
gitleaks:
stage: build_test
- component: ${CI_SERVER_FQDN}/share/components/oci-copier/crane@~latest
inputs:
as: copy-image-rust
stage: prepare
imageNameToCopy: rust
imageTagToCopy: $RUST_VERSION
copiedImageDigest: "RUST"
- component: $CI_SERVER_FQDN/share/components/oci-builder/podman@~latest
inputs:
as: release-gpd-image
stage: deploy
targetImageAppName: ${CI_PROJECT_NAME}
targetImageAppTag: $VERSION
targetImageRegistry: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}
targetImageRegistryDigestName: "GPD"
forceBuild: true
Dockerfile: ${CI_PROJECT_DIR}/Dockerfile
release-gpd-image:
needs:
- release-linux
cache: [ ]
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
- if: $CI_COMMIT_TAG
check-format:
stage: build_test
image: rust:$RUST_VERSION
image: ${REGISTRY_IMAGE_RUST}
script:
- rustup component add rustfmt
- rustup component add clippy
- cargo fmt --all -- --check
- cargo clippy -- -D warnings
rules:
- if: $CI_COMMIT_REF_NAME == 'main'
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
test-rust-current:
stage: build_test
@@ -46,16 +69,15 @@ test-rust-current:
- cargo test --verbose
- cargo run -- $TEST_OPTIONS
allow_failure: true
rules:
- if: $CI_COMMIT_REF_NAME == 'main'
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
test-rust-nightly:
extends: test-rust-current
image: rustlang/rust:nightly
allow_failure: true
test-clean-rust-current:
extends: test-rust-current
allow_failure: true
variables:
TEST_OPTIONS: $CLEAN_OPTIONS
@@ -68,18 +90,25 @@ test-clean-rust-current:
- rustup target add $TARGET_ARCH
- cargo build $CARGO_OPTS --target $TARGET_ARCH --release
- if [ -z "$NO_POSTPROCESS" ]; then strip $TARGET; $LDD_CMD $TARGET; $TARGET $TEST_OPTIONS; fi
- 'if [ -z "$DEBUG" ]; then curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file $TARGET "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/$TARGET_ARCH/${CI_COMMIT_TAG:-latest}/$APP_NAME"; fi'
- export VERSION=${CI_COMMIT_TAG:-latest}
- echo "VERSION=${VERSION}" > release.env
- 'if [ -z "$DEBUG" ]; then curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file $TARGET "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/$TARGET_ARCH/${VERSION}/$APP_NAME"; fi'
artifacts:
paths:
- $TARGET
reports:
dotenv: release.env
allow_failure: true
rules:
- if: $CI_COMMIT_REF_NAME == 'main'
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
- if: $CI_COMMIT_TAG
needs:
- copy-image-rust
- test-rust-current
release-linux:
extends: .rust-release
image: rust:$RUST_VERSION
image: ${REGISTRY_IMAGE_RUST}
variables:
TARGET_ARCH: x86_64-unknown-linux-musl
LDD_CMD: ldd
@@ -107,7 +136,7 @@ release-macos-x86:
release-windows:
extends: .rust-release
image: rust:$RUST_VERSION
image: ${REGISTRY_IMAGE_RUST}
variables:
TARGET_ARCH: x86_64-pc-windows-gnu
APP_NAME: gitlab-project-doctor.exe
@@ -116,18 +145,6 @@ release-windows:
- apt-get update
- apt-get install -y lld gcc-mingw-w64-x86-64
docker_build:
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'
test-release-docker:
stage: deploy_test
image: $CI_REGISTRY/pub/numeco/gitlab-project-doctor:$CI_COMMIT_SHA
@@ -135,9 +152,10 @@ test-release-docker:
- gitlab-project-doctor --url $CI_PROJECT_URL -a
cache: [ ]
needs:
- docker_build
- release-gpd-image
rules:
- if: $CI_COMMIT_REF_NAME == 'main'
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
- if: $CI_COMMIT_TAG
test-release-linux:
stage: deploy_test
@@ -149,17 +167,5 @@ test-release-linux:
- chmod +x gitlab-project-doctor
- ./gitlab-project-doctor --url $CI_PROJECT_URL -a
rules:
- if: $CI_COMMIT_REF_NAME == 'main'
docker_build-prod:
stage: deploy
extends: docker_build
variables:
COMMIT_CREATE_LATEST: "true"
IMAGE_TAG: "v1.19.2-debug"
retry: 2
needs:
- release-linux
cache: [ ]
rules:
- if: $CI_COMMIT_TAG
\ No newline at end of file
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
- if: $CI_COMMIT_TAG
Loading