diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f8c417de9c090e3626da97b47a030596e033eeea..40c0fb949a8f7223d54ef5876ea064af0347c992 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,9 +23,43 @@ stages: - cluster down - network down +#----------------------------------------------------------------------------------------------------------------------- +# Pre Stage Jobs +# + +pre vars: + image: registry.dsop.io/platform-one/big-bang/pipeline-templates/pipeline-templates/pre-envs:ubi8.3 + stage: .pre + artifacts: + reports: + dotenv: variables.env + script: + # obtain MR and master versions + - CHART_MR_VERSION=$(sed -n -e 's/^version. //p' chart/Chart.yaml) + - git fetch && git checkout ${CI_DEFAULT_BRANCH} + - CHART_MA_VERSION=$(sed -n -e 's/^version. //p' chart/Chart.yaml) + - git fetch && git checkout ${CI_COMMIT_REF_NAME} + - echo "CHART_MR_VERSION=$CHART_MR_VERSION" >> variables.env + - echo "CHART_MA_VERSION=$CHART_MA_VERSION" >> variables.env + # obtain semver differences (subtract master version from mr verison) + - chmod +x ./scripts/semver_diff.sh + - CHART_VERSION_DIFF=$(./scripts/semver_diff.sh $CHART_MR_VERSION $CHART_MA_VERSION) + - IFS=. DIFF_ARR=(${CHART_VERSION_DIFF##*-}) + - echo "CHART_VERSION_DIFF=$CHART_VERSION_DIFF" >> variables.env + # detect breaking change (first two version sections in semver diff) + - CHART_BREAKING_CHANGE="false" + - if (( ${DIFF_ARR[0]} > 0 )); then CHART_BREAKING_CHANGE="true"; fi + - if (( ${DIFF_ARR[1]} > 0 )); then CHART_BREAKING_CHANGE="true"; fi + # store variables + - echo "CHART_BREAKING_CHANGE=$CHART_BREAKING_CHANGE" >> variables.env + - cat variables.env + +#----------------------------------------------------------------------------------------------------------------------- + #----------------------------------------------------------------------------------------------------------------------- # Smoke Tests # + .bigbang: image: registry.dsop.io/platform-one/big-bang/pipeline-templates/pipeline-templates/k3d-builder:0.0.1 after_script: @@ -55,8 +89,12 @@ clean install: after_script: - kubectl get all -A - kubectl get helmrelease -A + upgrade: stage: smoke tests + needs: + - job: pre vars + artifacts: true extends: - .k3d rules: @@ -64,11 +102,11 @@ upgrade: variables: CLUSTER_NAME: "clean-${CI_COMMIT_SHORT_SHA}" script: + - if [ ${CHART_BREAKING_CHANGE} == "true" ]; then echo "Chart Breaking Change Detected, Exiting" && exit; fi - echo "Install Big Bang from ${CI_DEFAULT_BRANCH}" - git fetch && git checkout ${CI_DEFAULT_BRANCH} - *deploy_bigbang - *test_bigbang - - echo "Upgrade Big Bang from ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}" - git reset --hard && git clean -fd - git checkout ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} @@ -230,4 +268,4 @@ aws/rke2/cluster down: - job: fetch umbrella templates artifacts: true - job: aws/rke2/bigbang down -#----------------------------------------------------------------------------------------------------------------------- +#----------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/scripts/semver_diff.sh b/scripts/semver_diff.sh new file mode 100644 index 0000000000000000000000000000000000000000..dce17246cbf22a13bd194aedb70d5682c7c1729a --- /dev/null +++ b/scripts/semver_diff.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# return sem_a - sem_b +# sem_a and sem_b must be of same semver length +# Ex: +# ./hack/semver_diff.sh 1.2.3 1.1.1 +# 0.1.2 + +sem_a=$1 +sem_b=$2 + +IFS=. arr_a=(${sem_a##*-}) +IFS=. arr_b=(${sem_b##*-}) + +result=() + +for i in "${!arr_a[@]}"; do + result+=($((${arr_a[$i]}-${arr_b[$i]}))) +done + +IFS=. echo "${result[*]}" \ No newline at end of file