fix(*): allow local docker registry

This fix supersedes #323. It applies basically the same fixes:

- local docker registries are now supported
- kubectl is not downloaded on every build

Also, added a fix for the case where `docker version` failed because the
Docker daemon crashed, and consequently spuriously propmted the user to
re-install docker.

I added support for $DOCKER_PROJECT instead of just $PROJECT because the
later is a little too generic for a shell env var. We can deprecate
$PROJECT later.

I did not add back in the better tool checks in bootstrap because
CircleCI doesn't have the `command` command.
pull/339/head
Matt Butcher 9 years ago
parent 22ca11c966
commit 7c82304b7f

2
.gitignore vendored

@ -4,7 +4,9 @@
/vendor/* /vendor/*
/rootfs/manager/bin/manager /rootfs/manager/bin/manager
/rootfs/manager/bin/kubectl /rootfs/manager/bin/kubectl
/rootfs/manager/bin/v1.*
/rootfs/resourcifier/bin/resourcifier /rootfs/resourcifier/bin/resourcifier
/rootfs/resourcifier/bin/kubectl /rootfs/resourcifier/bin/kubectl
/rootfs/resourcifier/bin/v1.*
/rootfs/expandybird/bin/expandybird /rootfs/expandybird/bin/expandybird
/rootfs/expandybird/opt/expansion /rootfs/expandybird/opt/expansion

@ -15,7 +15,17 @@
# If you update this image please check the tag value before pushing. # If you update this image please check the tag value before pushing.
DOCKER_REGISTRY ?= gcr.io DOCKER_REGISTRY ?= gcr.io
PREFIX := $(DOCKER_REGISTRY)/$(PROJECT)
# Legacy support for $PROJECT
DOCKER_PROJECT ?= $(PROJECT)
# Support both local and remote repos, and support no project.
ifdef $(DOCKER_PROJECT)
PREFIX := $(DOCKER_REGISTRY)/$(DOCKER_PROJECT)
else
PREFIX := $(DOCKER_REGISTRY)
endif
FULL_IMAGE := $(PREFIX)/$(IMAGE) FULL_IMAGE := $(PREFIX)/$(IMAGE)
TAG ?= git-$(shell git rev-parse --short HEAD) TAG ?= git-$(shell git rev-parse --short HEAD)
@ -26,6 +36,7 @@ PLATFORM ?= $(DEFAULT_PLATFORM)
DEFAULT_ARCH := $(shell uname -m) DEFAULT_ARCH := $(shell uname -m)
ARCH ?= $(DEFAULT_ARCH) ARCH ?= $(DEFAULT_ARCH)
.PHONY: info .PHONY: info
info: info:
@echo "Build tag: ${TAG}" @echo "Build tag: ${TAG}"
@ -51,10 +62,12 @@ container: .project .docker binary extras
docker tag -f $(FULL_IMAGE):latest $(FULL_IMAGE):$(TAG) docker tag -f $(FULL_IMAGE):latest $(FULL_IMAGE):$(TAG)
.project: .project:
@if [[ -z "${PROJECT}" ]]; then echo "PROJECT variable must be set"; exit 1; fi ifeq ($(DOCKER_REGISTRY), gcr.io)
$(error "One or both of DOCKER_REGISTRY and DOCKER_PROJECT must be set.")
endif
.docker: .docker:
@if [[ -z `which docker` ]] || ! docker version &> /dev/null; then echo "docker is not installed correctly"; exit 1; fi @if [[ -z `which docker` ]] || ! docker --version &> /dev/null; then echo "docker is not installed correctly"; exit 1; fi
CROSS_IMAGE := $(PLATFORM)-$(ARCH)/$(IMAGE)/$(IMAGE) CROSS_IMAGE := $(PLATFORM)-$(ARCH)/$(IMAGE)/$(IMAGE)
@ -67,3 +80,11 @@ binary:
echo cp ../../bin/$(IMAGE) ./bin ; \ echo cp ../../bin/$(IMAGE) ./bin ; \
cp ../../bin/$(IMAGE) ./bin ; \ cp ../../bin/$(IMAGE) ./bin ; \
fi fi
.PHONY: kubectl
kubectl:
ifeq ("$(wildcard bin/$(KUBE_VERSION))", "")
touch bin/$(KUBE_VERSION)
curl -fsSL -o bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBE_VERSION}/bin/linux/amd64/kubectl
chmod +x bin/kubectl
endif

@ -19,8 +19,3 @@ include ../include.mk
.PHONY: extras .PHONY: extras
extras: kubectl extras: kubectl
.PHONY: kubectl
kubectl:
curl -fsSL -o bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBE_VERSION}/bin/linux/amd64/kubectl
chmod +x bin/kubectl

@ -19,8 +19,3 @@ include ../include.mk
.PHONY: extras .PHONY: extras
extras: kubectl extras: kubectl
.PHONY: kubectl
kubectl:
curl -fsSL -o bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBE_VERSION}/bin/linux/amd64/kubectl
chmod +x bin/kubectl

Loading…
Cancel
Save