Jasmine Core Maintainers Only
Follow the instructions in CONTRIBUTING.md
during development.
Please work on feature branches.
Please attempt to keep commits to master
small, but cohesive. If a feature is contained in a bunch of small commits (e.g., it has several wip commits or small work), please squash them when merging back to master
.
We attempt to stick to Semantic Versioning. Most of the time, development should be against a new minor version - fixing bugs and adding new features that are backwards compatible.
The current version lives in the file /package.json
. This version will be the version number that is currently released. When releasing a new version, update package.json
with the new version and grunt build:copyVersionToGem
to update the gem version number.
This version is used by both jasmine.js
and the jasmine-core
Ruby gem.
Note that Jasmine should only use the "patch" version number in the following cases:
- Changes related to packaging for a specific platform (npm, gem, or pip).
- Fixes for regressions.
When jasmine-core revs its major or minor version, the binding libraries should also rev to that version.
When ready to release - specs are all green and the stories are done:
- Update the release notes in
release_notes
- use the Anchorman gem to generate the markdown file and edit accordingly - Update the version in
package.json
to a release candidate - Update any links or top-level landing page for the Github Pages
- Build the standalone distribution with
grunt buildStandaloneDist
python setup.py register sdist upload
You will need pypi credentials to upload the egg.
- Copy version to the Ruby gem with
grunt build:copyVersionToGem
- NOTE: You will likely need to point to a local jasmine gem in order to run tests locally. Do not push this version of the Gemfile.
- NOTE: You will likely need to push a new jasmine gem with a dependent version right after this release.
- Push these changes to GitHub and verify that this SHA is green
rake release
- tags the repo with the version, builds thejasmine-core
gem, pushes the gem to Rubygems.org. In order to release you will have to ensure you have rubygems creds locally.
npm adduser
to save your credentials locallynpm publish .
to publish what's inpackage.json
Probably only need to do this when releasing a minor version, and not a patch version.
cp -R edge ${version}
to copy the current edge docs to the new version- Add a link to the new version in
index.html
- Visit the Releases page for Jasmine, find the tag just pushed.
- Paste in a link to the correct release notes for this release. The link should reference the blob and tag correctly, and the markdown file for the notes.
- If it is a pre-release, mark it as such.
- Attach the standalone zipfile
There should be a post to Pivotal Labs blog and a tweet to that link.