diff --git a/.gcp-deploy.yml b/.gcp-deploy.yml deleted file mode 100644 index fa0de3c45a2c3cde08bf946ebb737c7506f32585..0000000000000000000000000000000000000000 --- 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 202e295f6b14efa7a541a708b16e42ede28aa59c..0000000000000000000000000000000000000000 --- 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/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..ae0508ca64e8d1e8f8d5c73fd54817e9ee2129a1 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,9 @@ +stages: + - test + +test: + image: alpine + stage: test + script: + - echo $DOCKER_DRIVER + - echo "override" diff --git a/base/docker.yml b/base/docker.yml new file mode 100644 index 0000000000000000000000000000000000000000..d4e59b6de2884884b732a436a4bcfbcf704ddcb0 --- /dev/null +++ b/base/docker.yml @@ -0,0 +1,22 @@ +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: + variables: + NEW_IMAGE: NEW_IMAGE + 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 61% rename from .gcp-k8s-auth.yml rename to base/gcp-k8s-auth.yml index f6c4dacf0d8b564b9672ef8b1bd2be79545310f7..43386e9a7b870c9d6baef19ac431023ef210e28b 100644 --- a/.gcp-k8s-auth.yml +++ b/base/gcp-k8s-auth.yml @@ -1,3 +1,9 @@ +# [[ AUTH ]] - authenticates against a GCP cluster +# - ZONE - GCP cluster zone (e.g. us-east1-b) +# - PROJECT - GCP project ID +# - CLUSTER - name of the cluster to authenticate to +# - SERVICE_ACCOUNT_CREDENTIALS - JSON credentials for the service account + .gcp_k8s_auth: image: shomika17/gcloud-kubectl-kustomize:latest before_script: diff --git a/mixins/deploy/gcp-k8s-deploy.yml b/mixins/deploy/gcp-k8s-deploy.yml new file mode 100644 index 0000000000000000000000000000000000000000..0e2c966085542a9aa91bd197e41a5667bd9bd0ac --- /dev/null +++ b/mixins/deploy/gcp-k8s-deploy.yml @@ -0,0 +1,34 @@ +include: + - local: '/base/gcp-k8s-auth.yml' + + +# ------------------------------ DEPLOY --------------------------------------- +# This CI template consists of two parts: +# - Auth +# - Deploy + +# [[ AUTH ]] - authenticates against a GCP cluster +# - ZONE - GCP cluster zone (e.g. us-east1-b) +# - PROJECT - GCP project ID +# - CLUSTER - name of the cluster to authenticate to +# - SERVICE_ACCOUNT_CREDENTIALS - JSON credentials for the service account + +# [[ DEPLOY ]] - deploys from path `k8s/$APP/overlays/$OVERLAY` +# - APP - app to deploy +# - OLD_IMAGE - specify this only if you want the image changed; default value is $CI_REGISTRY_IMAGE (will change the image each time the job is run) +# - NEW_IMAGE - image:tag you want the OLD_IMAGE replaced with. Defaults to $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA in the template +# - OVERLAY - overlay you want the deploy + +.gcp_k8s_deploy: + extends: .gcp_k8s_auth + stage: deploy + variables: + APP: APP_TO_DEPLOY + OVERLAY: OVERLAY_TO_DEPLOY + OLD_IMAGE: $CI_REGISTRY_IMAGE + NEW_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + script: + - cd k8s/$APP/overlays/$OVERLAY/ + - kustomize edit set image $OLD_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 0000000000000000000000000000000000000000..a015703d50ead7ac312a223e56d492a52aedf8a5 --- /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 0000000000000000000000000000000000000000..4f151ab030572f79c090809f331a554a8a498667 --- /dev/null +++ b/mixins/test/gcp-k8s-diff.yml @@ -0,0 +1,35 @@ + +include: + - local: '/base/gcp-k8s-auth.yml' + +# This CI template consists of two parts: +# - Auth +# - K8s test + +# [[ AUTH ]] - authenticates against a GCP cluster +# - ZONE - GCP cluster zone (e.g. us-east1-b) +# - PROJECT - GCP project ID +# - CLUSTER - name of the cluster to authenticate to +# - SERVICE_ACCOUNT_CREDENTIALS - JSON credentials for the service account + +# [[ K8S TEST ]] - tests k8s coniguration in path `k8s/$APP/overlays/$OVERLAY` +# - APP - app which should have its k8s config tested +# - OVERLAY - overlay you want the deploy + +.gcp_k8s_diff: + extends: .gcp_k8s_auth + variables: + APP: APP_TO_TEST + OVERLAY: OVERLAY_TO_TEST + 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 +