From e10999f0f28e99db099b60fb4d3f0d4e9605de54 Mon Sep 17 00:00:00 2001 From: Erik van Luijk Date: Thu, 28 Mar 2019 20:56:40 +0100 Subject: [PATCH] Add multiplatform support (#1336) * Add multiplatform support Using the experimental manifest support in docker one can create a manifest that contain references to other images/tags build for various architectures. When someone pulls koenkk/zigbee2mqtt correct image is automatically selected. Please note that experimental cli support needs to be enabled. * Update docker.sh --- .travis/docker.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.travis/docker.sh b/.travis/docker.sh index be93486a..3074516e 100755 --- a/.travis/docker.sh +++ b/.travis/docker.sh @@ -14,6 +14,19 @@ build_and_push() { docker push $DOCKER_USERNAME/zigbee2mqtt:$1 } +push_manifest() { + docker manifest create $DOCKER_USERNAME/zigbee2mqtt:latest$1 $DOCKER_USERNAME/zigbee2mqtt:latest$1 $DOCKER_USERNAME/zigbee2mqtt:arm32v6$1 $DOCKER_USERNAME/zigbee2mqtt:arm64v8$1 + + docker manifest annotate $DOCKER_USERNAME/zigbee2mqtt:latest$1 $DOCKER_USERNAME/zigbee2mqtt:arm32v6$1 --os linux --arch arm --variant v6 + docker manifest annotate $DOCKER_USERNAME/zigbee2mqtt:latest$1 $DOCKER_USERNAME/zigbee2mqtt:arm64v8$1 --os linux --arch arm64 --variant v8 + + docker manifest inspect $DOCKER_USERNAME/zigbee2mqtt:latest$1 + + docker manifest push -p $DOCKER_USERNAME/zigbee2mqtt:latest$1 + + docker run --rm mplatform/mquery $DOCKER_USERNAME/zigbee2mqtt:latest$1 +} + # Only update Docker images for: # - dev branch # - version release @@ -31,6 +44,10 @@ then tag_push "$TRAVIS_TAG-arm32v6" "arm32v6" tag_push "$TRAVIS_TAG-arm64v8" "arm64v8" tag_push "$TRAVIS_TAG" latest + + # Push manifest + push_manifest "" + elif [ "$TRAVIS_BRANCH" = "dev" -a "$TRAVIS_PULL_REQUEST" = "false" ] then echo "Updating docker images for dev branch!" @@ -38,6 +55,10 @@ then build_and_push latest-dev docker/Dockerfile.amd64 amd64 build_and_push arm32v6-dev docker/Dockerfile.arm32v6 arm build_and_push arm64v8-dev docker/Dockerfile.arm64v8 arm64 + + # Push manifest + push_manifest "-dev" + else echo "Not updating docker images, triggered by pull request or not on master/dev branch" fi