Skip to content
This repository has been archived by the owner on May 4, 2023. It is now read-only.

Commit

Permalink
Review travis build
Browse files Browse the repository at this point in the history
  • Loading branch information
crazy-max committed Dec 3, 2018
1 parent 58b5d05 commit 850c750
Show file tree
Hide file tree
Showing 4 changed files with 120 additions and 35 deletions.
1 change: 1 addition & 0 deletions .dockerignore
Expand Up @@ -8,6 +8,7 @@
.editorconfig
.gitignore
.travis.yml
build.sh
CHANGELOG.md
LICENSE
README.md
2 changes: 1 addition & 1 deletion .editorconfig
Expand Up @@ -9,7 +9,7 @@ charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[{Dockerfile,*.sh,docker-compose.yml}]
[{Dockerfile,*.sh,*.yml}]
indent_size = 2

[*.md]
Expand Down
37 changes: 3 additions & 34 deletions .travis.yml
Expand Up @@ -6,52 +6,21 @@ services:
env:
global:
- VERSION=1.8.0
- GITHUB_REPO=crazy-max/docker-firefox-syncserver
- DOCKER_LOGIN=crazymax
- DOCKER_USERNAME=crazymax
- DOCKER_REPONAME=firefox-syncserver
- QUAY_LOGIN=crazymax
- QUAY_USERNAME=crazymax
- QUAY_REPONAME=firefox-syncserver
- MICROBADGER_HOOK=https://hooks.microbadger.com/images/crazymax/firefox-syncserver/-NvKNcgcsK2YQQfReKS9MwRbgkA=
- secure: hUyblTn4mr/Ru6ye3BySAglSemcF5kpyZL+ASlykaT2AifOpUvl1pmVp0ll2VGYqUeImRFzCVbgQhBU4TdOgA4mJz/jwX5dA4n+TibNRgpRFd4xv3dTK6QywdzD+UfYYZbiKAGsFvHcXwUgm6X8e/01hJpURRBE+j4BqlDMG9BWxEKNyo0t5qREEI0Vg9gUcaf5gy4bKLAq5jijZd2FM9Br+RTxtM1qGNaZkqsncqcHsXF6n5TemmkD1w3YOTEuKI+Snrg2Cgk1Jo0fO3xooA9Y6cgKKmtlDjRWETPODgGo9+lpTaDVrGE39QucJsWAYIZzGnRQTCqhAbsIeta4hUhY92ARuv3BXmaAffPUUmrF9cuE0ZgqN1JxAPMCsmwkt6nNlo7yr5+6dC/56E3IJhpMLN7VybE8cPf3cxlsue09lEaNKR/n/mBsQxRe6sDk0UPTO0UTt4LlwguS5Q/fsDNMuu7zKvOnxNzhM+XkqKzrHgqRMW8nJlzDwM56al9+wnQeMizODH+mmkM8DHAEWGadY8RzRFFk0gXlKPajRSMj0A3+g2F/V/kVpSJz/5ApNCvirG3tWsWqKiTEf7cj9UFdTJa/1MbyAi6nB14GoeyCWXlo10VmekmNtAqOc55OyxFWTmpno5ps6NIqhyhXTc/oyqYtY9k2cwetFFLPphpw= # DOCKER_PASSWORD
- secure: Fo/tzqU0ZffljQce3Qn8klpQYQiSdjXKDTGlLfJpy0KaWPhzRb/e62feX/3OFMAiyNqyHoySWGXjkmhVts+yEmq4t77ullO9leHT/NjhRWmL7TnuRRYY5QQPfYF9QM14pZPFyMhVbfLxQ3mfFTFYu/fot+b9cbJd/hqLYRoH3XwR+C8A9VpMYgaZdcfdnatTa6FyTKJKYST1YtAcuNVrarX1R50b8wdIw0fkd8WS3ChABC8v6ZNRNoRZ3HVCMtGbnixQZPRB3As5gridaq0vhfBTgZ8Gdtx/38L6Jn1C/j8gk40AyWQjQoXVpTtLnUklhkVMNn7NmP3AQdRNNLQrqNMldBnnIIUcA30GexqRj35qj+MSnXrlnde/zWcuMQ2TUxwtqahT+kMs6aqKBJggRnEyppAGGpBEUhySRTs67B8rfX+XCz71fwohooiywc2cghmwD/uEcCg5knM4X66HWltnU+6DVdJf0Rm6QnjjLCIDExHd63ivBOCt41Kt9Qq7Hc6ro/oUavUQYYA3A/C44D7eA0Le3MxScLYBu3ygHWPYlragxYNOGgiHICZ7h+bA1qrjPsXEJBIXglgxvaieSq85Zh4TnoBmjregTH1WJPVLbcJHEP7KVF9R8SdAnmtDm0LZ/XzFidei4Wsv26d3uK+VTY2RZyIz3dVKeyiBnp8= # QUAY_PASSWORD
- secure: 1A2zC9qiN5I56OlGhyCfNoqOPf8tRPqUa/Py0t9dO6B7ZIS4izTO97B8c25sql8beUqgGyCtC8zaMBDmEzOoQh8Y+KA/HLGfNyMDtnHYPZczcJ6t7+7/vWzuEhmeNNYz9U4RNKpNbPK6/XXwEIJdmwhToKkNIOo55Wpj6rjAzI9KaaH26rYu92bh+Q3oVqPQDpB3ByCTyZDbj06Fc54PT3ydm8Mi+/ORz/PxfWO6I6EUzDr3cEa8d1fyAsXBvDXTxAvN5WfH85bGxtB3cPa+cc5FRnlO5yAiLj5uqqpqpo6BxNWq8yh5U8jKCT//GrnYYwCvynvvLNo7OEuFi0isnACRIQo6zyLvjvQQGvEtDaI1Yz0uucw+sg+clvbGJoBwBrdbRDyOQoc+hO3JXQ3FC4qas1cy0nRyGqjhVw2UdOuMSpsH4eq+HKnEES4XsOHNjI3Jqb0FuIU6aLf+wrx6vQHv/98aPP0EArGT90GniUMaTplE7j1JJXEpeDv+/yop84tPGodsbBVST60BxV+dMFTE3D3aR3bs/54m9dXRNdt8DEQT5IdDwRxVYj1sDny4rXq8b8Ax5aWoYf6Itf9Oxxw6Sj2aeZU3U/5XAZYyY2wvdfgrdtWpse+rW2kKE93/ne527CtXc5tP9w5+Trqrl8Fc0DqkpT8IMyDlJBbsd04= # GITHUB_TOKEN

