push-release 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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 make sure it is available on your \$PATH."
  19. exit 2
  20. fi
  21. if [ -z "$(command -v pandoc 2> /dev/null)" ]; then
  22. >&2 echo "$0 requires http://pandoc.org/"
  23. >&2 echo "Please install it and make sure it is available on your \$PATH."
  24. exit 2
  25. fi
  26. API=https://api.github.com/repos
  27. REPO=docker/compose
  28. [email protected]:$REPO
  29. # Check the build status is green
  30. sha=$(git rev-parse HEAD)
  31. url=$API/$REPO/statuses/$sha
  32. build_status=$(curl -s $url | jq -r '.[0].state')
  33. if [ -n "$SKIP_BUILD_CHECK" ]; then
  34. echo "Skipping build status check..."
  35. elif [[ "$build_status" != "success" ]]; then
  36. >&2 echo "Build status is $build_status, but it should be success."
  37. exit -1
  38. fi
  39. echo "Tagging the release as $VERSION"
  40. git tag $VERSION
  41. git push $GITHUB_REPO $VERSION
  42. echo "Uploading the docker image"
  43. docker push docker/compose:$VERSION
  44. echo "Uploading sdist to pypi"
  45. pandoc -f markdown -t rst README.md -o README.rst
  46. sed -i -e 's/logo.png?raw=true/https:\/\/github.com\/docker\/compose\/raw\/master\/logo.png?raw=true/' README.rst
  47. ./script/build/write-git-sha
  48. python setup.py sdist
  49. if [ "$(command -v twine 2> /dev/null)" ]; then
  50. twine upload ./dist/docker-compose-${VERSION/-/}.tar.gz
  51. else
  52. python setup.py upload
  53. fi
  54. echo "Testing pip package"
  55. virtualenv venv-test
  56. source venv-test/bin/activate
  57. pip install docker-compose==$VERSION
  58. docker-compose version
  59. deactivate
  60. rm -rf venv-test
  61. echo "Now publish the github release, and test the downloads."
  62. echo "Email [email protected] and [email protected] about the new release."