Files @ 6a18824aa354
Branch filter:

Location: symposion_app/.gitlab-ci.yml

Tobias Schulmann
Link fixes on static pages
variables:
  CONTAINER_IMAGE_2019: "asia.gcr.io/linuxconfsydney/symposion_app_2019"
  DOCKER_DRIVER: overlay2

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
  artifacts:
    paths:
    - k8s/deployment.json
    - k8s/ingress-patch.json
    - k8s/certificate-patch.json

build_2019_dev_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_2019}"_dev:latest || true
    - docker build --cache-from "${CONTAINER_IMAGE_2019}"_dev:latest -f docker/Dockerfile -t "${CONTAINER_IMAGE_2019}":$CI_COMMIT_SHA .
    - docker build --build-arg CI_COMMIT_SHA=$CI_COMMIT_SHA -f docker/Dockerfile.dev -t "${CONTAINER_IMAGE_2019}"_dev:$CI_COMMIT_SHA .
    - docker push "${CONTAINER_IMAGE_2019}":$CI_COMMIT_SHA
    - docker push "${CONTAINER_IMAGE_2019}"_dev:$CI_COMMIT_SHA
    - docker tag "${CONTAINER_IMAGE_2019}"_dev:$CI_COMMIT_SHA "${CONTAINER_IMAGE_2019}"_dev:$CI_COMMIT_REF_SLUG
    - docker push "${CONTAINER_IMAGE_2019}"_dev:$CI_COMMIT_REF_SLUG
  except:
    - master

k8s-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

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-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}" describe ingress | grep "${CI_COMMIT_REF_SLUG}" || kubectl --token "${GL_KUBE_TOKEN}" patch ingress symposion-app-ingress -p "$(cat k8s/ingress-patch.json)" --type json
  - kubectl --token "${GL_KUBE_TOKEN}" describe certificate | grep "${CI_COMMIT_REF_SLUG}" || kubectl --token "${GL_KUBE_TOKEN}" patch certificate dev-lca2019-org -p "$(cat k8s/certificate-patch.json)" --type 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-review --user=rego-dev/gitlab-sa
  - kubectl config use-context cluster
  - kubectl --token "${GL_KUBE_TOKEN}" delete -f k8s/deployment.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
  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
  - pip install sphinx
  - cd docs
  - make html
  - cd ..
  - mv docs/_build/html public
  artifacts:
    paths:
    - public

pages:
  <<: *sphinx
  only:
  - master
  environment:
    name: docs
    url: https://laconfdev.gitlab.io/symposion_app/

build_sphinx:
  <<: *sphinx
  stage: build