#!/bin/bash # OpenShift server host OSHOST=localhost # OpenShift binary openshift="../../_output/go/bin/openshift" # OPTIONAL: Wipe out previous OpenShift/k8s deployment information for a # clean start. rm -rf openshift.local.etcd # OPTIONAL: kill all Docker containers before starting # docker kill `docker ps --no-trunc -q` # Start the OpenShift all-in-one server # (starts a kubernetes master and minion as well as providing the origin REST api) echo "Launching openshift all-in-one server" $openshift start --listenAddr="0.0.0.0:8080" &> logs/openshift.log & sleep 5 # Deploy the private Docker registry config $openshift kube apply -c registry_config/registry_config.json # Wait for the app container to start up rc=1 while [ ! $rc -eq 0 ] do echo "Waiting for Docker registry pod to start..." $openshift kube list pods sleep 5 $openshift kube list pods | grep registryPod | grep Running rc=$? done $openshift kube list services | grep frontend rc=$? while [ ! $rc -eq 0 ] do echo "Waiting for Docker registry service to start..." $openshift kube list services sleep 5 $openshift kube list services | grep registryPod rc=$? done # show build cfgs echo "Initially no build configurations:" $openshift kube list buildConfigs # define a build cfg echo "Defining a new build configuration" $openshift kube create buildConfigs -c buildcfg/buildcfg.json # show build cfgs echo "Build configuration defined:" $openshift kube list buildConfigs #show no build running echo "Initially no builds running:" $openshift kube list builds #Requesting new build echo "Triggering new build" curl -s -A "GitHub-Hookshot/github" -H "Content-Type:application/json" -H "X-Github-Event:push" -d @buildinvoke/pushevent.json http://$OSHOST:8080/osapi/v1beta1/buildConfigHooks/build100/secret101/github #show build running echo "Build now running: " $openshift kube list builds id=`$openshift kube list builds | grep new | awk '{print $1}'` $openshift kube get builds/$id | grep complete rc=$? while [ ! $rc -eq 0 ] do echo "Waiting for build to complete..." $openshift kube get builds/$id sleep 5 $openshift kube get builds/$id | grep complete rc=$? done # Convert template to config echo "Submitting application template json for processing..." $openshift kube process -c template/template.json | $openshift kube -h http://$OSHOST:8080 apply -c - # Wait for the app container to start up rc=1 while [ ! $rc -eq 0 ] do echo "Waiting for frontend pod to start..." $openshift kube list pods sleep 5 $openshift kube list pods | grep frontend | grep Running rc=$? done $openshift kube list services | grep frontend rc=$? while [ ! $rc -eq 0 ] do echo "Waiting for frontend service to start..." $openshift kube list services sleep 5 $openshift kube list services | grep frontend rc=$? done # Sometimes the app isn't quite available even though the pod is running, # wait a little longer. sleep 20 # Confirm the app is running/responsive. echo "Frontend is available, sending request. Frontend says:" curl localhost:5432