deploy

 1#!/bin/bash
 2
 3# Prerequisites:
 4#
 5# - Log in to the DigitalOcean API, either interactively, by running
 6#   `doctl auth init`, or by setting the `DIGITALOCEAN_ACCESS_TOKEN`
 7#   environment variable.
 8
 9set -eu
10
11if [[ $# < 2 ]]; then
12  echo "Usage: $0 <production|staging|preview> <tag-name>"
13  exit 1
14fi
15export ZED_KUBE_NAMESPACE=$1
16COLLAB_VERSION=$2
17
18ENV_FILE="crates/collab/k8s/environments/${ZED_KUBE_NAMESPACE}.sh"
19if [[ ! -f $ENV_FILE ]]; then
20  echo "Invalid environment name '${ZED_KUBE_NAMESPACE}'"
21  exit 1
22fi
23export $(cat $ENV_FILE)
24
25if [[ ! $COLLAB_VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
26  echo "Invalid version number '$COLLAB_VERSION'"
27  exit 1
28fi
29TAG_NAMES=$(doctl registry repository list-tags collab --no-header --format Tag)
30if ! $(echo "${TAG_NAMES}" | grep -Fqx v${COLLAB_VERSION}); then
31  echo "No such image tag: 'zed/collab:v${COLLAB_VERSION}'"
32  echo "Found tags"
33  echo "${TAG_NAMES}"
34  exit 1
35fi
36export ZED_IMAGE_ID="registry.digitalocean.com/zed/collab:v${COLLAB_VERSION}"
37
38if [[ $(kubectl config current-context 2> /dev/null) != do-nyc1-zed-1 ]]; then
39  doctl kubernetes cluster kubeconfig save zed-1
40fi
41
42envsubst < crates/collab/k8s/manifest.template.yml | kubectl apply -f -