From bee59503d903ce72034048f1768ad047f9de4ba6 Mon Sep 17 00:00:00 2001 From: Milos Milutinovic Date: Thu, 5 Dec 2019 14:01:49 +0100 Subject: [PATCH] restructure templates; create more levels of abstraction --- .gcp-deploy.yml | 13 ------------- .gcp-k8s-diff.yml | 15 --------------- base/docker.yml | 20 ++++++++++++++++++++ .gcp-k8s-auth.yml => base/gcp-k8s-auth.yml | 0 mixins/deploy/gcp-deploy.yml | 11 +++++++++++ mixins/release/docker-release.yml | 20 ++++++++++++++++++++ mixins/test/gcp-k8s-diff.yml | 18 ++++++++++++++++++ 7 files changed, 69 insertions(+), 28 deletions(-) delete mode 100644 .gcp-deploy.yml delete mode 100644 .gcp-k8s-diff.yml create mode 100644 base/docker.yml rename .gcp-k8s-auth.yml => base/gcp-k8s-auth.yml (100%) create mode 100644 mixins/deploy/gcp-deploy.yml create mode 100644 mixins/release/docker-release.yml create mode 100644 mixins/test/gcp-k8s-diff.yml diff --git a/.gcp-deploy.yml b/.gcp-deploy.yml deleted file mode 100644 index fa0de3c..0000000 --- a/.gcp-deploy.yml +++ /dev/null @@ -1,13 +0,0 @@ -.gcp_deploy: - image: shomika17/gcloud-kubectl-kustomize:latest - before_script: - - echo "$SERVICE_ACCOUNT_CREDENTIALS" > key.json - - gcloud auth activate-service-account --key-file=key.json - - gcloud config set project $PROJECT - - gcloud config set container/cluster $CLUSTER - - gcloud config set compute/zone $ZONE - - gcloud container clusters get-credentials $CLUSTER --zone $ZONE - script: - - cd k8s/$APP/overlays/$OVERLAY/ - - kustomize edit set image $CI_REGISTRY_IMAGE=$NEW_IMAGE - - kustomize build . | kubectl apply -f - diff --git a/.gcp-k8s-diff.yml b/.gcp-k8s-diff.yml deleted file mode 100644 index 202e295..0000000 --- a/.gcp-k8s-diff.yml +++ /dev/null @@ -1,15 +0,0 @@ -.gcp_k8s_diff: - image: shomika17/gcloud-kubectl-kustomize:latest - before_script: - - echo "$SERVICE_ACCOUNT_CREDENTIALS" > key.json - - gcloud auth activate-service-account --key-file=key.json - - gcloud config set project $PROJECT - - gcloud config set container/cluster $CLUSTER - - gcloud config set compute/zone $ZONE - - gcloud container clusters get-credentials $CLUSTER --zone $ZONE - script: - - cd k8s/$APP/overlays/$OVERLAY/ - - kustomize build . | kubectl diff -f - | colordiff || true - - echo -e "\e[32mATTEMPTING A DRY RUN TO SEE IF YOUR K8S CONFIG IS VALID\e[0m" - - kustomize build . | kubectl apply --dry-run -f - || echo -e "\e[31mWHOOPS! SEEMS YOU HAVE MISCONFIGURED SOMETHING. WHY DON'T YOU FIX IT AND TRY AGAIN?\e[0m" - - echo -e "\e[32mSUCCESS! You have a valid k8s config :)\e[0m" diff --git a/base/docker.yml b/base/docker.yml new file mode 100644 index 0000000..27fa328 --- /dev/null +++ b/base/docker.yml @@ -0,0 +1,20 @@ +variables: + IMAGE_COMMIT: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + +before_script: + - which docker && docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY || true + +image: docker:19.03 + +.docker_build: + variables: + DOCKER_BUILD_EXTRA_ARGS: "" + script: + - docker build -t $IMAGE_COMMIT $DOCKER_BUILD_EXTRA_ARGS . + - docker push $IMAGE_COMMIT + +.docker_release: + script: + - docker pull $IMAGE_COMMIT + - docker tag $IMAGE_COMMIT $NEW_IMAGE + - docker push $NEW_IMAGE diff --git a/.gcp-k8s-auth.yml b/base/gcp-k8s-auth.yml similarity index 100% rename from .gcp-k8s-auth.yml rename to base/gcp-k8s-auth.yml diff --git a/mixins/deploy/gcp-deploy.yml b/mixins/deploy/gcp-deploy.yml new file mode 100644 index 0000000..ebc670b --- /dev/null +++ b/mixins/deploy/gcp-deploy.yml @@ -0,0 +1,11 @@ +include: + - local: '/base/gcp-k8s-auth.yml' + +.gcp_deploy: + extends: .gcp_k8s_auth + stage: deploy + script: + - cd k8s/$APP/overlays/$OVERLAY/ + - kustomize edit set image $CI_REGISTRY_IMAGE=$NEW_IMAGE + - kustomize build . | kubectl apply -f - + allow_failure: false diff --git a/mixins/release/docker-release.yml b/mixins/release/docker-release.yml new file mode 100644 index 0000000..a015703 --- /dev/null +++ b/mixins/release/docker-release.yml @@ -0,0 +1,20 @@ +include: + - local: '/base/docker.yml' + +.release_tag: + extends: .docker_release + stage: release + variables: + NEW_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG + only: + - tags + +.release_latest: + extends: .docker_release + stage: release + variables: + NEW_IMAGE: $CI_REGISTRY_IMAGE:latest + except: + - tags + only: + - master \ No newline at end of file diff --git a/mixins/test/gcp-k8s-diff.yml b/mixins/test/gcp-k8s-diff.yml new file mode 100644 index 0000000..2261b46 --- /dev/null +++ b/mixins/test/gcp-k8s-diff.yml @@ -0,0 +1,18 @@ + +include: + - local: '/base/gcp-k8s-auth.yml' + +.gcp_k8s_diff: + extends: .gcp_k8s_auth + script: + - cd k8s/$APP/overlays/$OVERLAY/ + - | + echo -e "\e[32m-------------------------------------------\e[0m" + echo -e "\e[32mATTEMPTING A DRY RUN TO SEE IF YOUR K8S CONFIG IS VALID\e[0m" + kustomize build . | kubectl apply --dry-run -f - || echo -e "\e[31mWHOOPS! SEEMS YOU HAVE MISCONFIGURED SOMETHING. WHY DON'T YOU FIX IT AND TRY AGAIN?\e[0m" || false + echo -e "\e[32mSUCCESS! You have a valid k8s config :)\e[0m" + echo -e "\e[32m-------------------------------------------\e[0m" + echo -e "\e[32m---------RUNNING DIFF ON YOUR CONFIG...----------\e[0m" + echo -e "\e[32m-------------------------------------------\e[0m" + - kustomize build . | kubectl diff -f - | colordiff || true + -- GitLab