docker-publish 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. #
  3. # docker-publish - Publish docker image to the ECR repository
  4. #
  5. # usage: docker-publish [--primary] [--aws-profile profile] [--region region] image
  6. #
  7. if [ -f pak.json ] ; then
  8. VERSION=$(pak --dir . edit version)
  9. else
  10. VERSION=$(pak --dir .. edit version)
  11. fi
  12. while [[ $# -gt 0 ]] ; do
  13. arg="$1"
  14. case ${arg} in
  15. --aws-profile)
  16. AWS_PROFILE=${2}
  17. shift ; shift
  18. ;;
  19. --primary)
  20. PRIMARY=${2}
  21. shift ; shift
  22. ;;
  23. --region)
  24. AWS_DEFAULT_REGION=${2}
  25. shift ; shift
  26. ;;
  27. --version)
  28. VERSION=${2}
  29. shift ; shift
  30. ;;
  31. *)
  32. break
  33. ;;
  34. esac
  35. done
  36. IMAGE=${1}
  37. if [ "${IMAGE}" = "" -o "${AWS_DEFAULT_REGION}" = "" ] ; then
  38. echo "usage: docker-publish [--primary] [--aws-profile profile] [--region region] image"
  39. exit 255
  40. fi
  41. . $(dirname ${BASH_SOURCE[0]})/common
  42. . $(dirname ${BASH_SOURCE[0]})/docker-login
  43. echo "Docker login for ${AWS_PROFILE} at ${AWS_DEFAULT_REGION}"
  44. URI=$(dockerLogin)
  45. IMAGE_PATH=${URI}/${IMAGE}
  46. echo "Tagging image: docker tag ${IMAGE} ${IMAGE_PATH}:${VERSION}"
  47. docker tag ${IMAGE} ${IMAGE_PATH}:${VERSION}
  48. if [ $? != 0 ] ; then
  49. echo "Cannot tag ${IMAGE} as ${IMAGE_PATH}:${VERSION}"
  50. exit 1
  51. fi
  52. echo "Pushing: docker push ${IMAGE_PATH}:${VERSION}"
  53. docker push ${IMAGE_PATH}:${VERSION} | egrep -v 'Layer already exists|Waiting|Preparing|Pushed|digest:'
  54. if [ $? != 0 ] ; then
  55. echo "Cannot push ${IMAGE}:${VERSION}"
  56. exit 1
  57. fi
  58. if [ "${PRIMARY}" != "" ] ; then
  59. echo "Tagging current: docker tag ${IMAGE} ${IMAGE_PATH}:current"
  60. docker tag ${IMAGE} ${IMAGE_PATH}:current
  61. if [ $? != 0 ] ; then
  62. echo "Cannot tag ${IMAGE}:current"
  63. exit 1
  64. fi
  65. echo "Pushing: docker push ${IMAGE_PATH}:current"
  66. docker push ${IMAGE_PATH}:current | egrep -v 'Layer already exists|Waiting|Preparing'
  67. if [ $? != 0 ] ; then
  68. echo "Cannot push ${IMAGE_PATH}:current"
  69. exit 1
  70. fi
  71. # docker rmi -f ${IMAGE_PATH}:${VERSION}
  72. else
  73. echo "Not pushing to ${IMAGE}:current"
  74. fi
  75. dockerLogout