push-release 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/bin/bash
  2. #
  3. # Create the official release
  4. #
  5. . "$(dirname "${BASH_SOURCE[0]}")/utils.sh"
  6. function usage() {
  7. >&2 cat << EOM
  8. Publish a release by building all artifacts and pushing them.
  9. This script requires that 'git config branch.${BRANCH}.release' is set to the
  10. release version for the release branch.
  11. EOM
  12. exit 1
  13. }
  14. BRANCH="$(git rev-parse --abbrev-ref HEAD)"
  15. VERSION="$(git config "branch.${BRANCH}.release")" || usage
  16. if [ -z "$(command -v jq 2> /dev/null)" ]; then
  17. >&2 echo "$0 requires https://stedolan.github.io/jq/"
  18. >&2 echo "Please install it and ake sure it is available on your \$PATH."
  19. exit 2
  20. fi
  21. API=https://api.github.com/repos
  22. REPO=docker/compose
  23. [email protected]:$REPO
  24. # Check the build status is green
  25. sha=$(git rev-parse HEAD)
  26. url=$API/$REPO/statuses/$sha
  27. build_status=$(curl -s $url | jq -r '.[0].state')
  28. if [ -n "$SKIP_BUILD_CHECK" ]; then
  29. echo "Skipping build status check..."
  30. elif [[ "$build_status" != "success" ]]; then
  31. >&2 echo "Build status is $build_status, but it should be success."
  32. exit -1
  33. fi
  34. echo "Tagging the release as $VERSION"
  35. git tag $VERSION
  36. git push $GITHUB_REPO $VERSION
  37. echo "Uploading sdist to pypi"
  38. python setup.py sdist
  39. echo "Uploading the docker image"
  40. docker push docker/compose:$VERSION
  41. if [ "$(command -v twine 2> /dev/null)" ]; then
  42. twine upload ./dist/docker-compose-${VERSION}.tar.gz
  43. else
  44. python setup.py upload
  45. fi
  46. echo "Testing pip package"
  47. virtualenv venv-test
  48. source venv-test/bin/activate
  49. pip install docker-compose==$VERSION
  50. docker-compose version
  51. deactivate
  52. rm -rf venv-test
  53. echo "Now publish the github release, and test the downloads."
  54. echo "Email [email protected] and [email protected] about the new release."