public
Description: JavaScript Application Framework - JS library only
Home | Edit | New

Releasing a SproutCore Gem

NOTE: The instructions on this page are useful only to developers who have been given permission to release gems on behalf of the SproutCore project.

Before you can do a release, you will need to get your machine configured.

After verifying that you are a SproutCore Project Admin at rubyforge, install the hoe rubygem:

sudo gem install hoe --include-dependencies

Then do the required rubyforge setup:

rubyforge setup
rubyforge config
rubyforge login # cache a cookie for further operations

Then install the sproutcore rubygem:

sudo gem install merb-core -v 0.9.4
sudo gem install sproutcore

Now clone sproutcore-buildtools and sproutcore-samples:

cd /path/to/work-directory
git clone git@github.com:sproutit/sproutcore-buildtools.git sproutcore-buildtools
git clone git@github.com:sproutit/sproutcore-samples.git sproutcore-samples

Next, obtain the submodules of sproutcore-buildtools and configure them to use the correct origin repository and the master branch:

cd /path/to/work-directory/sproutcore-buildtools
git submodule init
git submodule update
cd frameworks/sproutcore
git remote add origin git@github.com:sproutit/sproutcore.git
git checkout master
cd ../prototype
git remote add origin git@github.com:sproutit/sproutcore-prototype.git
git checkout master
cd ../../clients/sc_docs
git remote add origin git@github.com:sproutit/sproutcore-doctool.git
git checkout master
cd ../sc_test_runner
git remote add origin git@github.com:sproutit/sproutcore-testrunner.git
git checkout master

Finally, remove the (empty) prototype and sproutcore frameworks in sproutcore-samples:

cd /path/to/work-directory/sproutcore-samples
rm -R frameworks/prototype frameworks/sproutcore

Preparing for the Release

  • Merge any required changes into the sproutcore-buildtools or sproutcore projects, or any of the other projects (sc_docs, sc_test_runner, prototype, and sproutcore-samples).
  • Make sure you update the HISTORY and History.txt files in those projects to list any changes for the new release.
  • Make sure that all your code is committed in git, including any added files.
  • Make sure you’ve done a quick test of any affected areas.
  • Run all unit tests on all supported browsers to make sure they pass.

Doing the Release

Update the ruby source code to the latest version number:

cd /path/to/work-directory/sproutcore-buildtools
mate lib/sproutcore/version.rb # edit file in TextMate

Then, create the gem and deploy it locally (only):

cd /path/to/work-directory/sproutcore-buildtools
rake manifest:refresh
git commit -a -m 'Update support files for release 0.9.X' 
git push
rake local_deploy

You should now have the new gem deployed locally on your machine. Run the samples:

cd /path/to/work-directory/sproutcore-samples
sc-server

Do a quick check of the functionality for all of the demo apps to make sure none of your changes introduced any regressions. Depending on what code was changed, you may also need to try generating new apps, etc.

Once you have completed a quicklook, you can proceed with the actual deployment:

cd /path/to/work-directory/sproutcore-buildtools
rake release VERSION=0.9.X

You will need to enter the RubyForge password several times. Finally, you will need to tag sproutcore:

cd /path/to/work-directory/sproutcore-buildtools
git tag REL-0.9.X
git push --tags
cd frameworks/sproutcore
git tag REL-0.9.X
git push --tags

Announcing the Release

At this point you should have SproutCore deployed. You now need to notify everyone. The best thing is to do the following:

  • Prepare a blog entry that highlights the major points and includes the full list of changes for both the framework and the build tools (copied directly from the HISTORY files.) Post to the sproutcore.com blog.
  • Post an email to the sproutcore mailing list notifying everyone of the release, with a link to the blog entry. Begin the subject line with [ANN].
  • Update the topic on the IRC channel (you must be a channel admin to do so).
Last edited by erichocean, Sun Sep 21 15:37:22 -0700 2008
Home | Edit | New
Versions: