From f86810fc60124711e288559eb152ce2997e4bd19 Mon Sep 17 00:00:00 2001 From: Xavier Le Vourch Date: Thu, 1 Nov 2007 18:29:59 +0000 Subject: [PATCH] new scripts to automate most of the release process git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@5609 51baf565-9d33-0410-a72c-fc3788e3496d --- pmd/etc/doing_the_next_pmd_release.txt | 82 +++++++------------- pmd/etc/generate_release.sh | 100 +++++++++++++++++++++++++ pmd/etc/update_version.sh | 64 ++++++++++++++++ 3 files changed, 190 insertions(+), 56 deletions(-) create mode 100755 pmd/etc/generate_release.sh create mode 100755 pmd/etc/update_version.sh diff --git a/pmd/etc/doing_the_next_pmd_release.txt b/pmd/etc/doing_the_next_pmd_release.txt index 2bb89a2bbb..7cadca5b32 100644 --- a/pmd/etc/doing_the_next_pmd_release.txt +++ b/pmd/etc/doing_the_next_pmd_release.txt @@ -1,17 +1,22 @@ -update pmd.bat, designer.bat, bgastviewer.*, cygwin-run.sh, cpd.jnlp, cpdgui.bat, build.xml to point to pmd-4.0.jar -update PMD.java, xdocs/running.xml, compiling.xml, integrations.xml, installing.xml to reflect pmd-4.0 -update the release date in the changelog -update rulesets/rulesets.properties - add any new ruleset file names -update release number and tag name in project.xml -ensure all the new rules are listed in a rulesets/releases/4.0.xml file +run version update script at the top level: + +./etc/update_version.sh + + tasks implemented by script: + update pmd.bat, designer.bat, bgastviewer.*, cygwin-run.sh, cpd.jnlp, cpdgui.bat, build.xml to point to pmd-.jar + update PMD.java, xdocs/running.xml, compiling.xml, integrations.xml, installing.xml to reflect pmd- + update the release date in the changelog + update release number and tag name in project.xml + +update rulesets/rulesets.properties - add any new ruleset file names +ensure all the new rules are listed in a rulesets/releases/.xml file ant clean test Check in everything ant dist test Do all the JUnit tests run? OK, then: -ant dist TESTS: Can you 1) run 1 file and get a report @@ -20,68 +25,33 @@ TESTS: Can you 2) run the Ant 'pmd' task and get a report ant pmd -cd .. -./docs.sh all -cd etc +run "./generate_release.sh " in etc -Prepare binary release: -rm -rf ~/tmp/pmd-4.0 -mkdir -p ~/tmp/pmd-4.0/etc -mkdir ~/tmp/pmd-4.0/bin -mkdir ~/tmp/pmd-4.0/lib -mkdir -p ~/tmp/pmd-4.0/java14/lib -mkdir ~/tmp/pmd-4.0/java14/bin -cp ../LICENSE.txt changelog.txt ~/tmp/pmd-4.0/etc -cd ../bin/ -cp pmd.* cygwin-run.sh build.xml cpd.sh cpdgui.bat designer.* ~/tmp/pmd-4.0/bin -cd ../etc/ -cp ../java14/lib/*.jar ~/tmp/pmd-4.0/java14/lib/ -cp ../java14/bin/*.bat ../java14/bin/*.sh ~/tmp/pmd-4.0/java14/bin/ -chmod 755 ~/tmp/pmd-4.0/java14/bin/* -cp ../lib/pmd-4.0.jar ../lib/asm-3.0.jar ../lib/jaxen-1.1.1.jar ~/tmp/pmd-4.0/lib/ -mkdir ~/tmp/pmd-4.0/etc/xslt -cp xslt/*.xslt xslt/*.js xslt/*.gif xslt/*.css ~/tmp/pmd-4.0/etc/xslt/ -cp -R ../target/docs ~/tmp/pmd-4.0 -cd ~/tmp -zip -q -r pmd-bin-4.0.zip pmd-4.0/ -cd - +It will run: -Time to tag: + ant dist + ./docs.sh all -cd ../../ -svn -m "4.0 release tag" copy https://pmd.svn.sourceforge.net/svnroot/pmd/trunk/pmd https://pmd.svn.sourceforge.net/svnroot/pmd/tags/pmd/pmd_release_4_0 + generate the binary zip file -Prepare source release: -rm -rf ~/tmp/pmd-4.0 -rm -rf ~/tmp/pmd-src-4.0.zip -cd pmd/bin/ -ant jarsrc -cd ../../ -rm -rf tmp/ -mkdir tmp -cd tmp -svn -q export https://pmd.svn.sourceforge.net/svnroot/pmd/tags/pmd/pmd_release_4_0 pmd -mv pmd/ pmd-4.0 -cd .. -cp pmd/lib/pmd-src-4.0.jar tmp/pmd-4.0/lib/ -mv tmp/pmd-4.0/ ~/tmp/ -cp pmd/lib/pmd-4.0.jar ~/tmp/pmd-4.0/lib -cp -R pmd/target/docs ~/tmp/pmd-4.0/ -rm -f ~/tmp/pmd-4.0/etc/clover.license -cd ~/tmp/ -zip -q -r pmd-src-4.0.zip pmd-4.0/ + svn tag if "yes" is pressed + + generate the source zip file if you see a bug and fix it, you can delete the release using: svn delete https://pmd.svn.sourceforge.net/svnroot/pmd/tags/pmd/pmd_release_4_0 and then retag it -ncftpput upload.sourceforge.net incoming/ pmd-src-4.0.zip pmd-bin-4.0.zip +ncftpput upload.sourceforge.net incoming/ pmd-src-.zip pmd-bin-.zip + +lftp -e "mput -O incoming/ pmd-src-.zip pmd-bin-.zip" upload.sourceforge.net + Go to Admin, File Releases, Add release Paste stuff into the changelog/readme boxes -Add the pmd-bin-4.0.zip file -Add the pmd-src-4.0.zip file +Add the pmd-bin-.zip file +Add the pmd-src-.zip file Classify the file Click File Releases, Edit Release, set previous version to 'hidden'. diff --git a/pmd/etc/generate_release.sh b/pmd/etc/generate_release.sh new file mode 100755 index 0000000000..517b9ae426 --- /dev/null +++ b/pmd/etc/generate_release.sh @@ -0,0 +1,100 @@ +#!/bin/bash + +version=$1 + +pmd_top_dir=~/tmp +pmd_bin_dir=$pmd_top_dir/pmd-$version +pmd_src_dir=$pmd_top_dir/pmd-$version +pmd_tmp_dir=$pmd_top_dir/pmd-tmp + +echo +echo "Rebuilding everything" +echo + +cd .. +ant -f bin/build.xml dist + +echo +echo "Press [enter] to generate docs" + +read RESP +./docs.sh all + +cd etc + +echo +echo "generating binary file $pmd_top_dir/pmd-bin-$version.zip" +echo + +rm -rf $pmd_bin_dir +rm -f $pmd_top_dir/pmd-bin-$version.zip +mkdir -p $pmd_bin_dir/etc +mkdir $pmd_bin_dir/bin +mkdir $pmd_bin_dir/lib +mkdir -p $pmd_bin_dir/java14/lib +mkdir $pmd_bin_dir/java14/bin +cp ../LICENSE.txt changelog.txt $pmd_bin_dir/etc +cd ../bin/ +cp pmd.* cygwin-run.sh build.xml cpd.sh cpdgui.bat designer.* $pmd_bin_dir/bin +cd ../etc/ +cp ../java14/lib/*.jar $pmd_bin_dir/java14/lib/ +cp ../java14/bin/*.bat ../java14/bin/*.sh $pmd_bin_dir/java14/bin/ +chmod 755 $pmd_bin_dir/java14/bin/* +cp ../lib/pmd-$version.jar ../lib/asm-3.0.jar ../lib/jaxen-1.1.1.jar $pmd_bin_dir/lib/ +mkdir $pmd_bin_dir/etc/xslt +cp xslt/*.xslt xslt/*.js xslt/*.gif xslt/*.css $pmd_bin_dir/etc/xslt/ +cp -R ../target/docs $pmd_bin_dir +cd $pmd_top_dir +zip -q -r pmd-bin-$version.zip pmd-$version/ +cd - + +echo +echo "binary package generated" +echo + +release_tag=`echo $version|sed -e "s/\./_/g"` + +echo +echo +echo "Type \"yes\" to tag svn repository using 'pmd_release_$release_tag'" + +read RESP; + +if [ "$RESP" = "yes" ]; then + echo + echo "Tagging release using" + echo "svn -m \"$version release tag\" copy https://pmd.svn.sourceforge.net/svnroot/pmd/trunk/pmd https://pmd.svn.sourceforge.net/svnroot/pmd/tags/pmd/pmd_release_$release_tag" + echo + svn -m \"$version release tag\" copy https://pmd.svn.sourceforge.net/svnroot/pmd/trunk/pmd https://pmd.svn.sourceforge.net/svnroot/pmd/tags/pmd/pmd_release_$release_tag +else + echo + echo "Skipping svn tag!!!" + echo +fi + + + +echo "generating source file $pmd_top_dir/pmd-src-$version.zip" + +rm -rf $pmd_src_dir +rm -f $pmd_top_dir/pmd-src-$version.zip +cd ../bin/ +ant jarsrc +cd .. +svn -q export https://pmd.svn.sourceforge.net/svnroot/pmd/tags/pmd/pmd_release_$release_tag $pmd_src_dir +cp lib/pmd-src-$version.jar $pmd_src_dir/lib/ +cp lib/pmd-$version.jar $pmd_src_dir/lib +cp -R target/docs $pmd_src_dir +rm -f $pmd_src_dir/etc/clover.license +cd $pmd_top_dir +zip -q -r pmd-src-$version.zip pmd-$version/ +cd - + +echo +echo "source package generated" +echo + +echo "Use the command below to upload to sourceforge" +echo +echo "lftp -e \"mput -O incoming/ $pmd_top_dir/pmd-src-$version.zip $pmd_top_dir/pmd-bin-$version.zip\" upload.sourceforge.net" + diff --git a/pmd/etc/update_version.sh b/pmd/etc/update_version.sh new file mode 100755 index 0000000000..cd31ecfcfc --- /dev/null +++ b/pmd/etc/update_version.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +update_VERSION_var() { + sed -i -e "s/VERSION=.*/VERSION=$1/g" $2 +} + +update_regexp() { + sed -i -e "s/$1/$2/g" $3 +} + +# update pmd-.jar +update_jar() { + update_regexp "pmd-[0-9][^; \\]*\.jar" "pmd-$1.jar" $2 +} + +update_dir() { + update_regexp "pmd-[0-9][^ <;\/\\\\]*\/" "pmd-$1\/" $2 + update_regexp "pmd-[0-9][^ <;\/\\\\]*\\\\" "pmd-$1\\\\" $2 +} + +echo "Updating version to $1" + +update_VERSION_var $1 bin/bgastviewer.sh +update_VERSION_var $1 bin/designer.bat +update_VERSION_var $1 bin/bgastviewer.bat +update_VERSION_var $1 bin/cpdgui.bat +update_VERSION_var $1 bin/cygwin-run.sh +update_VERSION_var $1 bin/pmd.bat +update_VERSION_var $1 java14/bin/bgastviewer.sh +update_VERSION_var $1 java14/bin/designer.bat +update_VERSION_var $1 java14/bin/bgastviewer.bat +update_VERSION_var $1 java14/bin/cpdgui.bat +update_VERSION_var $1 java14/bin/cygwin-run.sh +update_VERSION_var $1 java14/bin/pmd.bat + +update_regexp "property name=\\\"version\\\" value=\".*\"" "property name=\\\"version\\\" value=\\\"$1\\\"" bin/build.xml +update_regexp "VERSION = \".*\"" "VERSION = \\\"$1\\\"" src/net/sourceforge/pmd/PMD.java +update_regexp "pmd-src-.*.zip" "pmd-src-$1.zip" xdocs/compiling.xml +update_regexp "pmd-bin-[^x]*.zip" "pmd-bin-$1.zip" xdocs/installing.xml +update_regexp "pmd-[0-9].*" "pmd-$1" xdocs/installing.xml +update_regexp "PMD [0-9][^\"]*\"" "PMD $1\"" src/site/site.xml +update_regexp "PMD [0-9][^\"]*\"" "PMD $1\"" xdocs/navigation.xml +update_regexp "PMD version .* exists" "PMD version $1 exists" xdocs/integrations.xml + +update_regexp "currentVersion.*" "currentVersion>$1<\/currentVersion>" project.xml +update_regexp "id>[0-9].*<" "id>$1<" project.xml +update_regexp "name>[0-9].*<" "name>$1<" project.xml +update_regexp "id>[0-9].*<" "id>$1<" project.xml +release_tag=`echo $1|sed -e "s/\./_/g"` +update_regexp "tag>pmd_release_[0-9].*<" "tag>pmd_release_$release_tag<" project.xml + +update_regexp "^ [0-9].*<" " $1<" pom.xml + +update_jar $1 etc/cpd.jnlp +update_jar $1 xdocs/running.xml +update_jar $1 xdocs/integrations.xml +update_jar $1 etc/bug_closer.txt + +update_dir $1 xdocs/compiling.xml +update_dir $1 xdocs/integrations.xml +update_dir $1 xdocs/running.xml + +date=`date +"%B %d, %Y"` +update_regexp "^????.*" "$date - $1:" etc/changelog.txt