From 2944af93c6f1ae28de18857bfdf9ff54d4d88e9e Mon Sep 17 00:00:00 2001
From: Ryan Sanford <ryansanford@flywheel.io>
Date: Thu, 29 Sep 2016 15:48:22 -0500
Subject: [PATCH] Add dockerhub trigger for master branch and tags

---
 .travis.yml             |  3 +++
 docker/build-trigger.sh | 53 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+)
 create mode 100755 docker/build-trigger.sh

diff --git a/.travis.yml b/.travis.yml
index 18ccf872..4c45ad57 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,3 +13,6 @@ script:
 
 after_success:
   - coveralls
+  # docker/build-trigger.sh contains the rules for when to, and not to trigger
+  - ./docker/build-trigger.sh Tag "${TRAVIS_TAG}" "${BUILD_TRIGGER_URL}"
+  - ./docker/build-trigger.sh Branch "${TRAVIS_BRANCH}" "${BUILD_TRIGGER_URL}"
diff --git a/docker/build-trigger.sh b/docker/build-trigger.sh
new file mode 100755
index 00000000..efd0abdf
--- /dev/null
+++ b/docker/build-trigger.sh
@@ -0,0 +1,53 @@
+#!/usr/bin/env bash
+
+# Triggers an auto-build on dockerhub for the given source control reference.
+#
+# Example usage: ./build-trigger Tag 1.0.0 https://registry.hub.docker.com/u/scitran/reaper/trigger/11111111-2222-3333-4444-abcdefabcdef/
+function Main() {(
+  set -e
+
+  if [ $# -ne 3 ] ; then
+    >&2 echo "Usage: $( basename $0 ) <source-control-ref-type> <source-control-ref-value> <trigger-url>"
+    exit 1
+  fi
+
+  export SOURCE_CONTROL_REF_TYPE="${1}"
+  export SOURCE_CONTROL_REF_NAME="${2}"
+  export TRIGGER_URL="${3}"
+
+
+  if [ -z "${SOURCE_CONTROL_REF_TYPE}" ] ; then
+    >&2 echo "INFO: Source control reference type provided, skipping build trigger."
+    exit 0
+  fi
+
+  if [ -z "${SOURCE_CONTROL_REF_NAME}" ] ; then
+    >&2 echo "INFO: Source control tag name not provided, skipping build trigger."
+    exit 0
+  fi
+
+
+  # Trigger builds if branch is master, or for any tag.
+  EXEC_BUILD_TRIGGER=false
+
+  if [ "${SOURCE_CONTROL_REF_TYPE}" == "Branch" ] && [ "${SOURCE_CONTROL_REF_NAME}" == "master" ] ; then
+    EXEC_BUILD_TRIGGER=true
+  fi
+
+  if ! $EXEC_BUILD_TRIGGER && [ "${SOURCE_CONTROL_REF_TYPE}" == "Tag" ] ; then
+    EXEC_BUILD_TRIGGER=true
+  fi
+
+  if $EXEC_BUILD_TRIGGER ; then
+    TriggerDockerBuild
+    >&2 echo "INFO: A dockerhub build for ${SOURCE_CONTROL_REF_TYPE} '${SOURCE_CONTROL_REF_NAME}' has been triggered."
+  fi
+
+)}
+
+function TriggerDockerBuild() {(
+  TRIGGER_PAYLOAD="{\"source_type\": \"${SOURCE_CONTROL_REF_TYPE}\", \"source_name\": \"${SOURCE_CONTROL_REF_NAME}\"}"
+  curl -H "Content-Type: application/json" --data "${TRIGGER_PAYLOAD}" -X POST "${TRIGGER_URL}"
+)}
+
+Main "$@"
-- 
GitLab