From ccc99cd50eb84aefd8cde9d71b4537e0e7e8daef Mon Sep 17 00:00:00 2001 From: Xavier Lange Date: Wed, 4 May 2016 15:15:53 -0700 Subject: [PATCH] Beefed up .travis.yml so we can get automatic builds. --- .travis.yml | 5 ++++- docker/Dockerfile.travis | 5 +++++ docker/TRAVIS_README.md | 25 +++++++++++++++++++++++++ docker/release_travis.sh | 27 +++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 docker/Dockerfile.travis create mode 100644 docker/TRAVIS_README.md create mode 100755 docker/release_travis.sh diff --git a/.travis.yml b/.travis.yml index c29d31c26..fb5539ada 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,13 +6,16 @@ notifications: irc: channels: - "irc.mozilla.org#heka" +services: + - docker addons: apt: packages: - protobuf-compiler - cmake - libgeoip-dev + - debhelper install: - . build.sh script: - - make test + - make test && make deb && ./../docker/release_travis.sh diff --git a/docker/Dockerfile.travis b/docker/Dockerfile.travis new file mode 100644 index 000000000..58f182a07 --- /dev/null +++ b/docker/Dockerfile.travis @@ -0,0 +1,5 @@ +FROM debian:jessie +MAINTAINER Xavier Lange (@tureus) + +ADD heka.deb /tmp/heka.deb +RUN apt-get update && apt-get install -y libgeoip1 && dpkg -i /tmp/heka.deb && rm /tmp/heka.deb diff --git a/docker/TRAVIS_README.md b/docker/TRAVIS_README.md new file mode 100644 index 000000000..95780c361 --- /dev/null +++ b/docker/TRAVIS_README.md @@ -0,0 +1,25 @@ +TRAVIS README +==== + +[Travis CI](https://travis-ci.org) is used to run the heka test suite on every push and pull request to github. Those travis runs end with a docker build and push to the semi-official docker repository. + +Travis Setup +--- + +The docker build relies on environmental variables being set for login. Here they are, in case you'd like to auto build heka for your fork. You'll need to install the travis command line tool and inject some docker variables: + +``` +gem install travis +travis login --org +travis env set DOCKER_EMAIL $YOUR_DOCKER_ACCT_EMAIL +travis env set DOCKER_USERNAME $YOUR_DOCKER_ACCT_USERNAME +travis env set DOCKER_PASSWORD $YOUR_DOCKER_ACCT_PASSWD +travis env set --public DOCKER_REPO_SLUG xrlx/heka +``` + +These values are used by the `docker/release_travis.sh`. The unit tests must pass for the docker image to be built. + +Docker Images +--- + +The `$DOCKER_REPO_SLUG` is used to craft the `docker push $DOCKER_REPO_SLUG:$TAG`. The `$TAG` is determined using a git tag, if that's what kicked off travis, or more like the git branch which received a push. Pull requests will not generate image builds. \ No newline at end of file diff --git a/docker/release_travis.sh b/docker/release_travis.sh new file mode 100755 index 000000000..a0b853736 --- /dev/null +++ b/docker/release_travis.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set -ex + +if [[ $DOCKER_REPO_SLUG == "" ]]; then + echo "must set DOCKER_REPO_SLUG ENV var" + exit 1 +fi + +if [[ $TRAVIS_TAG != "" ]]; then + DOCKER_TAG=$TRAVIS_TAG +elif [[ $TRAVIS_BRANCH != "" ]]; then + DOCKER_TAG=$TRAVIS_BRANCH +else + echo "Skipping docker build because this is a pull request (${TRAVIS_PULL_REQUEST})" + exit 0 +fi + +IMAGE="${DOCKER_REPO_SLUG}:${TRAVIS_BRANCH}" + +cd $TRAVIS_BUILD_DIR +mkdir /tmp/heka +find . -name "*.deb" -exec cp {} /tmp/heka/heka.deb \; +cp docker/Dockerfile.travis /tmp/heka/Dockerfile + +docker build -t $IMAGE /tmp/heka +docker login -e="$DOCKER_EMAIL" -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" +docker push $IMAGE \ No newline at end of file