From d48998e06c42e48677cc34af11de6521a4f8f59a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Molinero=20Fern=C3=A1ndez?= Date: Sun, 3 Nov 2019 16:26:25 +0100 Subject: [PATCH] Updated binfmt targets --- .gitlab-ci.yml | 54 +++++++++++++++---------------- Makefile | 88 +++++++++++++++++++++++++------------------------- 2 files changed, 71 insertions(+), 71 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 512d485..2f1d0c8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -50,20 +50,6 @@ build:images:amd64: paths: - "./dist/" -build:images:arm32v7: - stage: "build:images" - only: - - *regex_version - before_script: - - *cmd_install_build_packages - script: - - "make binfmt-register" - - "make build-arm32v7-image save-arm32v7-image" - artifacts: - expire_in: "1 week" - paths: - - "./dist/" - build:images:arm64v8: stage: "build:images" only: @@ -78,6 +64,20 @@ build:images:arm64v8: paths: - "./dist/" +build:images:arm32v7: + stage: "build:images" + only: + - *regex_version + before_script: + - *cmd_install_build_packages + script: + - "make binfmt-register" + - "make build-arm32v7-image save-arm32v7-image" + artifacts: + expire_in: "1 week" + paths: + - "./dist/" + push:images:amd64: stage: "push:images" dependencies: @@ -90,18 +90,6 @@ push:images:amd64: script: - "make load-amd64-image push-amd64-image" -push:images:arm32v7: - stage: "push:images" - dependencies: - - "build:images:arm32v7" - only: - - *regex_version - before_script: - - *cmd_install_push_packages - - *cmd_docker_login_registry - script: - - "make load-arm32v7-image push-arm32v7-image" - push:images:arm64v8: stage: "push:images" dependencies: @@ -114,12 +102,24 @@ push:images:arm64v8: script: - "make load-arm64v8-image push-arm64v8-image" +push:images:arm32v7: + stage: "push:images" + dependencies: + - "build:images:arm32v7" + only: + - *regex_version + before_script: + - *cmd_install_push_packages + - *cmd_docker_login_registry + script: + - "make load-arm32v7-image push-arm32v7-image" + push:manifests:cross: stage: "push:manifests" dependencies: - "push:images:amd64" - - "push:images:arm32v7" - "push:images:arm64v8" + - "push:images:arm32v7" only: - *regex_version variables: diff --git a/Makefile b/Makefile index 8fabfb0..4920d46 100755 --- a/Makefile +++ b/Makefile @@ -27,12 +27,12 @@ IMAGE_NATIVE_TARBALL := $(DISTDIR)/$(IMAGE_PROJECT).txz IMAGE_AMD64_DOCKERFILE := $(DISTDIR)/Dockerfile.amd64 IMAGE_AMD64_TARBALL := $(DISTDIR)/$(IMAGE_PROJECT).amd64.txz -IMAGE_ARM32V7_DOCKERFILE := $(DISTDIR)/Dockerfile.arm32v7 -IMAGE_ARM32V7_TARBALL := $(DISTDIR)/$(IMAGE_PROJECT).arm32v7.txz - IMAGE_ARM64V8_DOCKERFILE := $(DISTDIR)/Dockerfile.arm64v8 IMAGE_ARM64V8_TARBALL := $(DISTDIR)/$(IMAGE_PROJECT).arm64v8.txz +IMAGE_ARM32V7_DOCKERFILE := $(DISTDIR)/Dockerfile.arm32v7 +IMAGE_ARM32V7_TARBALL := $(DISTDIR)/$(IMAGE_PROJECT).arm32v7.txz + ################################################## ## "all" target ################################################## @@ -59,7 +59,7 @@ $(IMAGE_NATIVE_DOCKERFILE): $(DOCKERFILE_TEMPLATE) --file '$@' ./ .PHONY: build-cross-images -build-cross-images: build-amd64-image build-arm32v7-image build-arm64v8-image +build-cross-images: build-amd64-image build-arm64v8-image build-arm32v7-image .PHONY: build-amd64-image build-amd64-image: $(IMAGE_AMD64_DOCKERFILE) @@ -77,21 +77,6 @@ $(IMAGE_AMD64_DOCKERFILE): $(DOCKERFILE_TEMPLATE) --tag '$(IMAGE_NAME):latest-amd64' \ --file '$@' ./ -.PHONY: build-arm32v7-image -build-arm32v7-image: $(IMAGE_ARM32V7_DOCKERFILE) - -$(IMAGE_ARM32V7_DOCKERFILE): $(DOCKERFILE_TEMPLATE) - mkdir -p '$(DISTDIR)' - '$(M4)' \ - --prefix-builtins \ - -D CROSS_ARCH=arm32v7 \ - -D CROSS_QEMU=/usr/bin/qemu-arm-static \ - '$(DOCKERFILE_TEMPLATE)' | cat --squeeze-blank > '$@' - '$(DOCKER)' build \ - --tag '$(IMAGE_NAME):$(IMAGE_VERSION)-arm32v7' \ - --tag '$(IMAGE_NAME):latest-arm32v7' \ - --file '$@' ./ - .PHONY: build-arm64v8-image build-arm64v8-image: $(IMAGE_ARM64V8_DOCKERFILE) @@ -107,6 +92,21 @@ $(IMAGE_ARM64V8_DOCKERFILE): $(DOCKERFILE_TEMPLATE) --tag '$(IMAGE_NAME):latest-arm64v8' \ --file '$@' ./ +.PHONY: build-arm32v7-image +build-arm32v7-image: $(IMAGE_ARM32V7_DOCKERFILE) + +$(IMAGE_ARM32V7_DOCKERFILE): $(DOCKERFILE_TEMPLATE) + mkdir -p '$(DISTDIR)' + '$(M4)' \ + --prefix-builtins \ + -D CROSS_ARCH=arm32v7 \ + -D CROSS_QEMU=/usr/bin/qemu-arm-static \ + '$(DOCKERFILE_TEMPLATE)' | cat --squeeze-blank > '$@' + '$(DOCKER)' build \ + --tag '$(IMAGE_NAME):$(IMAGE_VERSION)-arm32v7' \ + --tag '$(IMAGE_NAME):latest-arm32v7' \ + --file '$@' ./ + ################################################## ## "save-*" targets ################################################## @@ -122,7 +122,7 @@ $(IMAGE_NATIVE_TARBALL): $(IMAGE_NATIVE_DOCKERFILE) $(call save_image,$(IMAGE_NAME):$(IMAGE_VERSION),$@) .PHONY: save-cross-images -save-cross-images: save-amd64-image save-arm32v7-image save-arm64v8-image +save-cross-images: save-amd64-image save-arm64v8-image save-arm32v7-image .PHONY: save-amd64-image save-amd64-image: $(IMAGE_AMD64_TARBALL) @@ -130,18 +130,18 @@ save-amd64-image: $(IMAGE_AMD64_TARBALL) $(IMAGE_AMD64_TARBALL): $(IMAGE_AMD64_DOCKERFILE) $(call save_image,$(IMAGE_NAME):$(IMAGE_VERSION)-amd64,$@) -.PHONY: save-arm32v7-image -save-arm32v7-image: $(IMAGE_ARM32V7_TARBALL) - -$(IMAGE_ARM32V7_TARBALL): $(IMAGE_ARM32V7_DOCKERFILE) - $(call save_image,$(IMAGE_NAME):$(IMAGE_VERSION)-arm32v7,$@) - .PHONY: save-arm64v8-image save-arm64v8-image: $(IMAGE_ARM64V8_TARBALL) $(IMAGE_ARM64V8_TARBALL): $(IMAGE_ARM64V8_DOCKERFILE) $(call save_image,$(IMAGE_NAME):$(IMAGE_VERSION)-arm64v8,$@) +.PHONY: save-arm32v7-image +save-arm32v7-image: $(IMAGE_ARM32V7_TARBALL) + +$(IMAGE_ARM32V7_TARBALL): $(IMAGE_ARM32V7_DOCKERFILE) + $(call save_image,$(IMAGE_NAME):$(IMAGE_VERSION)-arm32v7,$@) + ################################################## ## "load-*" targets ################################################## @@ -160,23 +160,23 @@ load-native-image: $(call tag_image,$(IMAGE_NAME):$(IMAGE_VERSION),$(IMAGE_NAME):latest) .PHONY: load-cross-images -load-cross-images: load-amd64-image load-arm32v7-image load-arm64v8-image +load-cross-images: load-amd64-image load-arm64v8-image load-arm32v7-image .PHONY: load-amd64-image load-amd64-image: $(call load_image,$(IMAGE_AMD64_TARBALL)) $(call tag_image,$(IMAGE_NAME):$(IMAGE_VERSION)-amd64,$(IMAGE_NAME):latest-amd64) -.PHONY: load-arm32v7-image -load-arm32v7-image: - $(call load_image,$(IMAGE_ARM32V7_TARBALL)) - $(call tag_image,$(IMAGE_NAME):$(IMAGE_VERSION)-arm32v7,$(IMAGE_NAME):latest-arm32v7) - .PHONY: load-arm64v8-image load-arm64v8-image: $(call load_image,$(IMAGE_ARM64V8_TARBALL)) $(call tag_image,$(IMAGE_NAME):$(IMAGE_VERSION)-arm64v8,$(IMAGE_NAME):latest-arm64v8) +.PHONY: load-arm32v7-image +load-arm32v7-image: + $(call load_image,$(IMAGE_ARM32V7_TARBALL)) + $(call tag_image,$(IMAGE_NAME):$(IMAGE_VERSION)-arm32v7,$(IMAGE_NAME):latest-arm32v7) + ################################################## ## "push-*" targets ################################################## @@ -186,10 +186,10 @@ define push_image endef define push_cross_manifest - '$(DOCKER)' manifest create --amend '$(1)' '$(2)-amd64' '$(2)-arm32v7' '$(2)-arm64v8' + '$(DOCKER)' manifest create --amend '$(1)' '$(2)-amd64' '$(2)-arm64v8' '$(2)-arm32v7' '$(DOCKER)' manifest annotate '$(1)' '$(2)-amd64' --os linux --arch amd64 - '$(DOCKER)' manifest annotate '$(1)' '$(2)-arm32v7' --os linux --arch arm --variant v7 '$(DOCKER)' manifest annotate '$(1)' '$(2)-arm64v8' --os linux --arch arm64 --variant v8 + '$(DOCKER)' manifest annotate '$(1)' '$(2)-arm32v7' --os linux --arch arm --variant v7 '$(DOCKER)' manifest push --purge '$(1)' endef @@ -198,23 +198,23 @@ push-native-image: @printf '%s\n' 'Unimplemented' .PHONY: push-cross-images -push-cross-images: push-amd64-image push-arm32v7-image push-arm64v8-image +push-cross-images: push-amd64-image push-arm64v8-image push-arm32v7-image .PHONY: push-amd64-image push-amd64-image: $(call push_image,$(IMAGE_NAME):$(IMAGE_VERSION)-amd64) $(call push_image,$(IMAGE_NAME):latest-amd64) -.PHONY: push-arm32v7-image -push-arm32v7-image: - $(call push_image,$(IMAGE_NAME):$(IMAGE_VERSION)-arm32v7) - $(call push_image,$(IMAGE_NAME):latest-arm32v7) - .PHONY: push-arm64v8-image push-arm64v8-image: $(call push_image,$(IMAGE_NAME):$(IMAGE_VERSION)-arm64v8) $(call push_image,$(IMAGE_NAME):latest-arm64v8) +.PHONY: push-arm32v7-image +push-arm32v7-image: + $(call push_image,$(IMAGE_NAME):$(IMAGE_VERSION)-arm32v7) + $(call push_image,$(IMAGE_NAME):latest-arm32v7) + push-cross-manifest: $(call push_cross_manifest,$(IMAGE_NAME):$(IMAGE_VERSION),$(IMAGE_NAME):$(IMAGE_VERSION)) $(call push_cross_manifest,$(IMAGE_NAME):latest,$(IMAGE_NAME):latest) @@ -225,11 +225,11 @@ push-cross-manifest: .PHONY: binfmt-register binfmt-register: - '$(DOCKER)' run --rm --privileged docker.io/multiarch/qemu-user-static:register + '$(DOCKER)' run --rm --privileged docker.io/hectormolinero/qemu-user-static:latest .PHONY: binfmt-reset binfmt-reset: - '$(DOCKER)' run --rm --privileged docker.io/multiarch/qemu-user-static:register --reset + '$(DOCKER)' run --rm --privileged docker.io/hectormolinero/qemu-user-static:latest --reset ################################################## ## "version" target @@ -253,6 +253,6 @@ version: .PHONY: clean clean: - rm -f '$(IMAGE_NATIVE_DOCKERFILE)' '$(IMAGE_AMD64_DOCKERFILE)' '$(IMAGE_ARM32V7_DOCKERFILE)' '$(IMAGE_ARM64V8_DOCKERFILE)' - rm -f '$(IMAGE_NATIVE_TARBALL)' '$(IMAGE_AMD64_TARBALL)' '$(IMAGE_ARM32V7_TARBALL)' '$(IMAGE_ARM64V8_TARBALL)' + rm -f '$(IMAGE_NATIVE_DOCKERFILE)' '$(IMAGE_AMD64_DOCKERFILE)' '$(IMAGE_ARM64V8_DOCKERFILE)' '$(IMAGE_ARM32V7_DOCKERFILE)' + rm -f '$(IMAGE_NATIVE_TARBALL)' '$(IMAGE_AMD64_TARBALL)' '$(IMAGE_ARM64V8_TARBALL)' '$(IMAGE_ARM32V7_TARBALL)' if [ -d '$(DISTDIR)' ] && [ -z "$$(ls -A '$(DISTDIR)')" ]; then rmdir '$(DISTDIR)'; fi