-
Notifications
You must be signed in to change notification settings - Fork 91
Home
Fabio Pelosin edited this page May 24, 2014
·
5 revisions
To release a gem the following actions must me performed:
- Ensure that the local checkout of Rainforest is in a clean state
- Bump the version of the gem (which should be in a dedicated file)
- Update the changelog
Note: The optimistic requirement in the CocoaPods gemspec should be updated as soon as the version of a GEM changes. This is done to ensure that the head of the Gem can be used for the development of CocoaPods without complications.
From the Rainforest dir run:
$ rake release[DIR_NAME]
This will perform the following actions:
- Check that the local checkout is on the master branch
- Check that a tag for the version doesn't exists
- Ensure that only one file other than the
CHANGELOG.md
and theGemfile.lock
has changes- Note: The
Gemfile.lock
should be changed only to take into account the new version of the gem.
- Note: The
- Check that the
CHANGELOG.md
file includes the version (## VERSION
format) - Confirm with the user the release version
The checks can be skipped with the SKIP_CHECKS
environment variable (don't do it!)
- Pull the repo (to ensure that it is up to date). If the pull fails the process is aborted.
- Execute the rake tasks
- Invoke the
pre_release
rake task in the repo of the gem which is being released if present (this is used by Xcodeproj for example) - Invoke the rake
build
task in the repo of the gem (this task is one of the bundler tasks) - Test the installation of the built gem package using the
gem install
command (ensures that the dependency requirements are satisfied by the gems available on RubyGems) - Commit, tag and push the release
- Push the gem
- Invoke the
post_release
rake task in the repo of the gem
After a couple of seconds the gem should be available for installation via the gem
command line tool.
- Always release the gems without dependencies first and proceed in this order up to CocoaPods.
- Always update each dependency requirement with a dedicated commit on CocoaPods.