diff --git a/.gitignore b/.gitignore index 875c22e57..f025fd719 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,9 @@ /vendor/* /rootfs/manager/bin/manager /rootfs/manager/bin/kubectl +/rootfs/manager/bin/v1* /rootfs/resourcifier/bin/resourcifier /rootfs/resourcifier/bin/kubectl +/rootfs/resourcifier/bin/v1* /rootfs/expandybird/bin/expandybird /rootfs/expandybird/opt/expansion diff --git a/Makefile b/Makefile index 126856f78..11c7bdf38 100644 --- a/Makefile +++ b/Makefile @@ -77,6 +77,7 @@ HAS_GLIDE := $(shell command -v glide) HAS_GOLINT := $(shell command -v golint) HAS_GOVET := $(shell command -v go tool vet) HAS_GOX := $(shell command -v gox) +HAS_DOCKER := $(shell command -v docker) .PHONY: bootstrap bootstrap: @@ -94,12 +95,19 @@ ifndef HAS_GOX go get -u github.com/mitchellh/gox endif glide install +ifndef HAS_DOCKER + $(warning You must install Docker manually) +endif .PHONY: .project .project: - @if [[ -z "${PROJECT}" ]]; then echo "PROJECT variable must be set"; exit 1; fi + $(info Docker registry: $(PREFIX)) +ifeq ($(PREFIX),gcr.io) + $(error "You must set at least one of the following environment variables: DOCKER_PROJECT, DOCKER_REGISTRY") +endif .PHONY: .docker .docker: - @if [[ -z `which docker` ]] || ! docker version &> /dev/null; then echo "docker is not installed correctly"; exit 1; fi - +ifndef HAS_DOCKER + $(error You must install docker) +endif diff --git a/rootfs/docker.mk b/rootfs/docker.mk new file mode 100644 index 000000000..77c085247 --- /dev/null +++ b/rootfs/docker.mk @@ -0,0 +1,34 @@ +# Copyright 2016 The Kubernetes Authors All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +DOCKER_REGISTRY ?= gcr.io + +# 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 + +TAG ?= git-$(shell git rev-parse --short HEAD) + +ROOT_DIR := $(abspath ./..) +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 diff --git a/rootfs/expandybird/Makefile b/rootfs/expandybird/Makefile index a7baecf58..2630c6224 100644 --- a/rootfs/expandybird/Makefile +++ b/rootfs/expandybird/Makefile @@ -11,8 +11,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -DOCKER_REGISTRY := gcr.io -PREFIX := $(DOCKER_REGISTRY)/$(PROJECT) +include ../docker.mk + IMAGE ?= expandybird TAG ?= git-$(shell git rev-parse --short HEAD) FULL_IMAGE := $(PREFIX)/$(IMAGE) @@ -20,7 +20,7 @@ FULL_IMAGE := $(PREFIX)/$(IMAGE) .PHONY: container container: binary expansion docker build -t $(FULL_IMAGE):latest -f Dockerfile . - docker tag $(FULL_IMAGE):latest $(FULL_IMAGE):$(TAG) + docker tag -f $(FULL_IMAGE):latest $(FULL_IMAGE):$(TAG) .PHONY: push push: container diff --git a/rootfs/manager/Makefile b/rootfs/manager/Makefile index e116a491f..9583dfb3d 100644 --- a/rootfs/manager/Makefile +++ b/rootfs/manager/Makefile @@ -11,8 +11,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -DOCKER_REGISTRY := gcr.io -PREFIX := $(DOCKER_REGISTRY)/$(PROJECT) +include ../docker.mk + IMAGE ?= manager TAG ?= git-$(shell git rev-parse --short HEAD) FULL_IMAGE := $(PREFIX)/$(IMAGE) @@ -22,7 +22,7 @@ KUBE_VERSION ?= v1.1.7 .PHONY: container container: binary kubectl docker build -t $(FULL_IMAGE):latest -f Dockerfile . - docker tag $(FULL_IMAGE):latest $(FULL_IMAGE):$(TAG) + docker tag -f $(FULL_IMAGE):latest $(FULL_IMAGE):$(TAG) .PHONY: push push: container @@ -35,6 +35,3 @@ endif binary: cp ../../bin/linux-amd64/manager ./bin -kubectl: - curl -fsSL -o bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBE_VERSION}/bin/linux/amd64/kubectl - chmod +x bin/kubectl diff --git a/rootfs/resourcifier/Makefile b/rootfs/resourcifier/Makefile index 26a42b2e4..7d377c800 100644 --- a/rootfs/resourcifier/Makefile +++ b/rootfs/resourcifier/Makefile @@ -11,8 +11,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -DOCKER_REGISTRY := gcr.io -PREFIX := $(DOCKER_REGISTRY)/$(PROJECT) +include ../docker.mk + IMAGE ?= resourcifier TAG ?= git-$(shell git rev-parse --short HEAD) FULL_IMAGE := $(PREFIX)/$(IMAGE) @@ -21,8 +21,8 @@ KUBE_VERSION ?= v1.1.7 .PHONY: container container: binary kubectl - docker build -t $(FULL_IMAGE):latest -f Dockerfile . - docker tag $(FULL_IMAGE):latest $(FULL_IMAGE):$(TAG) + docker build -t $(FULL_IMAGE):$(TAG) -f Dockerfile . + docker tag -f $(FULL_IMAGE):$(TAG) $(FULL_IMAGE):latest .PHONY: push push: container @@ -34,7 +34,3 @@ endif binary: cp ../../bin/linux-amd64/resourcifier ./bin - -kubectl: - curl -fsSL -o bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBE_VERSION}/bin/linux/amd64/kubectl - chmod +x bin/kubectl