diff --git a/build/build.sh b/build/build.sh index 25d3515b..92db534f 100644 --- a/build/build.sh +++ b/build/build.sh @@ -36,11 +36,7 @@ EOF echo "weave:*:::::::" >>/etc/shadow echo "weave ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers - if [ "$1" = "tests" ] ; then - su weave -c "PATH=$PATH make -C $WEAVE_SRC tests" - else - su weave -c "PATH=$PATH make -C $WEAVE_SRC build" - fi + su weave -c "PATH=$PATH make -C $WEAVE_SRC build" else # There are arguments to pass to git-clone mkdir -p ${WEAVE_SRC%/*} diff --git a/circle.yml b/circle.yml index 70117e68..63bcc109 100644 --- a/circle.yml +++ b/circle.yml @@ -12,18 +12,19 @@ machine: SRCDIR: /home/ubuntu/src/github.com/weaveworks/weave PATH: $PATH:$HOME/.local/bin:$HOME/google-cloud-sdk/bin/ CLOUDSDK_CORE_DISABLE_PROMPTS: 1 - WEAVE_BUILD: $HOME/docker/weave-build.tar + WEAVE_TEST: $HOME/docker/weave-test.tar dependencies: cache_directories: - "~/docker" override: - - if [[ -e "$WEAVE_BUILD" ]]; then - docker load -i $WEAVE_BUILD; + - if [[ -e "$WEAVE_TEST" ]]; then + docker load -i $WEAVE_TEST; else docker build -t weaveworks/weave-build build; - mkdir -p $(dirname "$WEAVE_BUILD"); - docker save weaveworks/weave-build >$WEAVE_BUILD; + docker build -t weaveworks/weave-test test/image; + mkdir -p $(dirname "$WEAVE_TEST"); + docker save weaveworks/weave-test >$WEAVE_TEST; fi post: - sudo apt-get update @@ -36,7 +37,7 @@ dependencies: test: override: - - docker run -v /var/run/docker.sock:/run/docker.sock -v /home/ubuntu:/home/go -e COVERDIR=test/coverage -e SLOW=true -e CIRCLECI -e CIRCLE_BUILD_NUM -e CIRCLE_NODE_TOTAL -e CIRCLE_NODE_INDEX weaveworks/weave-build tests: + - docker run -v /home/ubuntu:/home/go -e COVERDIR=test/coverage -e SLOW=true -e CIRCLECI -e CIRCLE_BUILD_NUM -e CIRCLE_NODE_TOTAL -e CIRCLE_NODE_INDEX weaveworks/weave-test: parallel: true - docker run -v /var/run/docker.sock:/run/docker.sock -v /home/ubuntu:/home/go -e COVERAGE=true weaveworks/weave-build: parallel: true diff --git a/test/image/Dockerfile b/test/image/Dockerfile new file mode 100644 index 00000000..c8f62174 --- /dev/null +++ b/test/image/Dockerfile @@ -0,0 +1,3 @@ +FROM weaveworks/weave-build +COPY test.sh / +ENTRYPOINT ["sh", "/test.sh"] diff --git a/test/image/test.sh b/test/image/test.sh new file mode 100644 index 00000000..1b137b24 --- /dev/null +++ b/test/image/test.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -e + +GOPATH=/home/go +export GOPATH + +WEAVE_SRC=$GOPATH/src/github.com/weaveworks/weave + +# Expect that the weave repo will be bind-mounted into $GOPATH +if ! [ -e $WEAVE_SRC ] ; then + cat 2>&1 <:${GOPATH} \\ + weaveworks/weave-test +EOF + exit 1 +fi + +# If we run make directly, any files created on the bind mount +# will have awkward ownership. So we switch to a user with the +# same user and group IDs as source directory. We have to set a +# few things up so that sudo works without complaining later on. +uid=$(stat --format="%u" $WEAVE_SRC) +gid=$(stat --format="%g" $WEAVE_SRC) +echo "weave:x:$uid:$gid::$WEAVE_SRC:/bin/sh" >>/etc/passwd +echo "weave:*:::::::" >>/etc/shadow +echo "weave ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers + +su weave -c "PATH=$PATH make -C $WEAVE_SRC tests" +