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
This commit is contained in:
Xavier Le Vourch
2007-11-01 18:29:59 +00:00
parent 81afc0eab0
commit f86810fc60
3 changed files with 190 additions and 56 deletions

View File

@ -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 <version>
tasks implemented by script:
update pmd.bat, designer.bat, bgastviewer.*, cygwin-run.sh, cpd.jnlp, cpdgui.bat, build.xml to point to pmd-<version>.jar
update PMD.java, xdocs/running.xml, compiling.xml, integrations.xml, installing.xml to reflect pmd-<version>
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/<version>.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 <version>" 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-<version>.zip pmd-bin-<version>.zip
lftp -e "mput -O incoming/ pmd-src-<version>.zip pmd-bin-<version>.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-<version>.zip file
Add the pmd-src-<version>.zip file
Classify the file
Click File Releases, Edit Release, set previous version to 'hidden'.

100
pmd/etc/generate_release.sh Executable file
View File

@ -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"

64
pmd/etc/update_version.sh Executable file
View File

@ -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-<version>.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 "^ <version>[0-9].*<" " <version>$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