publish_release.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #!/bin/bash
  2. # error out if any statements fail
  3. set -e
  4. function usage() {
  5. echo "$0 [options] <tag> <branch>"
  6. echo
  7. echo " tag : Release tag (eg: 2.1.4, 2.2-beta1, ...)"
  8. echo " branch: Release branch (eg, 2.1.x, 2.2.x)"
  9. echo
  10. echo "Environment variables:"
  11. echo " MAVEN_SETTINGS : settings.xml override"
  12. echo " SKIP_DEPLOY : Skips deploy to maven repository"
  13. echo " SKIP_COMMUNITY : Skips deploy of community modules"
  14. echo " SKIP_UPLOAD : Skips upload to source forge"
  15. }
  16. if [ -z $2 ]; then
  17. usage
  18. exit
  19. fi
  20. tag=$1
  21. branch=$2
  22. # load properties + functions
  23. . "$( cd "$( dirname "$0" )" && pwd )"/properties
  24. . "$( cd "$( dirname "$0" )" && pwd )"/functions
  25. if [ `is_version_num $tag` == "0" ]; then
  26. echo "$tag is a not a valid release tag"
  27. exit 1
  28. fi
  29. if [ `is_primary_branch_num $tag` == "1" ]; then
  30. echo "$tag is a not a valid release tag, can't be same as primary branch name"
  31. exit 1
  32. fi
  33. pushd .. > /dev/null
  34. # init_git $git_user $git_email
  35. # fetch single tag
  36. git fetch origin refs/tags/$tag:refs/tags/$tag --no-tags
  37. # ensure tag already exists
  38. if [ `git tag --list $tag | wc -l` == 0 ]; then
  39. echo "tag $tag not available on $GS_GIT_URL"
  40. exit 1
  41. fi
  42. # check to see if a release branch already exists
  43. if [ `git branch --list rel_$tag | wc -l` == 1 ]; then
  44. echo "branch rel_$tag exists, deleting it"
  45. git branch -D rel_$tag
  46. fi
  47. # create release branch from tag
  48. git checkout -b rel_$tag $tag
  49. # ensure no changes on it (actually release folder is a change)
  50. # set +e
  51. # git status | grep "working directory clean"
  52. # if [ "$?" == "1" ]; then
  53. # echo "branch rel_$tag dirty, exiting"
  54. # exit 1
  55. # fi
  56. # set -e
  57. # deploy the release to maven repo
  58. pushd src > /dev/null
  59. if [ -z $SKIP_DEPLOY ]; then
  60. mvn deploy -P allExtensions -DskipTests $MAVEN_FLAGS
  61. else
  62. echo "Skipping mvn clean install deploy -P allExtensions -DskipTests"
  63. fi
  64. if [ -z $SKIP_COMMUNITY ]; then
  65. pushd community > /dev/null
  66. set +e
  67. mvn clean install deploy -P communityRelease -DskipTests $MAVEN_FLAGS || true
  68. set -e
  69. popd > /dev/null
  70. else
  71. echo "Skipping mvn clean install deploy -P communityRelease -DskipTests"
  72. fi
  73. popd > /dev/null
  74. # upload artifacts to sourceforge
  75. pushd distribution/$tag > /dev/null
  76. if [ -z $SKIP_UPLOAD ]; then
  77. rsync -ave "ssh " *-bin.zip *-war.zip *doc.zip $SF_USER@$SF_HOST:/home/pfs/project/g/ge/geoserver/GeoServer/$tag/
  78. # don't fail if exe or pdf is not around
  79. set +e
  80. rsync -ave "ssh " *.exe *.pdf $SF_USER@$SF_HOST:/home/pfs/project/g/ge/geoserver/GeoServer/$tag/
  81. set -e
  82. pushd plugins > /dev/null
  83. rsync -ave "ssh " *.zip $SF_USER@$SF_HOST:"/home/pfs/project/g/ge/geoserver/GeoServer/$tag/extensions"
  84. popd > /dev/null
  85. else
  86. echo "Skipping rsync -ave "ssh " *.zip *.exe $SF_USER@$SF_HOST:/home/pfs/project/g/ge/geoserver/GeoServer/$tag/"
  87. echo "Skipping rsync -ave "ssh " *.zip $SF_USER@$SF_HOST:"/home/pfs/project/g/ge/geoserver/GeoServer/$tag/extensions""
  88. fi
  89. popd > /dev/null