Continuous Deployment Script (K8s)

?
S
Bash

CD Script for Kubernetes. Using Drone as containerised CD tool.

1#!/bin/sh
2echo "Build Script Running..."
3echo "AWS Check..."
4date
5aws sts get-caller-identity
6aws --version
7
8echo "Kubernetes Checking..."
9kubectl version --short --client
10
11echo ""
12echo "///// DRONE ARGUMENTS RECEIVED"
13echo "DEPLOYMENT: ${APP_NAME}"
14echo "BUILD NUMBER: ${DRONE_BUILD_NUMBER}"
15echo "COMMIT SHA: ${DRONE_COMMIT_SHA}"
16echo "COMMIT SHA: ${DRONE_COMMIT_BRANCH}"
17echo "BUILD STATUS: ${DRONE_BUILD_STATUS}"
18
19echo "Preparing Deployment..."
20DEPLOYMENT_NAME=${APP_NAME}-deployment
21kubectl get deployment ${DEPLOYMENT_NAME}
22
23echo "Updating Deployment Container Image..."
24if [ $DRONE_BRANCH == 'production' ]; then
25  IMAGE=xpto/${APP_NAME}:${DRONE_COMMIT_BRANCH}-${DRONE_COMMIT_SHA}
26  echo "Image Ready" ${IMAGE}
27  kubectl set image deployments/${DEPLOYMENT_NAME} ${APP_NAME}=$IMAGE --record=true
28  kubectl rollout status deployments/${DEPLOYMENT_NAME}
29  echo "Updated"
30  kubectl get deployment ${DEPLOYMENT_NAME}
31  kubectl get pods | grep ${APP_NAME}
32fi
33if [ $DRONE_BRANCH != 'production' ]; then
34  echo "Only Production releases supported for now..."
35fi

Created on 8/9/2018