|
| 1 | +#!/bin/bash |
| 2 | +set -xeo pipefail |
| 3 | + |
| 4 | +docker_name=shesek/lightning-charge |
| 5 | +version=`node -p 'require("./package").version'` |
| 6 | + |
| 7 | +# Building the arm32v7 image requires registering qemu on the host, which can be done using one of the following: |
| 8 | +# sudo apt-get install qemu binfmt-support qemu-user-static |
| 9 | +# docker run --rm --privileged multiarch/qemu-user-static:register --reset |
| 10 | + |
| 11 | +docker build -t $docker_name:$version-amd64 . |
| 12 | +docker build -t $docker_name:$version-standalone-amd64 --build-arg STANDALONE=1 . |
| 13 | +docker build -t $docker_name:$version-standalone-arm32v7 -f arm32v7.Dockerfile . |
| 14 | +docker build -t $docker_name:$version-standalone-arm64v8 -f arm64v8.Dockerfile . |
| 15 | + |
| 16 | +# Need to push architecture specific images to make the manifest |
| 17 | +docker push $docker_name:$version-standalone-amd64 |
| 18 | +docker push $docker_name:$version-standalone-arm32v7 |
| 19 | +docker push $docker_name:$version-standalone-arm64v8 |
| 20 | + |
| 21 | +# Tagging a manifest does not work, so we need to create a manifest list for both tags |
| 22 | +for target in "$docker_name:$version-standalone" "$docker_name:standalone" |
| 23 | +do |
| 24 | + # We need to create the multi arch image for -standalone |
| 25 | + # Make sure experimental docker cli feature is on: echo "{ \"experimental\": \"enabled\" }" >> $HOME/.docker/config.json |
| 26 | + docker manifest create --amend $target $docker_name:$version-standalone-amd64 $docker_name:$version-standalone-arm32v7 $docker_name:$version-standalone-arm64v8 |
| 27 | + docker manifest annotate $target $docker_name:$version-standalone-amd64 --os linux --arch amd64 |
| 28 | + docker manifest annotate $target $docker_name:$version-standalone-arm32v7 --os linux --arch arm --variant v7 |
| 29 | + docker manifest annotate $target $docker_name:$version-standalone-arm64v8 --os linux --arch arm64 --variant v8 |
| 30 | + docker manifest push $target -p |
| 31 | +done |
| 32 | + |
| 33 | +docker push $docker_name:$version-amd64 |
| 34 | + |
| 35 | +docker tag $docker_name:$version-standalone-arm32v7 $docker_name:standalone-arm32v7 |
| 36 | +docker push $docker_name:standalone-arm32v7 |
| 37 | + |
| 38 | +docker tag $docker_name:$version-standalone-arm64v8 $docker_name:standalone-arm64v8 |
| 39 | +docker push $docker_name:standalone-arm64v8 |
| 40 | + |
| 41 | +docker tag $docker_name:$version-standalone-amd64 $docker_name:standalone-amd64 |
| 42 | +docker push $docker_name:standalone-amd64 |
| 43 | + |
| 44 | +docker tag $docker_name:$version-amd64 $docker_name:$version |
| 45 | +docker push $docker_name:$version |
| 46 | + |
| 47 | +docker tag $docker_name:$version-amd64 $docker_name:latest |
| 48 | +docker push $docker_name:latest |
0 commit comments