3.8 KiB
How to work on a Jasmine Release
Development
Jasmine Core Maintainers Only
Follow the instructions in CONTRIBUTING.md during development.
Git Rules
Please attempt to keep commits to main 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 pushing to main.
Version
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.
Release
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 - Run
npm run build. - Copy version to the Ruby gem with
grunt build:copyVersionToGem
Commit and push core changes
- Commit release notes and version changes (jasmine.js, version.rb, package.json)
- Push
- Wait for Travis to go green
Build standalone distribution
- Build the standalone distribution with
grunt buildStandaloneDist - This will generate
dist/jasmine-standalone-<version>.zip, which you will upload later (see "Finally" below).
Release the core Ruby gem
- NOTE: You will likely need to push a new jasmine gem with a dependent version right after this release. See below.
rake release- tags the repo with the version, builds thejasmine-coregem, pushes the gem to Rubygems.org. In order to release you will have to ensure you have rubygems creds locally.
Release the core Python egg
Install twine
python setup.py sdisttwine upload dist/jasmine-core-<version>.tar.gzYou will need pypi credentials to upload the egg.
Release the core NPM module
npm adduserto save your credentials locallynpm publish .to publish what's inpackage.json
Release the docs
Probably only need to do this when releasing a minor version, and not a patch version.
rake update_edge_jasminenpm run jsdocrake release[${version}]to copy the current edge docs to the new version- Commit and push.
Release the binding libraries
NPM
- Create release notes using Anchorman as above
- In
package.json, update both the package version and the jasmine-core dependency version - Commit and push.
- Wait for Travis to go green again.
grunt release. (Note: This will publish the package by runningnpm publish.)
Gem
- Create release notes using Anchorman as above
- Update the version number in
lib/jasmine/version.rb. - Update the jasmine-core dependency version in
jasmine.gemspec. - Commit and push.
- Wait for Travis to go green again.
rake release
Finally
For each of the above GitHub repos:
- Visit the releases page and find the tag just published.
- 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.
- For core, attach the standalone zipfile.