docker-create-push-manifests.sh 928 B

123456789101112131415161718192021222324252627
  1. ##!/usr/bin/env bash
  2. set -euo pipefail
  3. img_amd64=$1
  4. IsPushLatest=$2
  5. img_arm64=$(echo ${img_amd64} | sed 's/-amd64$/-arm64/g')
  6. img_march=${img_amd64%-amd64}
  7. docker pull "$img_amd64"
  8. docker pull --platform linux/arm64 "$img_arm64"
  9. img_amd64_digest=$(docker inspect --format='{{index .RepoDigests 0}}' "$img_amd64")
  10. img_arm64_digest=$(docker inspect --format='{{index .RepoDigests 0}}' "$img_arm64")
  11. echo "sha256 of amd64 is $img_amd64_digest"
  12. echo "sha256 of arm64 is $img_arm64_digest"
  13. docker manifest create "${img_march}" \
  14. --amend "$img_amd64_digest" \
  15. --amend "$img_arm64_digest"
  16. docker manifest push "${img_march}"
  17. # PUSH latest if it is a release build
  18. if [ "$IsPushLatest" = "true" ]; then
  19. img_latest=$(echo "$img_arm64" | cut -d: -f 1):latest
  20. docker manifest create "${img_latest}" \
  21. --amend "$img_amd64_digest" \
  22. --amend "$img_arm64_digest"
  23. docker manifest push "${img_latest}"
  24. fi