build_and_push.sh 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/bash
  2. set -e
  3. natter_repo="nattertool/natter"
  4. natter_ver=$(cd .. && python3 -Bc 'print(__import__("natter").__version__)')
  5. [ "dev" = $(echo "$natter_ver" | cut -d- -f2) ] && natter_ver="dev"
  6. function push_natter_manifest()
  7. {
  8. tag="$1"
  9. docker manifest create "$natter_repo:$tag" \
  10. "$natter_repo:$tag-amd64" \
  11. "$natter_repo:$tag-arm64"
  12. docker manifest push "$natter_repo:$tag"
  13. docker manifest rm "$natter_repo:$tag"
  14. }
  15. function tag_natter()
  16. {
  17. tag="$1"
  18. new_tags=("${@:2}")
  19. cmd=()
  20. for new_tag in "${new_tags[@]}"; do
  21. cmd+=("-t")
  22. cmd+=("$natter_repo:$new_tag")
  23. done
  24. docker buildx imagetools create "${cmd[@]}" "$natter_repo:$tag"
  25. }
  26. function build_and_push()
  27. {
  28. docker compose build --no-cache
  29. docker push "$natter_repo" --all-tags
  30. push_natter_manifest dev-debian
  31. push_natter_manifest dev-alpine
  32. push_natter_manifest dev-openwrt
  33. push_natter_manifest dev-minimal
  34. tag_natter dev-debian dev
  35. }
  36. function tag_release()
  37. {
  38. tag_natter dev-debian "$natter_ver-debian" debian "$natter_ver" latest
  39. tag_natter dev-alpine "$natter_ver-alpine" alpine
  40. tag_natter dev-openwrt "$natter_ver-openwrt" openwrt
  41. tag_natter dev-minimal "$natter_ver-minimal" minimal
  42. }
  43. build_and_push
  44. if [ "$1" == "release" ]; then
  45. tag_release
  46. fi