\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13827}{}\doxysection{Development}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13827}
\+\_\+\+\_\+\+\_\+\+Jasmine Core Maintainers Only\+\_\+\+\_\+\+\_\+

Follow the instructions in {\ttfamily CONTRIBUTING.\+md} during development.\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13828}{}\doxysubsection{Git Rules}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13828}
Please attempt to keep commits to {\ttfamily 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 {\ttfamily main}.\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13829}{}\doxysubsection{Version}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13829}
We attempt to stick to \href{http://semver.org/}{\texttt{ 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 {\ttfamily /package.json}. This version will be the version number that is currently released. When releasing a new version, update {\ttfamily package.\+json} with the new version and {\ttfamily grunt build\+:copy\+Version\+To\+Gem} to update the gem version number.

This version is used by both {\ttfamily jasmine.\+js} and the {\ttfamily jasmine-\/core} Ruby gem.

Note that Jasmine should only use the \char`\"{}patch\char`\"{} version number in the following cases\+:


\begin{DoxyItemize}
\item Changes related to packaging for a specific platform (npm, gem, or pip).
\item Fixes for regressions.
\end{DoxyItemize}

When jasmine-\/core revs its major or minor version, the binding libraries should also rev to that version.\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13830}{}\doxysection{Release}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13830}
When ready to release -\/ specs are all green and the stories are done\+:


\begin{DoxyEnumerate}
\item Update the release notes in {\ttfamily release\+\_\+notes} -\/ use the Anchorman gem to generate the markdown file and edit accordingly
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item Update the version in {\ttfamily package.\+json} to a release candidate
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item Update any links or top-\/level landing page for the Github Pages
\end{DoxyEnumerate}\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13831}{}\doxysubsection{Build standalone distribution}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13831}

\begin{DoxyEnumerate}
\item Build the standalone distribution with {\ttfamily grunt build\+Standalone\+Dist}
\end{DoxyEnumerate}\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13832}{}\doxysubsection{Release the Python egg}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13832}
Install \href{https://github.com/pypa/twine}{\texttt{ twine}}


\begin{DoxyEnumerate}
\item {\ttfamily python setup.\+py sdist}
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item {\ttfamily twine upload dist/jasmine-\/core-\/$<$version$>$.tar.\+gz} You will need pypi credentials to upload the egg.
\end{DoxyEnumerate}\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13833}{}\doxysubsection{Release the Ruby gem}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13833}

\begin{DoxyEnumerate}
\item Copy version to the Ruby gem with {\ttfamily grunt build\+:copy\+Version\+To\+Gem}
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item {\bfseries{NOTE}}\+: You will likely need to point to a local jasmine gem in order to run tests locally. {\itshape Do not} push this version of the Gemfile.
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item {\bfseries{NOTE}}\+: You will likely need to push a new jasmine gem with a dependent version right after this release.
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item Push these changes to Git\+Hub and verify that this SHA is green
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item {\ttfamily rake release} -\/ tags the repo with the version, builds the {\ttfamily jasmine-\/core} gem, pushes the gem to Rubygems.\+org. In order to release you will have to ensure you have rubygems creds locally.
\end{DoxyEnumerate}\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13834}{}\doxysubsection{Release the NPM}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13834}

\begin{DoxyEnumerate}
\item {\ttfamily npm adduser} to save your credentials locally
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item {\ttfamily npm publish .} to publish what\textquotesingle{}s in {\ttfamily package.\+json}
\end{DoxyEnumerate}\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13835}{}\doxysubsection{Release the docs}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13835}
Probably only need to do this when releasing a minor version, and not a patch version.


\begin{DoxyEnumerate}
\item {\ttfamily cp -\/R edge \$\{version\}} to copy the current edge docs to the new version
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item Add a link to the new version in {\ttfamily index.\+html}
\end{DoxyEnumerate}\hypertarget{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13836}{}\doxysubsection{Finally}\label{md_sfcode_node_modules_jasmine_core_RELEASE_autotoc_md13836}

\begin{DoxyEnumerate}
\item Visit the \href{https://github.com/jasmine/jasmine/releases}{\texttt{ Releases page for Jasmine}}, find the tag just pushed.
\begin{DoxyEnumerate}
\item 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.
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item If it is a pre-\/release, mark it as such.
\end{DoxyEnumerate}
\begin{DoxyEnumerate}
\item Attach the standalone zipfile
\end{DoxyEnumerate}
\end{DoxyEnumerate}

There should be a post to Pivotal Labs blog and a tweet to that link. 