before_install:
- sudo apt-get update
- docker --version
- export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
- export DOCKER_TAG=$(if [ "$BRANCH" == "master" ]; then echo "latest"; else echo $BRANCH; fi)
- echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$PR, BRANCH=$BRANCH, DOCKER_TAG=$DOCKER_TAG"

install:
- |
docker build --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
--build-arg VCS_REF=${TRAVIS_COMMIT::8} \
--build-arg VERSION=${VERSION} \
-t docker_build .
before_script:
- docker run -d -e FF_SYNCSERVER_SECRET=5up3rS3kr1t --name $DOCKER_REPONAME docker_build
- sleep 5
- docker logs $DOCKER_REPONAME

script:
- docker ps | grep $DOCKER_REPONAME
- |
test $TRAVIS_PULL_REQUEST = false \
&& echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin \
&& docker tag docker_build $DOCKER_USERNAME/$DOCKER_REPONAME:$DOCKER_TAG \
&& docker tag docker_build $DOCKER_USERNAME/$DOCKER_REPONAME:$VERSION \
&& docker push $DOCKER_USERNAME/$DOCKER_REPONAME \
&& curl -X POST $MICROBADGER_HOOK \
&& echo "$QUAY_PASSWORD" | docker login quay.io --username "$QUAY_USERNAME" --password-stdin \
&& docker tag docker_build quay.io/$DOCKER_USERNAME/$DOCKER_REPONAME:$DOCKER_TAG \
&& docker tag docker_build quay.io/$DOCKER_USERNAME/$DOCKER_REPONAME:$VERSION \
&& docker push quay.io/$QUAY_USERNAME/$QUAY_REPONAME
branches:
except:
- /^[0-9]/
script: ./build.sh

notifications:
webhooks:
Expand Down
115 changes: 115 additions & 0 deletions build.sh
@@ -0,0 +1,115 @@
#!/usr/bin/env bash
set -e

PROJECT=firefox-syncserver
BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
BUILD_TAG=docker_build
VCS_REF=${TRAVIS_COMMIT::8}
RUNNING_TIMEOUT=120
RUNNING_LOG_CHECK="Listening at"

PUSH_LATEST=${PUSH_LATEST:-true}
DOCKER_USERNAME=${DOCKER_USERNAME:="crazymax"}
DOCKER_LOGIN=${DOCKER_LOGIN:="crazymax"}
DOCKER_REPONAME=${DOCKER_REPONAME:="firefox-syncserver"}
QUAY_USERNAME=${QUAY_USERNAME:="crazymax"}
QUAY_LOGIN=${QUAY_LOGIN:="crazymax"}
QUAY_REPONAME=${QUAY_REPONAME:="firefox-syncserver"}

