From 98395bb59521aa04ebbd6511d06178f5f13e6a94 Mon Sep 17 00:00:00 2001 From: Alfonso Acosta Date: Mon, 27 Feb 2017 17:49:26 +0100 Subject: [PATCH] Create cloud agent image (#2284) * Create cloud-agent image * Refactor Makefile * Push the image from CircleCI and releases * Review feedback * Review feedback * Review feedback --- .gitignore | 1 + Makefile | 23 +++++++++++++++-------- bin/release | 21 +++++++++++++-------- circle.yml | 15 ++++++++++----- docker/Dockerfile | 14 -------------- docker/Dockerfile.cloud-agent | 10 ++++++++++ docker/Dockerfile.scope | 9 +++++++++ 7 files changed, 58 insertions(+), 35 deletions(-) delete mode 100644 docker/Dockerfile create mode 100644 docker/Dockerfile.cloud-agent create mode 100644 docker/Dockerfile.scope diff --git a/.gitignore b/.gitignore index 99d23c77a..3eabc36b6 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ tags .*.uptodate .uptodate scope.tar +cloud-agent.tar .pkg prog/scope docker/scope diff --git a/Makefile b/Makefile index 6b7e22420..c371c333b 100644 --- a/Makefile +++ b/Makefile @@ -4,8 +4,8 @@ SUDO=$(shell docker info >/dev/null 2>&1 || echo "sudo -E") DOCKERHUB_USER=weaveworks SCOPE_EXE=prog/scope -SCOPE_IMAGE=$(DOCKERHUB_USER)/scope SCOPE_EXPORT=scope.tar +CLOUD_AGENT_EXPORT=cloud-agent.tar SCOPE_UI_BUILD_IMAGE=$(DOCKERHUB_USER)/scope-ui-build SCOPE_UI_BUILD_UPTODATE=.scope_ui_build.uptodate SCOPE_BACKEND_BUILD_IMAGE=$(DOCKERHUB_USER)/scope-backend-build @@ -46,13 +46,20 @@ docker/weaveutil: $(SUDO) docker run --rm --entrypoint=cat weaveworks/weaveexec:$(WEAVENET_VERSION) /usr/bin/weaveutil > $@ chmod +x $@ -$(SCOPE_EXPORT): $(SCOPE_EXE) $(DOCKER_DISTRIB) docker/weave docker/weaveutil $(RUNSVINIT) docker/Dockerfile docker/demo.json docker/run-app docker/run-probe docker/entrypoint.sh - cp $(SCOPE_EXE) $(RUNSVINIT) docker/ - cp $(DOCKER_DISTRIB) docker/docker.tgz - tar -xvzf docker/docker.tgz docker/docker - $(SUDO) docker build -t $(SCOPE_IMAGE) docker/ - $(SUDO) docker tag $(SCOPE_IMAGE) $(SCOPE_IMAGE):$(IMAGE_TAG) - $(SUDO) docker save $(SCOPE_IMAGE):latest > $@ +docker/%: % + cp $* docker/ + +docker/docker: $(DOCKER_DISTRIB) + tar -xvzf $(DOCKER_DISTRIB) docker/docker + +%.tar: docker/Dockerfile.% + $(SUDO) docker build -t $(DOCKERHUB_USER)/$* -f $< docker/ + $(SUDO) docker tag $(DOCKERHUB_USER)/$* $(DOCKERHUB_USER)/$*:$(IMAGE_TAG) + $(SUDO) docker save $(DOCKERHUB_USER)/$*:latest > $@ + +$(CLOUD_AGENT_EXPORT): docker/Dockerfile.cloud-agent docker/$(SCOPE_EXE) docker/docker docker/weave docker/weaveutil + +$(SCOPE_EXPORT): docker/Dockerfile.scope $(CLOUD_AGENT_EXPORT) docker/$(RUNSVINIT) docker/demo.json docker/run-app docker/run-probe docker/entrypoint.sh $(RUNSVINIT): vendor/runsvinit/*.go diff --git a/bin/release b/bin/release index ce50d2875..4dafc4b07 100755 --- a/bin/release +++ b/bin/release @@ -161,15 +161,18 @@ draft() { } publish() { + local IMAGES="scope cloud-agent" setup cd "$PWD"/"$RELEASE_DIR" if [ "$RELEASE_TYPE" = 'PRERELEASE' ]; then echo "== Tagging and pushing images on docker hub as user $DOCKERHUB_USER" - $SUDO docker tag "$DOCKERHUB_USER"/scope "$DOCKERHUB_USER/scope:$VERSION" - $SUDO docker push "$DOCKERHUB_USER/scope:$VERSION" - $SUDO docker tag "$DOCKERHUB_USER/scope:$VERSION" "$DOCKERHUB_USER/scope:latest_release" - $SUDO docker push "$DOCKERHUB_USER/scope:latest_release" + for IMAGE in $IMAGES; do + $SUDO docker tag "$DOCKERHUB_USER/$IMAGE" "$DOCKERHUB_USER/$IMAGE:$VERSION" + $SUDO docker push "$DOCKERHUB_USER/$IMAGE:$VERSION" + $SUDO docker tag "$DOCKERHUB_USER/$IMAGE:$VERSION" "$DOCKERHUB_USER/$IMAGE:latest_release" + $SUDO docker push "$DOCKERHUB_USER/$IMAGE:latest_release" + done echo "** Docker images tagged and pushed" echo "== Publishing pre-release on GitHub" @@ -201,10 +204,12 @@ publish() { echo '** Sanity checks OK for publishing tag' "$LATEST_TAG" as "$DOCKERHUB_USER/scope:$VERSION" echo "== Tagging and pushing images on docker hub as user $DOCKERHUB_USER" - $SUDO docker tag "$DOCKERHUB_USER"/scope "$DOCKERHUB_USER/scope:$VERSION" - $SUDO docker push "$DOCKERHUB_USER/scope:$VERSION" - $SUDO docker tag "$DOCKERHUB_USER/scope:$VERSION" "$DOCKERHUB_USER/scope:latest_release" - $SUDO docker push "$DOCKERHUB_USER/scope:latest_release" + for IMAGE in $IMAGES; do + $SUDO docker tag "$DOCKERHUB_USER/$IMAGE" "$DOCKERHUB_USER/$IMAGE:$VERSION" + $SUDO docker push "$DOCKERHUB_USER/$IMAGE:$VERSION" + $SUDO docker tag "$DOCKERHUB_USER/$IMAGE:$VERSION" "$DOCKERHUB_USER/$IMAGE:latest_release" + $SUDO docker push "$DOCKERHUB_USER/$IMAGE:latest_release" + done echo "** Docker images tagged and pushed" echo "== Publishing release on GitHub" diff --git a/circle.yml b/circle.yml index fc86c5be9..302ad7644 100644 --- a/circle.yml +++ b/circle.yml @@ -14,6 +14,7 @@ machine: PATH: $PATH:$HOME/.local/bin CLOUDSDK_CORE_DISABLE_PROMPTS: 1 SCOPE_UI_BUILD: $HOME/docker/scope_ui_build.tar + IMAGES: scope cloud-agent dependencies: pre: @@ -75,12 +76,16 @@ deployment: - | test -z "${DOCKER_USER}" || ( docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS && - (test "${DOCKER_ORGANIZATION:-$DOCKER_USER}" == "weaveworks" || ( - docker tag weaveworks/scope:latest ${DOCKER_ORGANIZATION:-$DOCKER_USER}/scope:latest && - docker tag weaveworks/scope:$(./tools/image-tag) ${DOCKER_ORGANIZATION:-$DOCKER_USER}/scope:$(./tools/image-tag) + (test "${DOCKER_ORGANIZATION:-$DOCKER_USER}" != "weaveworks" && ( + for IMAGE in $IMAGES; do + docker tag weaveworks/$IMAGE:latest ${DOCKER_ORGANIZATION:-$DOCKER_USER}/$IMAGE:latest && + docker tag weaveworks/$IMAGE:$(./tools/image-tag) ${DOCKER_ORGANIZATION:-$DOCKER_USER}/$IMAGE:$(./tools/image-tag) + done )) && - docker push ${DOCKER_ORGANIZATION:-$DOCKER_USER}/scope && - docker push ${DOCKER_ORGANIZATION:-$DOCKER_USER}/scope:$(./tools/image-tag) && + for IMAGE in $IMAGES; do + docker push ${DOCKER_ORGANIZATION:-$DOCKER_USER}/$IMAGE && + docker push ${DOCKER_ORGANIZATION:-$DOCKER_USER}/$IMAGE:$(./tools/image-tag) + done (test -z "${UI_BUCKET_KEY_ID}" || (cd $SRCDIR && make ui-upload && make ui-build-pkg)) ) - | diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index c12dda820..000000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM alpine:3.5 -MAINTAINER Weaveworks Inc -LABEL works.weave.role=system -WORKDIR /home/weave -RUN apk add --update bash runit conntrack-tools iproute2 util-linux curl && \ - rm -rf /var/cache/apk/* -ADD ./docker /usr/local/bin/ -ADD ./demo.json / -ADD ./weave ./weaveutil /usr/bin/ -COPY ./scope ./runsvinit ./entrypoint.sh /home/weave/ -COPY ./run-app /etc/service/app/run -COPY ./run-probe /etc/service/probe/run -EXPOSE 4040 -ENTRYPOINT ["/home/weave/entrypoint.sh"] diff --git a/docker/Dockerfile.cloud-agent b/docker/Dockerfile.cloud-agent new file mode 100644 index 000000000..4f5156973 --- /dev/null +++ b/docker/Dockerfile.cloud-agent @@ -0,0 +1,10 @@ +FROM alpine:3.5 +MAINTAINER Weaveworks Inc +LABEL works.weave.role=system +WORKDIR /home/weave +RUN apk add --update bash conntrack-tools iproute2 util-linux curl && \ + rm -rf /var/cache/apk/* +ADD ./docker /usr/local/bin/ +ADD ./weave ./weaveutil /usr/bin/ +COPY ./scope /home/weave/ +ENTRYPOINT ["/home/weave/scope", "--mode=probe", "--probe-only", "--probe.docker=true"] diff --git a/docker/Dockerfile.scope b/docker/Dockerfile.scope new file mode 100644 index 000000000..59657860d --- /dev/null +++ b/docker/Dockerfile.scope @@ -0,0 +1,9 @@ +FROM weaveworks/cloud-agent +RUN apk add --update runit && \ + rm -rf /var/cache/apk/* +ADD ./demo.json / +COPY ./runsvinit ./entrypoint.sh /home/weave/ +COPY ./run-app /etc/service/app/run +COPY ./run-probe /etc/service/probe/run +EXPOSE 4040 +ENTRYPOINT ["/home/weave/entrypoint.sh"]