diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 474d8d6de719bc11b2749c7d75b07a8434506492..dbb2c98571d0f7bdcb06e00c42cb385928dacd20 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,10 @@ +variables: + 2019_CONTAINER_IMAGE=asia.gcr.io/linuxconfsydney/symposion_app_2019 + DOCKER_DRIVER: overlay2 + build_image: image: docker:git + stage: build services: - docker:dind script: @@ -30,21 +35,36 @@ k8s-prod-deploy: only: - master environment: - name: prod + name: 2019/prod url: https://rego.linux.conf.au +build_review_deployment: + image: sparkprime/jsonnet + services: + - docker:dind + stage: build + script: + - docker run -v ${PWD}/k8s:/src sparkprime/jsonnet /src/deployment_template.jsonnet --tla-str slug="${CI_COMMIT_REF_SLUG}" > ${CI_COMMIT_REF_SLUG}.json + artifacts: + paths: + - ${CI_COMMIT_REF_SLUG}.json + build_2019_dev_image: image: docker:git + stage: build services: - docker:dind script: - - docker build -f docker/Dockerfile -t asia.gcr.io/linuxconfsydney/symposion_app_2019:$CI_COMMIT_SHA . - - docker build --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA -f docker/Dockerfile.dev -t asia.gcr.io/linuxconfsydney/symposion_app_2019_dev:$CI_COMMIT_SHA . - docker login -u _json_key -p "$GOOGLE_KEY" https://asia.gcr.io - - docker push asia.gcr.io/linuxconfsydney/symposion_app_2019:$CI_COMMIT_SHA - - docker push asia.gcr.io/linuxconfsydney/symposion_app_2019_dev:$CI_COMMIT_SHA - - docker tag asia.gcr.io/linuxconfsydney/symposion_app_2019_dev:$CI_COMMIT_SHA asia.gcr.io/linuxconfsydney/symposion_app_2019_dev:latest - - docker push asia.gcr.io/linuxconfsydney/symposion_app_2019_dev:latest + - docker pull "${2019_CONTAINER_IMAGE}"_dev:latest || true + - docker build --cache-from "${2019_CONTAINER_IMAGE}"_dev:latest -f docker/Dockerfile -t "${2019_CONTAINER_IMAGE}":$CI_COMMIT_SHA . + - docker build --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA -f docker/Dockerfile.dev -t "${2019_CONTAINER_IMAGE}"_dev:$CI_COMMIT_SHA . + - docker push "${2019_CONTAINER_IMAGE}":$CI_COMMIT_SHA + - docker push "${2019_CONTAINER_IMAGE}"_dev:$CI_COMMIT_SHA + - docker tag "${2019_CONTAINER_IMAGE}"_dev:$CI_COMMIT_SHA "${2019_CONTAINER_IMAGE}"_dev:latest + - docker tag "${2019_CONTAINER_IMAGE}"_dev:$CI_COMMIT_SHA "${2019_CONTAINER_IMAGE}"_dev:$CI_COMMIT_REF_SLUG + - docker push "${2019_CONTAINER_IMAGE}"_dev:latest + - docker push "${2019_CONTAINER_IMAGE}"_dev:${CI_COMMIT_REF_SLUG} except: - master @@ -56,14 +76,46 @@ k8s-2019_dev-deploy: - kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt - kubectl config set-context cluster --cluster=cluster --namespace=rego-dev --user=gitlab-sa - kubectl config use-context cluster - - kubectl --token "${GL_KUBE_TOKEN}" set image deployment/symposion-app symposion-app=asia.gcr.io/linuxconfsydney/symposion_app_2019_dev:$CI_COMMIT_SHA + - kubectl --token "${GL_KUBE_TOKEN}" set image deployment/symposion-app symposion-app="${2019_CONTAINER_IMAGE}"_dev:$CI_COMMIT_SHA only: - dev/2019 - - dev/* environment: - name: dev_2019 + name: 2019/dev url: https://dev.lca2019.org +k8s-2019_dev_review-deploy: + image: google/cloud-sdk + stage: deploy + script: + - echo "${CA_CERT}" > cert.crt + - kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt + - kubectl config set-context cluster --cluster=cluster --namespace=rego-dev --user=gitlab-sa + - kubectl config use-context cluster + - kubectl --token "${GL_KUBE_TOKEN}" apply -f ${CI_COMMIT_REF_SLUG}.json + only: + - /^dev\/.*$/ + environment: + name: 2019/dev/${CI_COMMIT_REF_SLUG} + url: https://${CI_COMMIT_REF_SLUG}.dev.lca2019.org + on_stop: k8s-2019_dev_review-stop-deploy + +k8s-2019_dev_review-stop-deploy: + image: google/cloud-sdk + stage: deploy + script: + - echo "${CA_CERT}" > cert.crt + - kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt + - kubectl config set-context cluster --cluster=cluster --namespace=rego-dev --user=gitlab-sa + - kubectl config use-context cluster + - kubectl --token "${GL_KUBE_TOKEN}" delete -f ${CI_COMMIT_REF_SLUG}.json + only: + - /^dev\/.*$/ + when: manual + environment: + name: 2019/dev/${CI_COMMIT_REF_SLUG} + url: https://${CI_COMMIT_REF_SLUG}.dev.lca2019.org + action: stop + k8s-2019_staging-deploy: image: google/cloud-sdk stage: deploy @@ -72,12 +124,12 @@ k8s-2019_staging-deploy: - kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt - kubectl config set-context cluster --cluster=cluster --namespace=lca2019-staging --user=gitlab-ci - kubectl config use-context cluster - - kubectl --token "${GL_KUBE_TOKEN}" set image deployment/symposion-app symposion-app=asia.gcr.io/linuxconfsydney/symposion_app_2019_dev:$CI_COMMIT_SHA + - kubectl --token "${GL_KUBE_TOKEN}" set image deployment/symposion-app symposion-app="${2019_CONTAINER_IMAGE}"_dev:$CI_COMMIT_SHA when: manual only: - dev/2019 environment: - name: staging + name: 2019/staging url: https://staging.lca2019.org .docs_template: &sphinx @@ -101,6 +153,6 @@ pages: name: docs url: https://laconfdev.gitlab.io/symposion_app/ -test_sphinx: +build_sphinx: <<: *sphinx - stage: test + stage: build