From 5a73ed8dec3c1fbb9ec6b309dab22571eec58988 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 10 Sep 2010 10:30:44 -0400 Subject: [PATCH] Build: Initial commit for release automation. --- build/release/changelog-shell | 76 ++++++++ build/release/prepare-release | 329 ++++++++++++++++++++++++++++++++++ 2 files changed, 405 insertions(+) create mode 100644 build/release/changelog-shell create mode 100755 build/release/prepare-release diff --git a/build/release/changelog-shell b/build/release/changelog-shell new file mode 100644 index 000000000..f0a6fac23 --- /dev/null +++ b/build/release/changelog-shell @@ -0,0 +1,76 @@ + +This file contains a shell for the changelog, followed by a list of every commit for this release. + +Choose the appropriate line for the Summary section. + +Move all commit notes to the appropriate section. +- Each line should be in the following format: + [Fixed|Added]: The ticket description. ([Ticket link], [Commit link]) +- If the commit is not related to a bug or feature, e.g., whitepsace cleanup, remove it. +- If there is no ticket number, search Trac for the relevant ticket. + - If there is no ticket, create one (if needed), or leave just the commit link. + +Double check that "XXXX" does not appear anywhere in the changelog. + +Post this changelog at: CHANGELOG_URL + + + +DELETE EVERYTHING ABOVE THE FOLLOWING LINE +------------------------------------------ + += Summary = +This is the final release of jQuery UI 1.8. +-- OR -- +This is the second maintenance release for [[UI/Changelog/1.8|jQuery UI 1.8]]. + += Build = + += Core & Utilities = + +=== UI Core === + +=== Mouse === + +=== Widget Factory === + +=== Position === + += Interactions = + +=== Draggable === + +=== Droppable === + +=== Resizable === + +=== Selectable === + +=== Sortable === + += Widgets = + +=== Accordion === + +=== Autocomplete === + +=== Button === + +=== Datepicker === + +=== Dialog === + +=== Progressbar === + +=== Slider === + +=== Tabs === + += Effects = + +=== Individual effects === + += CSS Framework = + += Demos = + diff --git a/build/release/prepare-release b/build/release/prepare-release new file mode 100755 index 000000000..43245335b --- /dev/null +++ b/build/release/prepare-release @@ -0,0 +1,329 @@ +#!/bin/sh + +base_dir="`pwd`/jquery-ui-release" +repo_dir="$base_dir/jquery-ui" +release_dir="$repo_dir/build/release" + +github_repo="git@github.com:jquery/jquery-ui.git" +remote_cmd="ssh jqadmin@ui-dev.jquery.com /srv/dev.jqueryui.com/prepare-release" + + + +# +# Setup environment +# + +echo +echo "--------------------------" +echo "| SETTING UP ENVIRONMENT |" +echo "--------------------------" +echo + +mkdir $base_dir +cd $base_dir + +echo "Cloning repo from $github_repo..." +git clone $github_repo +cd $repo_dir + +echo +echo "Environment setup complete." +echo + + + +# +# Figure out which versions we're dealing with +# + +echo +echo "------------------------" +echo "| CALCULATING VERSIONS |" +echo "------------------------" +echo + +# NOTE: this will be different for minor and major releases +version=`$remote_cmd/get-latest-version` +major_minor=${version%.*} +point=${version##*.} +version_new="${major_minor}.$(($point + 1))" +version_next=`cat version.txt` + +echo "We are going from $version to $version_new." +echo "version.txt will be set to $version_next when complete." +echo "Press enter to continue, or ctrl+c to cancel." +read + + +# +# Generate shell for changelog +# + +echo +echo "------------------------" +echo "| GENERATING CHANGELOG |" +echo "------------------------" +echo + +echo "Creating shell for changelog..." +changelog_url="http:\/\/docs.jquery.com\/action\/edit\/UI\/Changelog\/$version_new" +`sed "s/CHANGELOG_URL/$changelog_url/" <$release_dir/changelog-shell >$base_dir/changelog` + + +# find all commits +echo "Adding commits to changelog..." +format_ticket='[http://dev.jqueryui.com/ticket/XXXX #XXXX]' +format_commit='[http://github.com/jquery/jquery-ui/commit/%H %h]' +format_full="* %s ($format_ticket, $format_commit)" +git whatchanged $version... --pretty=format:"$format_full" \ + -- ui themes demos build \ +| sed '/^:/ d' \ +| sed '/^$/ d' \ +| sed 's/\(Fixe[sd] #\)\([0-9][0-9]*\)\(.*\)\(XXXX #XXXX\)/Fixed #\2\3\2 #\2/' \ +| sort -f \ +>> $base_dir/changelog + +# find all fixed tickets +echo "Adding Trac tickets to changelog..." +$remote_cmd/generate-changelog >> $base_dir/changelog + +echo +echo "Changelog complete." +echo + + + +# +# Generate list of contributors +# + +echo +echo "--------------------------" +echo "| GATHERING CONTRIBUTORS |" +echo "--------------------------" +echo + + +# find all committers and authors +echo "Adding commiters and authors..." +format_contributors='%aN%n%cN' +git whatchanged $version... --pretty=format:"$format_contributors" \ +| sed '/^:/ d' \ +| sed '/^$/ d' \ +> $base_dir/thankyou + +# find all reporters and commenters from Trac +echo "Adding reporters and commenters from Trac..." +$remote_cmd/generate-contributors >> $base_dir/thankyou + +# sort names +echo "Sorting contributors..." +sort -f $base_dir/thankyou | uniq > $base_dir/_thankyou +mv $base_dir/_thankyou $base_dir/thankyou + +# find all people that were thanked +echo "Adding people thanked in commits..." +git whatchanged $version... \ +| grep -i thank \ +>> $base_dir/thankyou + +echo +echo "Find contributors from duplicates of fixed tickets." +echo "Press enter when done." +read + +echo +echo "Contributors list complete." +echo + + + +# +# Update version +# + +echo +echo "--------------------" +echo "| UPDATING VERSION |" +echo "--------------------" +echo + +echo "Updating version.txt to $version_new..." +echo $version_new > version.txt + +git commit -a -m "Tagging the $version_new release." +version_new_time=`git log -1 --pretty=format:"%ad"` +echo "Committed version.txt at $version_new_time..." + +echo "Tagging $version_new..." +git tag $version_new + +echo "Updating version.txt to $version_next..." +echo $version_next > version.txt + +git commit -a -m "Updating the master version to $version_next" +echo "Committed version.txt..." + +echo +echo "Version update complete." +echo + + + +# +# Push to GitHub +# + +echo +echo "---------------------" +echo "| PUSHING TO GITHUB |" +echo "---------------------" +echo + +echo "Please review the output and generated files as a sanity check." +echo "Press enter to continue or ctrl+c to abort." +read + +git push +git push --tags + +echo +echo "Push to GitHub complete." +echo + + + +# +# Update Trac +# + +echo +echo "-----------------" +echo "| UPDATING TRAC |" +echo "-----------------" +echo + +# TODO: automate this +# NOTE: this will be different for minor and major releases +milestone=`$remote_cmd/get-latest-milestone` + +# Create new milestrone and version +echo "$version_new was tagged at $version_new_time." +echo "Create and close $version_new Milestone with the above date and time." +echo "Create and close $version_new Version with the above date and time." +echo "Press enter when done." +read + +# Update milestone for all fixed tickets +echo "Change all $milestone fixed tickets to $version_new." +echo "Press enter when done." +read + +echo +echo "Trac updates complete." +echo + + + +# +# Build jQuery UI +# + +echo +echo "----------------------" +echo "| BUILDING JQUERY UI |" +echo "----------------------" +echo + +# check out the tagged version +echo "Checking out $version_new..." +git checkout $version_new + +# Update the link to the docs (never contains the patch version) +echo "Updating URL for API docs..." +sed -i -e "s/UI\/API\/\${release\.version}/UI\/API\/$major_minor/" build.xml >build.xml + +# Run the build +echo "Running build..." +cd build +ant + +echo +echo "Build complete." +echo + + + +# +# Upload zip to Google Code +# + +echo +echo "----------------------" +echo "| UPDATE GOOGLE CODE |" +echo "----------------------" +echo + +echo "Upload zip to Google Code." +echo " http://code.google.com/p/jquery-ui/downloads/entry" +echo " Summary: jQuery UI $version_new (Source, demos, docs, themes, tests) STABLE" +echo " Labels: Featured, Type-Source, OpSys-All" +echo "Modify the previous release to no longer say STABLE at the end." +echo "Remove the featured label from the previous release." +echo "Press enter when done." +read + +echo +echo "Google Code update complete." +echo + + + +# +# Update SVN +# + +echo +echo "----------------" +echo "| UPDATING SVN |" +echo "----------------" +echo + +cd $base_dir +mkdir svn +cd svn + +echo "Checking out SVN tags..." +svn co --depth immediates https://jquery-ui.googlecode.com/svn/tags +cd tags + +echo "Unzipping build into tags/$version_new..." +unzip $repo_dir/build/dist/jquery-ui-$version_new.zip +mv jquery-ui-$version_new $version_new + +echo "Adding files to SVN..." +svn add $version_new + +echo "Setting svn:mime-type..." +find $version_new -name \*.js -exec svn propset svn:mime-type text/javascript {} \; +find $version_new -name \*.css -exec svn propset svn:mime-type text/css {} \; +find $version_new -name \*.html -exec svn propset svn:mime-type text/html {} \; +find $version_new -name \*.png -exec svn propset svn:mime-type image/png {} \; +find $version_new -name \*.gif -exec svn propset svn:mime-type image/gif {} \; + +# TODO: commit +echo +echo "svn commit with the following message:" +echo "Created $version_new tag from http://jquery-ui.googlecode.com/files/jquery-ui-$version_new.zip" +echo "Press enter when done." +read + +echo +echo "SVN update complete." +echo + + + +# +# Generate themes +# -- 2.39.5