diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4af6921874cbbb7fe50cfa30a8775fd2bf2a1241..bc4016f66fd32b243fc8494a4da2d6150c01e9e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,214 +1,28 @@ +stages: + - build + variables: - CONTAINER_IMAGE_2019: "asia.gcr.io/linuxconfsydney/symposion_app_2019" - CONTAINER_IMAGE_2020: "asia.gcr.io/linuxconfsydney/symposion_app_2020" - DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "/certs" + CONTAINER_PREFIX: 2020 + CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/$CONTAINER_PREFIX:$CI_COMMIT_SHA -build_image: +build-image: image: docker:git stage: build services: - docker:dind script: - - docker build -f docker/Dockerfile -t asia.gcr.io/linuxconfsydney/symposion_app:$CI_COMMIT_SHA . - - docker build --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA -f docker/Dockerfile.dev -t asia.gcr.io/linuxconfsydney/symposion_app_dev:$CI_COMMIT_SHA . - - docker login -u _json_key -p "$GOOGLE_KEY" https://asia.gcr.io - - docker push asia.gcr.io/linuxconfsydney/symposion_app:$CI_COMMIT_SHA - - docker push asia.gcr.io/linuxconfsydney/symposion_app_dev:$CI_COMMIT_SHA - - docker tag asia.gcr.io/linuxconfsydney/symposion_app:$CI_COMMIT_SHA asia.gcr.io/linuxconfsydney/symposion_app:latest - - docker tag asia.gcr.io/linuxconfsydney/symposion_app_dev:$CI_COMMIT_SHA asia.gcr.io/linuxconfsydney/symposion_app_dev:latest - - docker push asia.gcr.io/linuxconfsydney/symposion_app:latest - - docker push asia.gcr.io/linuxconfsydney/symposion_app_dev:latest - only: - - master - -k8s-prod-deploy: - image: google/cloud-sdk - stage: deploy - script: - - echo "$GOOGLE_KEY" > key.json - - gcloud auth activate-service-account --key-file key.json - - gcloud config set compute/zone australia-southeast1-b - - gcloud config set project linuxconfsydney - - gcloud config set container/use_client_certificate True - - gcloud container clusters get-credentials lca02 - - kubectl --namespace=rego-prod set image deployment/symposion-app symposion-app=asia.gcr.io/linuxconfsydney/symposion_app:$CI_COMMIT_SHA - when: manual - only: - - master - environment: - name: 2019/prod - url: https://rego.linux.conf.au - -build_review_deployment: - image: docker:git - 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}" --tla-str sha="${CI_COMMIT_SHA}" -m /src + - apk update && apk add git + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker build --pull -f docker/Dockerfile -t $CONTAINER_IMAGE . + - docker push $CONTAINER_IMAGE only: - - /^dev\/.*$/ - artifacts: - paths: - - k8s/deployment.json - - k8s/ingress.json - - k8s/certificate.json - -build_2020_image: - image: docker:git - stage: build - services: - - docker:dind - script: - - docker login -u _json_key -p "$GOOGLE_KEY" https://asia.gcr.io - - docker pull "${CONTAINER_IMAGE_2020}":latest || true - - docker build --cache-from "${CONTAINER_IMAGE_2020}":latest -f docker/Dockerfile -t "${CONTAINER_IMAGE_2020}":$CI_COMMIT_SHA . - - docker push "${CONTAINER_IMAGE_2020}":$CI_COMMIT_SHA - - docker build --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA -f docker/Dockerfile.dev -t "${CONTAINER_IMAGE_2020}"_dev:$CI_COMMIT_SHA . - - docker push "${CONTAINER_IMAGE_2020}"_dev:$CI_COMMIT_SHA - - docker tag "${CONTAINER_IMAGE_2020}"_dev:$CI_COMMIT_SHA "${CONTAINER_IMAGE_2020}"_dev:$CI_COMMIT_REF_SLUG - - docker push "${CONTAINER_IMAGE_2020}"_dev:$CI_COMMIT_REF_SLUG - except: - "2020" - - "master" - -2020-prod-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=lca2020-prod --user=gitlab-ci - - kubectl config use-context cluster - - kubectl --token "${GL_KUBE_TOKEN}" set image deployment/symposion-app symposion-app="${CONTAINER_IMAGE_2020}":$CI_COMMIT_SHA - only: - - "2020" - when: manual - environment: - name: 2020/prod - url: https://lca2020.linux.conf.au - - -2019-prod-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=lca2019-prod --user=gitlab-ci - - kubectl config use-context cluster - - kubectl --token "${GL_KUBE_TOKEN}" set image deployment/symposion-app symposion-app="${CONTAINER_IMAGE_2019}":$CI_COMMIT_SHA - only: - - "2019" - when: manual - environment: - name: 2019/prod - url: https://2019.linux.conf.au - -2020_dev-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}" set image deployment/symposion-app symposion-app="${CONTAINER_IMAGE_2020}"_dev:$CI_COMMIT_SHA - only: - - dev/2020 - environment: - name: 2020/dev - url: https://2020-dev.lca2019.org - -2019_dev-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}" set image deployment/symposion-app symposion-app="${CONTAINER_IMAGE_2019}"_dev:$CI_COMMIT_SHA - only: - - dev/2019 - environment: - name: 2019/dev - url: https://dev.lca2019.org - -2019_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-review --user=rego-dev/gitlab-sa - - kubectl config use-context cluster - - kubectl --token "${GL_KUBE_TOKEN}" apply -f k8s/deployment.json - - kubectl --token "${GL_KUBE_TOKEN}" apply -f k8s/ingress.json - - kubectl --token "${GL_KUBE_TOKEN}" apply -f k8s/certificate.json - - only: - - /^dev\/.*$/ - environment: - name: 2019/dev/${CI_COMMIT_REF_SLUG} - url: https://${CI_COMMIT_REF_SLUG}.dev.lca2019.org - on_stop: 2019_review-stop-deploy - -2019_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-review --user=rego-dev/gitlab-sa - - kubectl config use-context cluster - - kubectl --token "${GL_KUBE_TOKEN}" delete -f k8s/deployment.json - - kubectl --token "${GL_KUBE_TOKEN}" delete -f k8s/ingress.json - - kubectl --token "${GL_KUBE_TOKEN}" delete -f k8s/certificate.json - only: - - /^dev\/.*$/ - when: manual - environment: - name: 2019/dev/${CI_COMMIT_REF_SLUG} - url: https://${CI_COMMIT_REF_SLUG}.dev.lca2019.org - action: stop - -2020_staging-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=lca2020-staging --user=gitlab-ci - - kubectl config use-context cluster - - kubectl --token "${GL_KUBE_TOKEN}" set image deployment/symposion-app symposion-app="${CONTAINER_IMAGE_2020}"_dev:$CI_COMMIT_SHA - when: manual - only: - - dev/2020 - environment: - name: 2020/staging - url: https://staging2020.lca2019.org - -2019_staging-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=lca2019-staging --user=gitlab-ci - - kubectl config use-context cluster - - kubectl --token "${GL_KUBE_TOKEN}" set image deployment/symposion-app symposion-app="${CONTAINER_IMAGE_2019}"_dev:$CI_COMMIT_SHA - when: manual - only: - - dev/2019 - environment: - name: 2019/staging - url: https://staging.lca2019.org .docs_template: &sphinx image: alpine script: - - apk --no-cache add py2-pip python-dev make + - apk --no-cache add py3-pip python3-dev make - pip install sphinx - cd docs - make html @@ -218,15 +32,6 @@ build_2020_image: paths: - public -pages: - <<: *sphinx - only: - - master - - "2019" - environment: - name: docs - url: https://laconfdev.gitlab.io/symposion_app/ - -build_sphinx: +build-sphinx: <<: *sphinx stage: build