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