Release Steps
Various documentation changes first (which should be done before the release is cut)
- update the download.page on the wiki
- replace the use of any project_new_version variables in the website documentation with project_version
- check the scalate_website/src/download.page and scalate_website/src/tool.page files are accurate for this release
- edit the scalate_website/src/metainf file and change the project_version and project_new_version values
- blog about the release by creating an entry in scalate_website/src/blog/releases
Cutting the release
-
NOTE make sure you are using a clone of your local git repository for doing the release! See below on the use of temporary local repo…
-
check your repo is clean and you are on master branch
-
until ScalaTest releases a version which works with SBT and Scala 2.8.0 you might have to comment/uncomment the snapshot version in the root pom.xml
-
prepare the release
mvn release:prepare -P release
-
perform the release
mvn release:perform -P release
-
open Nexus Staging and close the Staging release of scalate
-
now Promote the closed release
-
now you’ll need to tidy up your local repo (the real clone of github) and push changes back to github
git rebase --hard git push git push origin scalate-project-1.1
-
announce the release on the mailing list
Switching website generation to the last release branch
-
if the release is a major release then deploy the current website in branch scalate-1.1.x to scalate.github.io/scalate/version/1.1
-
create a branch for this new release if its a major release. Typically this will be a branch from master as you’ll have made some changes above to update the website to point to the new release etc. For example if you’ve just done 1.1 then do this…
git co scalate-project-1.1 -b scalate-1.1.x git push scalate-1.1.x origin
-
amend the last-release webgen CI build to use the new branch scalate-1.1.x to update the website. That lets us update the documentation for the current release using this branch while master can become new features which don’t make it to the public site yet - but are available to surf in the scalate.github.io/scalate/version/1.2-SNAPSHOT area of the site.
Using a temporary local repo
To avoid pushing to the remote repo in experimental attempts at releasing, you can clone your local repo…
git clone file:///foo/scalate scalate-release
You probably want to set this property too if you’re using git 1.6 or later to avoid your release prepare barfing…
git config receive.denycurrentbranch warn
then edit your ~/.m2/settings.xml file and add this…
<settings>
<profiles>
<profile>
<id>release</id>
<properties>
<release-altGitURL>scm:git:file:///foo/scalate</release-altGitURL>
</properties>
</profile>
</profiles>
then perform a release in this new scala-release directory. This will then push to your local repo, not the remote one.