PageRenderTime 7ms CodeModel.GetById 1ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/scalate-website/src/committers/release-guide.page

http://github.com/scalate/scalate
Visualforce Page | 122 lines | 85 code | 37 blank | 0 comment | 0 complexity | ea79b5a27ac3cd8692525b688191ee1b MD5 | raw file
  1---
  2title: Release Guide
  3in_menu: false
  4--- name:overview
  5
  6# Release Guide
  7How to create releases of Scalate
  8
  9--- name:content 
 10
 11# Release Steps
 12
 13Various documentation changes first (which should be done before the release is cut)
 14
 15* edit the **scalate\_website/src/main/scala/Website.scala** file and change the **project\_version** values
 16* blog about the release by creating an entry in **scalate\_website/src/blog/releases** 
 17* update the changelog.md file, copying and pasting the section the release highlights from the above blog post
 18
 19If the release is a major release then we need to freeze the current website at scalate.fusesource.org/versions/lastVersion
 20
 21* in the current last-release branch change the scalate-website/pom.xml and edit the "maven-scalate-plugin" section to list the correct remoteServerUrl to something like...
 22
 23{pygmentize:: xml}
 24<remoteServerUrl>dav:http://fusesource.com/forge/dav/\${forge-project-id}/versions/snapshot
 25<remoteServerUrl/>
 26{pygmentize}
 27
 28Cutting the release
 29
 30* check your repo is clean and you are on master branch
 31* check that we are using the latest versions of dependencies
 32
 33{pygmentize:: text}
 34mvn versions:use-next-releases
 35mvn versions:update-properties
 36{pygmentize}
 37
 38* then review the changes to pom.xml to check they all seem fine. You probably want to rollback the jetty changes to version 8.x, other than that it should be fine. Do a test run to check!
 39* Verify that the `src/main/resources/license-header.txt` file is still current.
 40* Check that all the source file license headers are in place:
 41
 42{pygmentize:: text}
 43mvn -P license license:check
 44mvn -P license license:format
 45{pygmentize}
 46
 47* then review the changes and check they all seem fine. You may need to add exclusions to the `maven-license-plugin`'s
 48configuration to ignore some files.
 49* prepare the release
 50
 51{pygmentize:: text}
 52mvn -P release release:prepare 
 53{pygmentize}
 54
 55* perform the release
 56
 57{pygmentize:: text}
 58mvn -P release release:perform 
 59{pygmentize}
 60
 61* open [Nexus Staging](http://repo.fusesource.com/nexus/index.html#staging) and close the Staging release of scalate
 62* now Promote the closed release
 63* now you'll need to tidy up your local repo and push changes back to github
 64
 65{pygmentize:: text}
 66git rebase --hard
 67git push --tags
 68{pygmentize}
 69  
 70* make sure scalate-website/ext/Website.scala has the latest version information.
 71* update the website (see below on making a branch)
 72* announce the release on the [mailing list](../community.html)
 73* drink beers!
 74
 75## Creating a branch for this release and website changes
 76
 77If this is a major release...
 78
 79* create a branch for this new release. For example if you've just done ${project_version} then do this...
 80
 81{pygmentize:: text}
 82git co scalate-project-${project_version} -b scalate-${project_version}.x
 83git push origin scalate-${project_version}.x 
 84{pygmentize}
 85
 86* check that this branch generates its website to the main scalate.fusesource.org location, not scalate.fusesource.org/versions/snapshot by updating the relevant line in the Rakefile to...
 87
 88      remote /forge/dav/#{project_id}
 89
 90* check that index.page and metainfo have at the correct release number
 91
 92* edit the [scalate last release VCS Root](http://ci.fusesource.com/teamcity/admin/editVcsRoot.html?cameFromUrl=%2Fteamcity%2Fadmin%2FeditBuildTypeVcsRoots.html%3FbuildTypeId%3Dbt119%26init%3D1&action=editVcsRoot&cameFromTitle=Edit+Build+Configuration&vcsRootId=45&editingScope=editBuildType%3Abt119) so that it uses the new branch you have just created **scalate-project-${project_version}**
 93* ensure that the master branch has its Rakefile to point to the snapshot area
 94
 95      remote /forge/dav/#{project_id}/versions/snapshot
 96
 97* ensure also that index.page has the new snapshot version number in it
 98
 99* kick off the TeamCity CI build for the [scalate last release](http://ci.fusesource.com/teamcity/viewType.html?buildTypeId=bt119&tab=buildTypeStatusDiv) project
100* check the new version appears on the [home page](http://scalate.fusesource.org/)
101* you might also want to check that the [central maven repo](http://repo1.maven.org/maven2/org/fusesource/scalate/scalate-core/${project_version}/) has sync'd before announcing
102
103What all this means is now that you should be able to amend the [website for the current release](http://scalate.fusesource.org/) using the **scalate-project-${project_version}** branch. You can also document new upcoming features for the next release which go into the **master** branch which should be auto-deployed to the [snapshot website](http://scalate.fusesource.org/versions/snapshot/index.html)
104
105
106## Update the Homebrew formula
107
108* clone the [scalate homebrew repo](http://github.com/scalate/homebrew) if you've not done so yet
109* hack the Library/Formula/scalate.rb file in the [usual homebrew way](http://wiki.github.com/mxcl/homebrew/formula-cookbook)
110  * zap the md5 from /usr/local/Library/Formula/scalate.rb 
111  * edit the version number in the formula
112  * run the following command
113     
114{pygmentize:: text}
115brew install -i scalate         
116{pygmentize}
117
118  * fill in the md5
119  * check the install worked
120  * copy the scalate.rb into your Library/Formula of your homebrew clone
121* push your changes to homebrew.git
122* create an issue [like this one](http://github.com/mxcl/homebrew/issues/issue/2023)