Changeset - aa52f91e3fbb
[Not reviewed]
0 2 0
Joel Addison - 2 years ago 2022-03-23 12:54:46
joel@addison.net.au
Update build for LA k8s

Publish container to GitLab container registry.
Update settings to allow for deployment onto LA k8s.
2 files changed with 17 insertions and 212 deletions:
0 comments (0 inline, 0 general)
.gitlab-ci.yml
Show inline comments
 
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
pinaxcon/settings.py
Show inline comments
...
 
@@ -133,14 +133,14 @@ USE_I18N = True
 
USE_L10N = True
 
USE_TZ = True
 

	
 
MEDIA_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "media")
 
MEDIA_ROOT = os.environ.get("MEDIA_ROOT", os.path.join(PACKAGE_ROOT, "site_media", "media"))
 
MEDIA_URL = "/site_media/media/"
 

	
 
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static/build')
 
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static', 'build')
 
STATIC_URL = '/static/build/'
 

	
 
STATICFILES_DIRS = [
 
    os.path.join(PROJECT_ROOT, 'static/src'),
 
    os.path.join(PROJECT_ROOT, 'static', 'src'),
 
]
 

	
 
STATICFILES_FINDERS = [
...
 
@@ -445,7 +445,7 @@ SAML_CONFIG = {
 
if 'SAML_CONFIG_LOADER' in os.environ:
 
    SAML_CONFIG_LOADER = os.environ.get('SAML_CONFIG_LOADER')
 

	
 
DEFAULT_FILE_STORAGE = 'gapc_storage.storage.GoogleCloudStorage'
 
DEFAULT_FILE_STORAGE = os.environ.get('DEFAULT_FILE_STORAGE', 'gapc_storage.storage.GoogleCloudStorage')
 
GAPC_STORAGE = {
 
    'num_retries': 2,
 
}
0 comments (0 inline, 0 general)