pmd/do-release.sh

210 lines
6.1 KiB
Bash
Raw Normal View History

2015-09-18 11:25:30 +02:00
#!/bin/bash
set -e
2015-09-18 11:25:30 +02:00
# Make sure, everything is English...
export LANG=C.UTF-8
2015-09-18 11:25:30 +02:00
# verify the current directory
if [ ! -f pom.xml -o ! -d ../pmd.github.io ]; then
2016-01-07 10:14:24 +01:00
echo "You seem to be in the wrong working directory or you don't have pmd.github.io checked out..."
2015-09-18 11:25:30 +02:00
echo
echo "Expected:"
echo "* You are currently in the pmd repository"
echo "* ../pmd.github.io is the pmd.github.io repository"
echo
exit 1
fi
RELEASE_VERSION=
DEVELOPMENT_VERSION=
CURRENT_BRANCH=
echo "-------------------------------------------"
echo "Releasing PMD"
echo "-------------------------------------------"
# see also https://gist.github.com/pdunnavant/4743895
2017-12-15 15:05:21 +01:00
CURRENT_VERSION=$(./mvnw -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.5.0:exec)
RELEASE_VERSION=${CURRENT_VERSION%-SNAPSHOT}
2017-05-20 22:21:55 +02:00
MAJOR=$(echo $RELEASE_VERSION | cut -d . -f 1)
MINOR=$(echo $RELEASE_VERSION | cut -d . -f 2)
PATCH=$(echo $RELEASE_VERSION | cut -d . -f 3)
if [ "$PATCH" == "0" ]; then
NEXT_MINOR=$(expr ${MINOR} + 1)
NEXT_PATCH="0"
else
# this is a bugfixing release
NEXT_MINOR="${MINOR}"
NEXT_PATCH=$(expr ${PATCH} + 1)
fi
DEVELOPMENT_VERSION="$MAJOR.$NEXT_MINOR.$NEXT_PATCH"
DEVELOPMENT_VERSION="${DEVELOPMENT_VERSION}-SNAPSHOT"
# allow to override the next version, e.g. via "NEXT_VERSION=7.0.0 ./do-release.sh"
if [ "$NEXT_VERSION" != "" ]; then
DEVELOPMENT_VERSION="${NEXT_VERSION}-SNAPSHOT"
fi
# http://stackoverflow.com/questions/1593051/how-to-programmatically-determine-the-current-checked-out-git-branch
CURRENT_BRANCH=$(git symbolic-ref -q HEAD)
CURRENT_BRANCH=${CURRENT_BRANCH##refs/heads/}
CURRENT_BRANCH=${CURRENT_BRANCH:-HEAD}
echo "RELEASE_VERSION: ${RELEASE_VERSION}"
echo "DEVELOPMENT_VERSION: ${DEVELOPMENT_VERSION}"
echo "CURRENT_BRANCH: ${CURRENT_BRANCH}"
echo
echo "Is this correct?"
echo
echo "Press enter to continue..."
read
2015-09-18 11:25:30 +02:00
export RELEASE_VERSION
export DEVELOPMENT_VERSION
export CURRENT_BRANCH
RELEASE_RULESET="pmd-core/src/main/resources/rulesets/releases/${RELEASE_VERSION//\./}.xml"
echo "* Update date info in **docs/_config.yml**."
2018-08-15 04:08:15 +02:00
echo " date: $(date -u +%d-%B-%Y)"
2017-12-15 15:27:57 +01:00
echo
2018-08-15 04:08:15 +02:00
echo "* Ensure all the new rules are listed in the proper file:"
echo " ${RELEASE_RULESET}"
2015-09-18 11:25:30 +02:00
echo
echo "* Update **pmd-apex/src/main/resources/rulesets/apex/quickstart.xml** and"
echo " **pmd-java/src/main/resources/rulesets/java/quickstart.xml** with the new rules.
echo
2018-11-12 20:14:54 +01:00
echo "* Update **docs/pages/next_major_development.md** with the API changes for"
echo " the new release based on the release notes"
echo
2017-12-15 15:27:57 +01:00
echo "* Update **../pmd.github.io/_config.yml** to mention the new release"
echo
echo "* Update property `pmd-designer.version` in **pom.xml** to reference the latest pmd-designer release"
echo " See <https://search.maven.org/search?q=g:net.sourceforge.pmd%20AND%20a:pmd-ui&core=gav> for the available releases."
echo
2015-09-18 11:25:30 +02:00
echo "Press enter to continue..."
read
# install bundles needed for rendering release notes
bundle install --with=release_notes_preprocessing --path vendor/bundle
export RELEASE_NOTES_POST="_posts/$(date -u +%Y-%m-%d)-PMD-${RELEASE_VERSION}.md"
echo "Generating ../pmd.github.io/${RELEASE_NOTES_POST}..."
NEW_RELEASE_NOTES=$(bundle exec .travis/render_release_notes.rb docs/pages/release_notes.md | tail -n +6)
cat > ../pmd.github.io/${RELEASE_NOTES_POST} <<EOF
---
layout: post
title: PMD ${RELEASE_VERSION} released
---
${NEW_RELEASE_NOTES}
EOF
2015-09-18 11:25:30 +02:00
echo "Committing current changes (pmd)"
if [[ -e ${RELEASE_RULESET} ]]
then
git add ${RELEASE_RULESET}
fi
2015-09-18 11:25:30 +02:00
git commit -a -m "Prepare pmd release ${RELEASE_VERSION}"
(
echo "Committing current changes (pmd.github.io)"
cd ../pmd.github.io
git add ${RELEASE_NOTES_POST}
2015-09-18 11:25:30 +02:00
git commit -a -m "Prepare pmd release ${RELEASE_VERSION}"
git push
2015-09-18 11:25:30 +02:00
)
./mvnw -B release:clean release:prepare \
2015-09-18 11:25:30 +02:00
-Dtag=pmd_releases/${RELEASE_VERSION} \
-DreleaseVersion=${RELEASE_VERSION} \
-DdevelopmentVersion=${DEVELOPMENT_VERSION}
2015-09-18 11:25:30 +02:00
echo
echo "Tag has been pushed.... now check travis build: <https://travis-ci.org/pmd/pmd>"
2015-09-18 11:25:30 +02:00
echo
echo
echo "Press enter to continue..."
read
echo
echo "Check the milestone on github:"
echo "<https://github.com/pmd/pmd/milestones>"
echo " --> move any open issues to the next milestone, close the current milestone"
2015-09-18 11:25:30 +02:00
echo
echo
echo "Prepare Next development version:"
echo "* Update version/date info in **docs/_config.yml**."
2015-09-18 11:25:30 +02:00
echo
2018-05-29 16:08:48 -03:00
echo
echo "Press enter to continue..."
read
# update release_notes_old
OLD_RELEASE_NOTES=$(tail -n +8 docs/pages/release_notes_old.md)
echo "$(head -n 7 docs/pages/release_notes_old.md)" > docs/pages/release_notes_old.md
echo "$NEW_RELEASE_NOTES" >> docs/pages/release_notes_old.md
echo >> docs/pages/release_notes_old.md
echo "$OLD_RELEASE_NOTES" >> docs/pages/release_notes_old.md
2018-05-29 16:08:48 -03:00
# reset release notes template
cat > docs/pages/release_notes.md <<EOF
---
title: PMD Release Notes
permalink: pmd_release_notes.html
keywords: changelog, release notes
---
2015-09-18 11:25:30 +02:00
## {{ site.pmd.date }} - {{ site.pmd.version }}
2015-09-18 11:25:30 +02:00
2018-08-15 04:08:15 +02:00
The PMD team is pleased to announce PMD {{ site.pmd.version }}.
2018-08-15 04:08:15 +02:00
This is a {{ site.pmd.release_type }} release.
2015-09-18 11:25:30 +02:00
{% tocmaker is_release_notes_processor %}
2015-09-18 11:25:30 +02:00
### New and noteworthy
2015-09-18 11:25:30 +02:00
### Fixed Issues
2015-09-18 11:25:30 +02:00
### API Changes
### External Contributions
2015-09-18 11:25:30 +02:00
2018-08-18 17:39:29 +02:00
{% endtocmaker %}
2015-09-18 11:25:30 +02:00
EOF
2018-05-29 16:08:48 -03:00
2015-09-18 11:25:30 +02:00
git commit -a -m "Prepare next development version"
git push origin ${CURRENT_BRANCH}
2018-06-26 09:44:02 +02:00
./mvnw -B release:clean
2015-09-18 11:25:30 +02:00
echo
echo
echo
echo "Verify the new release on github: <https://github.com/pmd/pmd/releases/tag/pmd_releases/${RELEASE_VERSION}>"
2015-09-18 11:25:30 +02:00
echo
echo "* Submit news to SF on <https://sourceforge.net/p/pmd/news/> page. Use same text as in the email below."
echo "* Send out an announcement mail to the mailing list:"
2015-09-18 11:25:30 +02:00
echo
echo "To: PMD Developers List <pmd-devel@lists.sourceforge.net>"
echo "Subject: [ANNOUNCE] PMD ${RELEASE_VERSION} Released"
echo
echo "* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F${RELEASE_VERSION}"
echo "* Documentation: https://pmd.github.io/pmd-${RELEASE_VERSION}/"
echo
2018-08-15 04:08:15 +02:00
echo "$NEW_RELEASE_NOTES"
echo
echo
2015-09-18 11:25:30 +02:00
echo
echo "------------------------------------------"
echo "Done."
echo "------------------------------------------"
echo