From c5225da220352a4fe5f8c2047517586686427acb Mon Sep 17 00:00:00 2001 From: Kevin Tumma Date: Wed, 28 Jun 2023 12:24:53 +0200 Subject: [PATCH] sync ci --- .gitlab-ci.yml | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..5ac2d7e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,94 @@ +stages: + - lint + - build + - deploy + - release + +default: + image: + name: "alpine/k8s:1.26.3" + +variables: + PIPELINE: + description: "Defines which Path of the Pipeline" + value: "default" + options: + - release + - default + +workflow: + name: "Pipeline for Merge Request: $merge_request_event" + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + variables: + PIPELINE: "release" + - if: $CI_COMMIT_REF_NAME =~ /release/ + variables: + PIPELINE: "release" + - if: $CI_COMMIT_TAG + when: never + - if: $CI_PIPELINE_SOURCE == "push" + when: never + - if: "$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS" + when: never + +Helm Lint: + stage: lint + image: + name: alpine/helm:3.11.1 + entrypoint: ["/bin/sh", "-c"] + script: + - helm lint . + +Helm Template: + stage: lint + image: + name: alpine/helm:3.11.1 + entrypoint: ["/bin/sh", "-c"] + script: + - echo "Templating for Answerfile Container Upload" + - helm template . -f testanswers/answers-startup.yml + +Kubescore: + stage: lint + image: zegl/kube-score:latest + script: + - echo "Scoring the Chart YAML" + - kube-score score Chart.yaml + +Nexus Upload: + stage: release + needs: + - Helm Template + - Helm Lint + rules: + - if: $PIPELINE == "release" + image: registry.knecon.com/knecon/devops/build-image:latest + script: + - VERSION=$(cat Chart.yaml | grep "^version:" | sed 's/^version:\s\(.*\)$/\1/g') + - uploadFile=$( helm package . | awk 'NF>1{print q $NF}' ) + - curl -s -u "${CI_NEXUS_USER}:${CI_NEXUS_PASSWORD}" "${CI_NEXUS_ADDRESS}:443/repository/red-dev/" --upload-file $uploadFile + - echo "FILE=$(echo $uploadFile)" >> variables.env + - echo "VERSION=$(echo $VERSION)" >> variables.env + artifacts: + reports: + dotenv: variables.env + +Helm-pre-release: + stage: release + rules: + - if: $PIPELINE == "release" + needs: + - job: Nexus Upload + artifacts: true + image: registry.gitlab.com/gitlab-org/release-cli:latest + script: + - echo "Releasing version $VERSION" + release: + tag_name: '$VERSION' + description: '$VERSION' + ref: '$CI_COMMIT_SHA' + assets: + links: + - name: '$FILE' + url: '${CI_NEXUS_ADDRESS}/repository/red-dev/$FILE'