Makefile target for cross building all the supported archs

This commit is contained in:
Manjunath A Kumatagi 2017-05-22 08:14:18 -04:00
parent b6d11caef3
commit 5ce45a1e7d
2 changed files with 40 additions and 10 deletions

View file

@ -12,12 +12,12 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
all: push
# 0.0.0 shouldn't clobber any released builds # 0.0.0 shouldn't clobber any released builds
TAG = 0.17 TAG = 0.17
REGISTRY = gcr.io/google_containers REGISTRY = gcr.io/google_containers
ARCH ?= $(shell go env GOARCH) ARCH ?= $(shell go env GOARCH)
ALL_ARCH = amd64 arm ppc64le
QEMUVERSION=v2.7.0 QEMUVERSION=v2.7.0
IMGNAME = nginx-slim IMGNAME = nginx-slim
@ -43,7 +43,21 @@ endif
TEMP_DIR := $(shell mktemp -d) TEMP_DIR := $(shell mktemp -d)
container: all: all-container
sub-container-%:
$(MAKE) ARCH=$* container
sub-push-%:
$(MAKE) ARCH=$* push
all-container: $(addprefix sub-container-,$(ALL_ARCH))
all-push: $(addprefix sub-push-,$(ALL_ARCH))
container: .container-$(ARCH)
.container-$(ARCH):
cp ./* $(TEMP_DIR) cp ./* $(TEMP_DIR)
cd $(TEMP_DIR) && sed -i 's|BASEIMAGE|$(BASEIMAGE)|g' Dockerfile cd $(TEMP_DIR) && sed -i 's|BASEIMAGE|$(BASEIMAGE)|g' Dockerfile
cd $(TEMP_DIR) && sed -i "s|ARCH|$(QEMUARCH)|g" Dockerfile cd $(TEMP_DIR) && sed -i "s|ARCH|$(QEMUARCH)|g" Dockerfile
@ -66,11 +80,13 @@ ifeq ($(ARCH), amd64)
docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG)
endif endif
push: container push: .push-$(ARCH)
.push-$(ARCH): .container-$(ARCH)
gcloud docker -- push $(MULTI_ARCH_IMG):$(TAG) gcloud docker -- push $(MULTI_ARCH_IMG):$(TAG)
ifeq ($(ARCH), amd64) ifeq ($(ARCH), amd64)
gcloud docker -- push $(IMAGE):$(TAG) gcloud docker -- push $(IMAGE):$(TAG)
endif endif
clean: clean: $(addprefix sub-clean-,$(ALL_ARCH))
docker rmi -f $(PREFIX):$(TAG) || true sub-clean-%:
docker rmi -f $(IMAGE)-$*:$(TAG) || true

View file

@ -12,11 +12,11 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
all: push
TAG ?= 0.10 TAG ?= 0.10
REGISTRY = gcr.io/google_containers REGISTRY = gcr.io/google_containers
ARCH ?= $(shell go env GOARCH) ARCH ?= $(shell go env GOARCH)
ALL_ARCH = amd64 arm arm64 ppc64le
QEMUVERSION=v2.7.0 QEMUVERSION=v2.7.0
IMGNAME = ubuntu-slim IMGNAME = ubuntu-slim
@ -52,7 +52,20 @@ endif
TEMP_DIR := $(shell mktemp -d) TEMP_DIR := $(shell mktemp -d)
container: clean all: all-container
sub-container-%:
$(MAKE) ARCH=$* container
sub-push-%:
$(MAKE) ARCH=$* push
all-container: $(addprefix sub-container-,$(ALL_ARCH))
all-push: $(addprefix sub-push-,$(ALL_ARCH))
container: .container-$(ARCH)
.container-$(ARCH): clean
cp ./* $(TEMP_DIR) cp ./* $(TEMP_DIR)
cd $(TEMP_DIR) && sed -i 's|BASEIMAGE|$(BASEIMAGE)|g' Dockerfile.build cd $(TEMP_DIR) && sed -i 's|BASEIMAGE|$(BASEIMAGE)|g' Dockerfile.build
cd $(TEMP_DIR) && sed -i "s|ARCH|$(QEMUARCH)|g" Dockerfile.build cd $(TEMP_DIR) && sed -i "s|ARCH|$(QEMUARCH)|g" Dockerfile.build
@ -79,7 +92,8 @@ ifeq ($(ARCH), amd64)
docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG)
endif endif
push: container push: .push-$(ARCH)
.push-$(ARCH): .container-$(ARCH)
$(PUSH_TOOL) docker -- push $(MULTI_ARCH_IMG):$(TAG) $(PUSH_TOOL) docker -- push $(MULTI_ARCH_IMG):$(TAG)
ifeq ($(ARCH),amd64) ifeq ($(ARCH),amd64)