deploy

 1#!/bin/bash
 2
 3# Prerequisites:
 4#
 5# - Log in to the DigitalOcean docker registry
 6#   doctl registry login
 7#
 8# - Target the `zed-1` kubernetes cluster
 9#   doctl kubernetes cluster kubeconfig save zed-1
10
11set -eu
12
13if [[ $# < 1 ]]; then
14  echo "Usage: $0 [production|staging|...]"
15  exit 1
16fi
17
18export ZED_KUBE_NAMESPACE=$1
19ENV_FILE="crates/collab/k8s/environments/${ZED_KUBE_NAMESPACE}.sh"
20if [[ ! -f $ENV_FILE ]]; then
21  echo "Invalid environment name '${ZED_KUBE_NAMESPACE}'"
22  exit 1
23fi
24
25if [[ $ZED_KUBE_NAMESPACE == "production" && -n $(git status --short) ]]; then
26  echo "Cannot deploy uncommited changes to production"
27  exit 1
28fi
29
30git_sha=$(git rev-parse HEAD)
31export ZED_IMAGE_ID="registry.digitalocean.com/zed/collab:${ZED_KUBE_NAMESPACE}-${git_sha}"
32export $(cat $ENV_FILE)
33
34docker build . --tag "$ZED_IMAGE_ID"
35docker push "$ZED_IMAGE_ID"
36
37envsubst < crates/collab/k8s/manifest.template.yml | kubectl apply -f -