# Check local or travis
BRANCH=${TRAVIS_BRANCH:-local}
if [[ ${TRAVIS_PULL_REQUEST} == "true" ]]; then
BRANCH=${TRAVIS_PULL_REQUEST_BRANCH}
fi
DOCKER_TAG=${BRANCH:-local}
if [[ "$BRANCH" == "master" ]]; then
DOCKER_TAG=latest
elif [[ "$BRANCH" == "local" ]]; then
BUILD_DATE=
VERSION=local
fi

echo "PROJECT=${PROJECT}"
echo "VERSION=${VERSION}"
echo "BUILD_DATE=${BUILD_DATE}"
echo "BUILD_TAG=${BUILD_TAG}"
echo "VCS_REF=${VCS_REF}"
echo "PUSH_LATEST=${PUSH_LATEST}"
echo "DOCKER_LOGIN=${DOCKER_LOGIN}"
echo "DOCKER_USERNAME=${DOCKER_USERNAME}"
echo "DOCKER_REPONAME=${DOCKER_REPONAME}"
echo "QUAY_LOGIN=${QUAY_LOGIN}"
echo "QUAY_USERNAME=${QUAY_USERNAME}"
echo "QUAY_REPONAME=${QUAY_REPONAME}"
echo "TRAVIS_BRANCH=${TRAVIS_BRANCH}"
echo "TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST}"
echo "BRANCH=${BRANCH}"
echo "DOCKER_TAG=${DOCKER_TAG}"
echo

# Build
echo "### Build"
docker build \
--build-arg BUILD_DATE=${BUILD_DATE} \
--build-arg VCS_REF=${VCS_REF} \
--build-arg VERSION=${VERSION} \
-t ${BUILD_TAG} .
echo

echo "### Test"
docker rm -f ${PROJECT} || true
docker run -d -p 5000:5000 \
-e "FF_SYNCSERVER_SECRET=5up3rS3kr1t" \
--name ${PROJECT} ${BUILD_TAG}
echo

echo "### Waiting for ${PROJECT} to be up..."
TIMEOUT=$((SECONDS + RUNNING_TIMEOUT))
while read LOGLINE; do
echo ${LOGLINE}
if [[ "${LOGLINE#*$RUNNING_LOG_CHECK}" != "$LOGLINE" ]]; then
echo "Container up!"
break
fi
if [[ $SECONDS -gt ${TIMEOUT} ]]; then
>&2 echo "ERROR: Failed to run ${PROJECT} container"
docker rm -f ${PROJECT} > /dev/null 2>&1 || true
exit 1
fi
done < <(docker logs -f ${PROJECT})
docker rm -f ${PROJECT} > /dev/null 2>&1 || true
echo

if [ "${VERSION}" == "local" -o "${TRAVIS_PULL_REQUEST}" == "true" ]; then
echo "INFO: This is a PR or a local build, skipping push..."
exit 0
fi
if [[ ! -z ${DOCKER_PASSWORD} ]]; then
echo "### Push to Docker Hub..."
echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_LOGIN" --password-stdin > /dev/null 2>&1
if [ "${DOCKER_TAG}" == "latest" -a "${PUSH_LATEST}" == "true" ]; then
docker tag ${BUILD_TAG} ${DOCKER_USERNAME}/${DOCKER_REPONAME}:${DOCKER_TAG}
fi
if [[ "${VERSION}" != "latest" ]]; then
docker tag ${BUILD_TAG} ${DOCKER_USERNAME}/${DOCKER_REPONAME}:${VERSION}
fi
docker push ${DOCKER_USERNAME}/${DOCKER_REPONAME}
if [[ ! -z ${MICROBADGER_HOOK} ]]; then
echo "Call MicroBadger hook"
curl -X POST ${MICROBADGER_HOOK}
echo
fi
echo
fi
if [[ ! -z ${QUAY_PASSWORD} ]]; then
echo "### Push to Quay..."
echo "$QUAY_PASSWORD" | docker login quay.io --username "$QUAY_LOGIN" --password-stdin > /dev/null 2>&1
if [ "${DOCKER_TAG}" == "latest" -a "${PUSH_LATEST}" == "true" ]; then
docker tag ${BUILD_TAG} quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}:${DOCKER_TAG}
fi
if [[ "${VERSION}" != "latest" ]]; then
docker tag ${BUILD_TAG} quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}:${VERSION}
fi
docker push quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}
echo
fi

0 comments on commit 850c750

Please sign in to comment.