From 57c2bc9cd4ace856cef0d405dac989697c2a92e5 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Thu, 28 Sep 2023 16:39:44 +1300 Subject: [PATCH 01/20] Fetching QA_GITLAB_REVISION like in review --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 41d1d85789..2a4bf694d3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -387,6 +387,8 @@ stop_review_eks: - echo "export QA_ENVIRONMENT_URL=gitlab.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export GITLAB_ROOT_DOMAIN=$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export S3_ENDPOINT=https://minio.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s + - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" artifacts: paths: - variables -- GitLab From aee0eedc7f0cad2e659115742b9c62ddd79ec8c2 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Fri, 29 Sep 2023 12:21:34 +1300 Subject: [PATCH 02/20] Moving scripts to common job --- .gitlab-ci.yml | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2a4bf694d3..7347fee18d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -244,17 +244,18 @@ lint_package: HOST_SUFFIX: "$CI_ENVIRONMENT_SLUG" DOMAIN: "-$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" VARIABLES_FILE: "variables/${CI_JOB_NAME}" - extends: .source_autodevops + extends: + - .run_script script: - - mkdir -p $(dirname "${VARIABLES_FILE}") - - set_context - - check_kube_domain - - kubectl version - - ensure_namespace - - create_secret - - deploy - - wait_for_deploy - - restart_toolbox + # - mkdir -p $(dirname "${VARIABLES_FILE}") + # - set_context + # - check_kube_domain + # - kubectl version + # - ensure_namespace + # - create_secret + # - deploy + # - wait_for_deploy + # - restart_toolbox - echo "export QA_ENVIRONMENT_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export GITLAB_ROOT_DOMAIN=$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export GITLAB_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" @@ -371,6 +372,26 @@ stop_review_eks: # or `canary` deploys, or you simply want more control over when you deploy # to production, uncomment the `when: manual` line in the `production` job. +.run_script: + extends: .source_autodevops + script: + - mkdir -p $(dirname "${VARIABLES_FILE}") + - set_context + - check_kube_domain + - > + if [ "$CI_JOB_NAME" == ".review_template" ]; then + kubectl version + fi + - ensure_namespace + - create_secret + - deploy + - wait_for_deploy + - > + if [ "$CI_JOB_NAME" == ".stable" ]; then + check_domain_ip + fi + - restart_toolbox + .stable: stage: stable extends: .source_autodevops -- GitLab From e3449b5dac298949e4624e7f49f9eb48d2f98d70 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Mon, 2 Oct 2023 12:47:08 +1300 Subject: [PATCH 03/20] Created a seperate base job --- .gitlab-ci.yml | 56 +++++++++++++++++++------------------------------- 1 file changed, 21 insertions(+), 35 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7347fee18d..1095637037 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -54,6 +54,8 @@ variables: # STRICT_VERSIONS is used in RSpecs to ensure exact version match for tools like "helm" and "kubectl" STRICT_VERSIONS: "true" KUBE_CRD_SCHEMA_URL: "https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/v3/apis__apiextensions.k8s.io__v1_openapi.json" + REVIEW_JOB_REGEX_PATTERN: "review_(gke[0-9]{3}|eks)" + STABLE_JOB_REGEX_PATTERN: "stable_(gke[0-9]{3}|eks)" HELM_DEFAULT_SETTINGS: | certmanager-issuer: email: support@gitlab.com @@ -246,23 +248,6 @@ lint_package: VARIABLES_FILE: "variables/${CI_JOB_NAME}" extends: - .run_script - script: - # - mkdir -p $(dirname "${VARIABLES_FILE}") - # - set_context - # - check_kube_domain - # - kubectl version - # - ensure_namespace - # - create_secret - # - deploy - # - wait_for_deploy - # - restart_toolbox - - echo "export QA_ENVIRONMENT_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - echo "export GITLAB_ROOT_DOMAIN=$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - echo "export GITLAB_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - echo "export REGISTRY_URL=registry-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - echo "export S3_ENDPOINT=https://minio-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s - - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" artifacts: when: always paths: @@ -374,42 +359,43 @@ stop_review_eks: .run_script: extends: .source_autodevops + variables: + JOB_REGEX_PATTERN script: + - echo $CI_ENVIRONMENT_SLUG + - echo $CI_JOB_NAME - mkdir -p $(dirname "${VARIABLES_FILE}") - set_context - check_kube_domain - > - if [ "$CI_JOB_NAME" == ".review_template" ]; then + if [[ $CI_JOB_NAME =~ $REVIEW_JOB_REGEX_PATTERN ]]; then kubectl version fi - ensure_namespace - create_secret - deploy - wait_for_deploy + - echo $CI_JOB_NAME - > - if [ "$CI_JOB_NAME" == ".stable" ]; then + if [[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]]; then check_domain_ip fi - restart_toolbox + # Setting the following env vars according the the job .stable or .review_template calling this base job + - echo "export QA_ENVIRONMENT_URL=$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "gitlab" || echo "gitlab-${HOST_SUFFIX}").$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - echo "export GITLAB_ROOT_DOMAIN=$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "$KUBE_INGRESS_BASE_DOMAIN" || echo "$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN")" >> "${VARIABLES_FILE}" + - > + if [[ $CI_JOB_NAME =~ $REVIEW_JOB_REGEX_PATTERN ]]; then + echo "export GITLAB_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + echo "export REGISTRY_URL=registry-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + fi + - echo "export S3_ENDPOINT=https://$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "minio" || echo "minio-${HOST_SUFFIX}").$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s + - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" .stable: stage: stable - extends: .source_autodevops - script: - - mkdir -p $(dirname "${VARIABLES_FILE}") - - set_context - - check_kube_domain - - ensure_namespace - - create_secret - - deploy - - wait_for_deploy - - check_domain_ip - - restart_toolbox - - echo "export QA_ENVIRONMENT_URL=gitlab.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - echo "export GITLAB_ROOT_DOMAIN=$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - echo "export S3_ENDPOINT=https://minio.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s - - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" + extends: .run_script artifacts: paths: - variables -- GitLab From e4a1625df7364249f9e37e11e5b8a893c46fee7f Mon Sep 17 00:00:00 2001 From: Vishal Patel Date: Tue, 3 Oct 2023 19:59:35 +0000 Subject: [PATCH 04/20] Removing debugging command --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1095637037..79c6c5295e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -375,7 +375,6 @@ stop_review_eks: - create_secret - deploy - wait_for_deploy - - echo $CI_JOB_NAME - > if [[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]]; then check_domain_ip -- GitLab From 95d9ae6875491b1a4e26282cd66e8f429e4490bf Mon Sep 17 00:00:00 2001 From: Vishal Patel Date: Tue, 3 Oct 2023 20:01:02 +0000 Subject: [PATCH 05/20] Removing debugging commands --- .gitlab-ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 79c6c5295e..54af1a5c4f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -362,8 +362,6 @@ stop_review_eks: variables: JOB_REGEX_PATTERN script: - - echo $CI_ENVIRONMENT_SLUG - - echo $CI_JOB_NAME - mkdir -p $(dirname "${VARIABLES_FILE}") - set_context - check_kube_domain -- GitLab From 883357b571693caf4b893d58075fd2bdd9f7b372 Mon Sep 17 00:00:00 2001 From: Vishal Patel Date: Sun, 8 Oct 2023 21:32:31 +0000 Subject: [PATCH 06/20] Removing unwanted JOB_REGEX_PATTERN --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 54af1a5c4f..0f7e3e3337 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -360,7 +360,6 @@ stop_review_eks: .run_script: extends: .source_autodevops variables: - JOB_REGEX_PATTERN script: - mkdir -p $(dirname "${VARIABLES_FILE}") - set_context -- GitLab From 6295d31f39ea47f37652f7ef8a7300b87a27d262 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Mon, 2 Oct 2023 10:32:01 +1300 Subject: [PATCH 07/20] Added command for debugging --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0f7e3e3337..6e4677f80c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -361,6 +361,7 @@ stop_review_eks: extends: .source_autodevops variables: script: + - echo $CI_JOB_NAME - mkdir -p $(dirname "${VARIABLES_FILE}") - set_context - check_kube_domain @@ -372,6 +373,7 @@ stop_review_eks: - create_secret - deploy - wait_for_deploy + - echo $CI_JOB_NAME - > if [[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]]; then check_domain_ip -- GitLab From 940a893e4ebe2dd834606e8f7efcfd83f312628b Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Mon, 2 Oct 2023 10:41:40 +1300 Subject: [PATCH 08/20] Adding some debugging --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6e4677f80c..9ec28b820e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -361,6 +361,7 @@ stop_review_eks: extends: .source_autodevops variables: script: + - echo $CI_ENVIRONMENT_SLUG - echo $CI_JOB_NAME - mkdir -p $(dirname "${VARIABLES_FILE}") - set_context -- GitLab From 109aab9509e63ce39e11a6e46164f96093dfae38 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Mon, 16 Oct 2023 16:23:17 +1300 Subject: [PATCH 09/20] Removed echos debg --- .gitlab-ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9ec28b820e..0f7e3e3337 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -361,8 +361,6 @@ stop_review_eks: extends: .source_autodevops variables: script: - - echo $CI_ENVIRONMENT_SLUG - - echo $CI_JOB_NAME - mkdir -p $(dirname "${VARIABLES_FILE}") - set_context - check_kube_domain @@ -374,7 +372,6 @@ stop_review_eks: - create_secret - deploy - wait_for_deploy - - echo $CI_JOB_NAME - > if [[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]]; then check_domain_ip -- GitLab From c41a62ea84480a201413007382a56a126ec9bec6 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Mon, 16 Oct 2023 16:36:33 +1300 Subject: [PATCH 10/20] Moving to common jobs --- .gitlab-ci.yml | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0f7e3e3337..fc13a45c40 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -240,14 +240,39 @@ lint_package: cronJob: apiVersion: batch/v1 +.set_up_varfile_and_kubecontext: + script: + - mkdir -p $(dirname "${VARIABLES_FILE}") + - set_context + - check_kube_domain + +.set_up_namespace_secret_and_deploy: + script: + - ensure_namespace + - create_secret + - deploy + - wait_for_deploy + + .review_template: stage: review variables: HOST_SUFFIX: "$CI_ENVIRONMENT_SLUG" DOMAIN: "-$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" VARIABLES_FILE: "variables/${CI_JOB_NAME}" - extends: - - .run_script + extends: .source_autodevops + script: + - !reference [.set_up_varfile_and_kubecontext:script] + - kubectl version + - !reference [.set_up_namespace_secret_and_deploy:script] + - restart_toolbox + - echo "export QA_ENVIRONMENT_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - echo "export GITLAB_ROOT_DOMAIN=$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - echo "export GITLAB_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - echo "export REGISTRY_URL=registry-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - echo "export S3_ENDPOINT=https://minio-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s + - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" artifacts: when: always paths: @@ -357,13 +382,13 @@ stop_review_eks: # or `canary` deploys, or you simply want more control over when you deploy # to production, uncomment the `when: manual` line in the `production` job. + + .run_script: extends: .source_autodevops variables: script: - - mkdir -p $(dirname "${VARIABLES_FILE}") - - set_context - - check_kube_domain + - !reference [.set_up_varfile_and_kubecontext:script] - > if [[ $CI_JOB_NAME =~ $REVIEW_JOB_REGEX_PATTERN ]]; then kubectl version -- GitLab From 5bed41c5215e8cce80ff8c374450e88c0e76b885 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Mon, 16 Oct 2023 16:39:44 +1300 Subject: [PATCH 11/20] Moving to common jobs --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fc13a45c40..f18651d9bd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -240,13 +240,13 @@ lint_package: cronJob: apiVersion: batch/v1 -.set_up_varfile_and_kubecontext: +.set_up_varfile_and_kubecontext: &set_up_varfile_and_kubecontext script: - mkdir -p $(dirname "${VARIABLES_FILE}") - set_context - check_kube_domain -.set_up_namespace_secret_and_deploy: +.set_up_namespace_secret_and_deploy: &set_up_namespace_secret_and_deploy script: - ensure_namespace - create_secret -- GitLab From 2fd7a4a8066c82832ea0f67872236798c3d15a51 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Mon, 16 Oct 2023 16:41:25 +1300 Subject: [PATCH 12/20] Moving to common jobs --- .gitlab-ci.yml | 58 +++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f18651d9bd..e2b0afaeda 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -384,35 +384,35 @@ stop_review_eks: -.run_script: - extends: .source_autodevops - variables: - script: - - !reference [.set_up_varfile_and_kubecontext:script] - - > - if [[ $CI_JOB_NAME =~ $REVIEW_JOB_REGEX_PATTERN ]]; then - kubectl version - fi - - ensure_namespace - - create_secret - - deploy - - wait_for_deploy - - > - if [[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]]; then - check_domain_ip - fi - - restart_toolbox - # Setting the following env vars according the the job .stable or .review_template calling this base job - - echo "export QA_ENVIRONMENT_URL=$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "gitlab" || echo "gitlab-${HOST_SUFFIX}").$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - echo "export GITLAB_ROOT_DOMAIN=$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "$KUBE_INGRESS_BASE_DOMAIN" || echo "$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN")" >> "${VARIABLES_FILE}" - - > - if [[ $CI_JOB_NAME =~ $REVIEW_JOB_REGEX_PATTERN ]]; then - echo "export GITLAB_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export REGISTRY_URL=registry-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - fi - - echo "export S3_ENDPOINT=https://$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "minio" || echo "minio-${HOST_SUFFIX}").$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s - - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" +# .run_script: +# extends: .source_autodevops +# variables: +# script: +# - !reference [.set_up_varfile_and_kubecontext:script] +# - > +# if [[ $CI_JOB_NAME =~ $REVIEW_JOB_REGEX_PATTERN ]]; then +# kubectl version +# fi +# - ensure_namespace +# - create_secret +# - deploy +# - wait_for_deploy +# - > +# if [[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]]; then +# check_domain_ip +# fi +# - restart_toolbox +# # Setting the following env vars according the the job .stable or .review_template calling this base job +# - echo "export QA_ENVIRONMENT_URL=$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "gitlab" || echo "gitlab-${HOST_SUFFIX}").$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" +# - echo "export GITLAB_ROOT_DOMAIN=$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "$KUBE_INGRESS_BASE_DOMAIN" || echo "$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN")" >> "${VARIABLES_FILE}" +# - > +# if [[ $CI_JOB_NAME =~ $REVIEW_JOB_REGEX_PATTERN ]]; then +# echo "export GITLAB_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" +# echo "export REGISTRY_URL=registry-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" +# fi +# - echo "export S3_ENDPOINT=https://$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "minio" || echo "minio-${HOST_SUFFIX}").$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" +# - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s +# - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" .stable: stage: stable -- GitLab From b63e9d2e5e395d33aa766a404b8789efa39840e4 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Mon, 16 Oct 2023 16:43:11 +1300 Subject: [PATCH 13/20] Moving to common jobs --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e2b0afaeda..cc92daf33a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -416,7 +416,7 @@ stop_review_eks: .stable: stage: stable - extends: .run_script + extends: .source_autodevops artifacts: paths: - variables -- GitLab From 9dc028669c59fffad1f60eb80fddfb50b24be728 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Tue, 17 Oct 2023 10:17:50 +1300 Subject: [PATCH 14/20] Using yaml anchors --- .gitlab-ci.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cc92daf33a..aff66626ed 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -262,9 +262,9 @@ lint_package: VARIABLES_FILE: "variables/${CI_JOB_NAME}" extends: .source_autodevops script: - - !reference [.set_up_varfile_and_kubecontext:script] + - *set_up_varfile_and_kubecontext - kubectl version - - !reference [.set_up_namespace_secret_and_deploy:script] + - *set_up_namespace_secret_and_deploy - restart_toolbox - echo "export QA_ENVIRONMENT_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export GITLAB_ROOT_DOMAIN=$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" @@ -417,6 +417,19 @@ stop_review_eks: .stable: stage: stable extends: .source_autodevops + script: + - mkdir -p $(dirname "${VARIABLES_FILE}") + - set_context + - check_kube_domain + - ensure_namespace + - create_secret + - deploy + - wait_for_deploy + - check_domain_ip + - restart_toolbox + - echo "export QA_ENVIRONMENT_URL=gitlab.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - echo "export GITLAB_ROOT_DOMAIN=$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - echo "export S3_ENDPOINT=https://minio.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" artifacts: paths: - variables -- GitLab From 974a7ecbd98dd7f0e6ac3b7b925301fe61e93049 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Tue, 17 Oct 2023 10:21:47 +1300 Subject: [PATCH 15/20] Adding quotest aroun anchors --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aff66626ed..ce165f8267 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -262,9 +262,9 @@ lint_package: VARIABLES_FILE: "variables/${CI_JOB_NAME}" extends: .source_autodevops script: - - *set_up_varfile_and_kubecontext + - "*set_up_varfile_and_kubecontext" - kubectl version - - *set_up_namespace_secret_and_deploy + - "*set_up_namespace_secret_and_deploy" - restart_toolbox - echo "export QA_ENVIRONMENT_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export GITLAB_ROOT_DOMAIN=$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" -- GitLab From afc513563b20696e5c0670d62ec35074648bb2f9 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Tue, 17 Oct 2023 10:27:47 +1300 Subject: [PATCH 16/20] Removing script section from anchors --- .gitlab-ci.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ce165f8267..7b3815d0ca 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -241,13 +241,11 @@ lint_package: apiVersion: batch/v1 .set_up_varfile_and_kubecontext: &set_up_varfile_and_kubecontext - script: - mkdir -p $(dirname "${VARIABLES_FILE}") - set_context - check_kube_domain .set_up_namespace_secret_and_deploy: &set_up_namespace_secret_and_deploy - script: - ensure_namespace - create_secret - deploy @@ -262,9 +260,9 @@ lint_package: VARIABLES_FILE: "variables/${CI_JOB_NAME}" extends: .source_autodevops script: - - "*set_up_varfile_and_kubecontext" + - *set_up_varfile_and_kubecontext - kubectl version - - "*set_up_namespace_secret_and_deploy" + - *set_up_namespace_secret_and_deploy - restart_toolbox - echo "export QA_ENVIRONMENT_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export GITLAB_ROOT_DOMAIN=$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" -- GitLab From 652261634ffac8911ea10be3bda2b3e675b344fb Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Tue, 17 Oct 2023 14:55:42 +1300 Subject: [PATCH 17/20] Checking another solution --- .gitlab-ci.yml | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7b3815d0ca..05830d960d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -240,17 +240,30 @@ lint_package: cronJob: apiVersion: batch/v1 -.set_up_varfile_and_kubecontext: &set_up_varfile_and_kubecontext +.set_up_varfile_and_kubecontext: + script: - mkdir -p $(dirname "${VARIABLES_FILE}") - set_context - check_kube_domain -.set_up_namespace_secret_and_deploy: &set_up_namespace_secret_and_deploy +.set_up_namespace_secret_and_deploy: + script: - ensure_namespace - create_secret - deploy - wait_for_deploy +# .set_up_varfile_and_kubecontext: &set_up_varfile_and_kubecontext +# - mkdir -p $(dirname "${VARIABLES_FILE}") +# - set_context +# - check_kube_domain + +# .set_up_namespace_secret_and_deploy: &set_up_namespace_secret_and_deploy +# - ensure_namespace +# - create_secret +# - deploy +# - wait_for_deploy + .review_template: stage: review @@ -260,9 +273,11 @@ lint_package: VARIABLES_FILE: "variables/${CI_JOB_NAME}" extends: .source_autodevops script: - - *set_up_varfile_and_kubecontext + # - *set_up_varfile_and_kubecontext + - !reference [.set_up_varfile_and_kubecontext, script] - kubectl version - - *set_up_namespace_secret_and_deploy + - !reference [.set_up_namespace_secret_and_deploy, script] + # - *set_up_namespace_secret_and_deploy - restart_toolbox - echo "export QA_ENVIRONMENT_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export GITLAB_ROOT_DOMAIN=$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" -- GitLab From bc957aa2f1a530cb1bbe0e54f2498e40dfeb344c Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Tue, 17 Oct 2023 15:09:38 +1300 Subject: [PATCH 18/20] Moved common script to separate jobs --- .gitlab-ci.yml | 55 ++------------------------------------------------ 1 file changed, 2 insertions(+), 53 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 05830d960d..c5b0623b77 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -253,18 +253,6 @@ lint_package: - deploy - wait_for_deploy -# .set_up_varfile_and_kubecontext: &set_up_varfile_and_kubecontext -# - mkdir -p $(dirname "${VARIABLES_FILE}") -# - set_context -# - check_kube_domain - -# .set_up_namespace_secret_and_deploy: &set_up_namespace_secret_and_deploy -# - ensure_namespace -# - create_secret -# - deploy -# - wait_for_deploy - - .review_template: stage: review variables: @@ -273,11 +261,9 @@ lint_package: VARIABLES_FILE: "variables/${CI_JOB_NAME}" extends: .source_autodevops script: - # - *set_up_varfile_and_kubecontext - !reference [.set_up_varfile_and_kubecontext, script] - kubectl version - !reference [.set_up_namespace_secret_and_deploy, script] - # - *set_up_namespace_secret_and_deploy - restart_toolbox - echo "export QA_ENVIRONMENT_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export GITLAB_ROOT_DOMAIN=$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" @@ -395,49 +381,12 @@ stop_review_eks: # or `canary` deploys, or you simply want more control over when you deploy # to production, uncomment the `when: manual` line in the `production` job. - - -# .run_script: -# extends: .source_autodevops -# variables: -# script: -# - !reference [.set_up_varfile_and_kubecontext:script] -# - > -# if [[ $CI_JOB_NAME =~ $REVIEW_JOB_REGEX_PATTERN ]]; then -# kubectl version -# fi -# - ensure_namespace -# - create_secret -# - deploy -# - wait_for_deploy -# - > -# if [[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]]; then -# check_domain_ip -# fi -# - restart_toolbox -# # Setting the following env vars according the the job .stable or .review_template calling this base job -# - echo "export QA_ENVIRONMENT_URL=$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "gitlab" || echo "gitlab-${HOST_SUFFIX}").$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" -# - echo "export GITLAB_ROOT_DOMAIN=$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "$KUBE_INGRESS_BASE_DOMAIN" || echo "$CI_ENVIRONMENT_SLUG.$KUBE_INGRESS_BASE_DOMAIN")" >> "${VARIABLES_FILE}" -# - > -# if [[ $CI_JOB_NAME =~ $REVIEW_JOB_REGEX_PATTERN ]]; then -# echo "export GITLAB_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" -# echo "export REGISTRY_URL=registry-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" -# fi -# - echo "export S3_ENDPOINT=https://$([[ $CI_JOB_NAME =~ $STABLE_JOB_REGEX_PATTERN ]] && echo "minio" || echo "minio-${HOST_SUFFIX}").$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" -# - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s -# - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" - .stable: stage: stable extends: .source_autodevops script: - - mkdir -p $(dirname "${VARIABLES_FILE}") - - set_context - - check_kube_domain - - ensure_namespace - - create_secret - - deploy - - wait_for_deploy + - !reference [.set_up_varfile_and_kubecontext, script] + - !reference [.set_up_namespace_secret_and_deploy, script] - check_domain_ip - restart_toolbox - echo "export QA_ENVIRONMENT_URL=gitlab.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" -- GitLab From 3aad17754951380f8c4ab9bbcdd3906e81fdff2c Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Tue, 17 Oct 2023 15:35:37 +1300 Subject: [PATCH 19/20] Moving QA script to common job --- .gitlab-ci.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c5b0623b77..c56ac88192 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -253,6 +253,11 @@ lint_package: - deploy - wait_for_deploy +.get_qa_revision: + script: + - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s + - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" + .review_template: stage: review variables: @@ -270,8 +275,7 @@ lint_package: - echo "export GITLAB_URL=gitlab-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export REGISTRY_URL=registry-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export S3_ENDPOINT=https://minio-$HOST_SUFFIX.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - - kubectl wait pods -n $NAMESPACE -l app=toolbox,release=$RELEASE_NAME --for condition=Ready --timeout=60s - - echo "export QA_GITLAB_REVISION=`kubectl exec -i $(kubectl get pods -lrelease=$RELEASE_NAME,app=toolbox -o custom-columns=":metadata.name") -c toolbox -- cat /srv/gitlab/REVISION`" >> "${VARIABLES_FILE}" + - !reference [.get_qa_revision, script] artifacts: when: always paths: @@ -392,6 +396,7 @@ stop_review_eks: - echo "export QA_ENVIRONMENT_URL=gitlab.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export GITLAB_ROOT_DOMAIN=$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" - echo "export S3_ENDPOINT=https://minio.$KUBE_INGRESS_BASE_DOMAIN" >> "${VARIABLES_FILE}" + - !reference [.get_qa_revision, script] artifacts: paths: - variables -- GitLab From 60be8204023f8ba56d826da5a4707c6927ec7bd5 Mon Sep 17 00:00:00 2001 From: "vishal.s.patel" Date: Tue, 17 Oct 2023 15:38:48 +1300 Subject: [PATCH 20/20] Removed unused vars --- .gitlab-ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c56ac88192..cf156b66a5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -54,8 +54,6 @@ variables: # STRICT_VERSIONS is used in RSpecs to ensure exact version match for tools like "helm" and "kubectl" STRICT_VERSIONS: "true" KUBE_CRD_SCHEMA_URL: "https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/v3/apis__apiextensions.k8s.io__v1_openapi.json" - REVIEW_JOB_REGEX_PATTERN: "review_(gke[0-9]{3}|eks)" - STABLE_JOB_REGEX_PATTERN: "stable_(gke[0-9]{3}|eks)" HELM_DEFAULT_SETTINGS: | certmanager-issuer: email: support@gitlab.com -- GitLab