This page last changed on Nov 18, 2008 by dcameron.

The process of producing a new stable release of CruiseControl.NET is as follows (note that some steps require non-default permissions):

  1. Choose the release number "x.y". In most cases, x will remain the same and y will increase by 1 from the previous release.
  2. Rename the release in Jira to be a valid release name (requires ccnet_administrator group membership on Jira)
    1. "Administer Project"
    2. "Manage Versions"
    3. "Edit Details" on "Next"
    4. Set the version number to "x.y".
    5. Set the description to "CCNet x.y Release"
    6. Set the release date to today's date.
  3. Add a new release "Next"
    1. "Add Version"
      1. Name = "Next"
      2. Description = "Issues that will be resolved in the next release"
      3. Schedule = "x.y" (read the note in JIRA to see why this works)
  4. Move the open Jira issues from the new version number to "Next":
    1. "Browse Project"
    2. "Road Map"
    3. "All Versions"
    4. "x.y"
    5. Use the filters in the left bar to select issues with "Open", "In Progress" or "Reopened" status
    6. Select "Bulk change all n issues"
    7. Select the checkbox in the table header
    8. Press the "Next ->" button
    9. Select "Edit issues"
    10. Press the "Next ->" button
    11. Check "Change Fix Version/s:" and choose release "Next".
    12. Press the "Next ->" button.
    13. Press the "Confirm" button.
  5. Move any resolved Jira issues from non-release and non-"Next" releases (e.g., "Soon", "Medium Term") to the new version number:
    1. "Browse Project"
    2. "Road Map"
    3. "All Versions"
    4. Find any release names that have non-"UNRESOLVED" entries and click on those release names (one at a time, of course):
      1. Select "Bulk change all n issues"
      2. Select the checkbox in the table header
      3. Press the "Next ->" button
      4. Select "Edit issues"
      5. Press the "Next ->" button
      6. Check "Change Fix Version/s:" and choose release "x.y".
      7. Press the "Next ->" button.
      8. Press the "Confirm" button.
  6. Create new release notes using the CCNet Jira Release Notes generator and the new version number.
  7. Add a new page to Confluence (child of Download) to contain generated release notes.
    1. Go to http://confluence.public.thoughtworks.org/display/CCNET/Download
    2. Click on "Add Child Page"
    3. Set the name to "CCNet x.y Release Notes"
    4. Paste in the text-version of the release notes.
    5. Massage it into shape:
      1. Wikify the headings: "** X" -> "h4. X"
      2. Fix up the Jira-entry names: " * [X] Y" -> "* X Y"
      3. Add to the top:
        h2. Highlights of the CCNet x.y release
        
        h4. ...title...
        
        ...description...
        
        h4. ...title...
        
        ...description...
        
        ...
        
        h2. Upgrading to CCNet x.y
        
        {warning:title=...synopsis...}
        ...whatever breaking changes there are in release x.y...
        {warning}
        {note:title=Upgrading from a version before x.y-1?}
        See the release notes for the [CCNet x.y-1 release|CCNet x.y-1 Release Notes].
        {note}
        
        h2. Release Notes - CruiseControl .NET - Version x.y
        
        This is a list of [Jira Issues resolved by this release|_the Release Notes URL from ???_] :
        
      4. Add some highlights.
      5. Note any breaking changes.
  8. Update version number in the ccnet.nsi and cctray.nsi installer files.
    1. !define PRODUCT_VERSION "x.y"
  9. Update the copyright year:
    1. Update the "AssemblyCopyrightAttribute" value in the /ccnet.build file's "createAssemblyInfo" task:
      1. <attribute type="AssemblyCopyrightAttribute" value="Copyright © yyyy ThoughtWorks Inc." />
    2. Update the "AssemblyCopyrightAttribute" value in the /project/CommonAssemblyInfo.cs file:
      1. [assembly: AssemblyCopyrightAttribute("Copyright © yyyy ThoughtWorks Inc.")]
  10. Update the CruiseControl.NET Live version number for CCNet by editting the ccnet.config file.
    1. "svn checkout https://ccnet.svn.sourceforge.net/svnroot/ccnet/environments"
    2. Change the <prefix> value in the <labeller> element to "x.y.0".
    3. Change the <artifactDirectory> value to "e:\download-area\CCNet-Builds_x_.y"
    4. Copy the history files from the previous release to the new release's folder.
  11. Export Confluence space as Html. Extract the exported zip into your local ccnet\docs folder, and then check the modified Html files into SVN. This way the next CCNetLive build will package the latest documentation from Confluence.
    1. Choose "HTML Output"
    2. De-select "Include comments".
    3. Make sure all pages are selected.
    4. Press the "Export" button and wait for the file to download.
    5. Save the resulting "CCNET-yyyymmdd-hh_mm_ss.zip" file.
    6. Delete all files (but not folders) in your "/doc" folder.
    7. Unzip the export ZIP file into your "/doc" folder.
    8. Ensure than all the line-end sequences in the text (.css, .html, and .xsl) files are CRLF if you're using a Windows system, or LF if Unix. Confluence runs on a Unix system, so they are likely to be LF in the export file. Consider using a tool like ToFroWin CR/LF converter (from http://sysd.org/stas/node/34) or the unix2dos and dos2unix commands to do so.
    9. Add any new files to the Subversion repository:
      1. svn add filename
      2. If the file is a text file:
        1. svn propset svn:eol native
        2. svn propset svn:keywords "Author Date Id Revision"
    10. Delete any obsolete files and folders:
      1. svn status /doc
      2. Find all items marked with a "!" (i.e., missing items)
      3. svn delete /doc/item1 /doc/item2 ... /doc/itemn
    11. svn commit
  12. Tag all source with the new version number under url https://ccnet.svn.sourceforge.net/svnroot/ccnet/tags:
    1. svn copy https://ccnet.svn.sourceforge.net/svnroot/ccnet/trunk https://ccnet.svn.sourceforge.net/svnroot/ccnet/tags/ccnet_x_y_final -m "Tag source for CCNet x.y"
  13. Create a release branch with the new version number under url https://ccnet.svn.sourceforge.net/svnroot/ccnet/branches:
    1. svn copy https://ccnet.svn.sourceforge.net/svnroot/ccnet/trunk https://ccnet.svn.sourceforge.net/svnroot/ccnet/branches/RB_x_y -m "Build release branch for CCNet x.y"
  14. Wait for CCNetLive to run a successful build.
  15. Download the four source and binary distribution files from CCNetLive that contain the newly packaged documentation
  16. Upload the source and binary distributions to SourceForge and go through the SourceForge release process. Rename the distribution files to include the version number! (Distributions with the same filenames can cause problems for SourceForge mirrors).
    1. See the SourceForge "Offering Files for Download" page for a list of options and instructions. For this example, we will use the SFTP option using Putty's psftp:
    2. Upload the files:
      1. Open psftp.
      2. "open frs.sourceforge.net"
      3. "cd uploads"
      4. "lcd local files directory"
      5. "mput CruiseControl.NET-*"
      6. "quit"
    3. Create the release and associate the files with it:
      1. Login to the SourceForge.net website.
      2. Select the project to administer from the My Projects listing on the My Page.
      3. Select File Releases from the Admin pulldown. If you don't have an Admin pulldown, you don't have the necessary privileges to continue the process.
      4. Click on the Add Release link next to the "CruiseControl.NET Releases" Package Name.
      5. Enter the release name for the release into the New release name: field (i.e., "CruiseControl.NET x.y") and click the Create This Release button.
      6. Paste the Change Log and Release notes for the release, in plain text format, from the Release Notes page you created above.
      7. Check the checkbox next to the filename of each file to be added to the release in Section 2 of the form, and click on the Add Files and/or Refresh View button
      8. Go to Step 3 of the form, modifying the value in each field for each file, as necessary. Click on the 'Update/Refresh' button after each change to a file.
  17. Add news of the release on SourceForge and the Confluence news blog.
    1. SourceForge:
      1. Login to the SourceForge.net website.
      2. Select the project to administer from the My Projects listing on the My Page.
      3. Select News from the Admin pulldown. If you don't have an Admin pulldown, you don't have the necessary privileges to continue the process.
      4. Click on the Submit link near the top of the list.
      5. Fill in the fields and submit the news item.
    2. Confluence:
      1. Login to Confluence
      2. Click on one of the date lines from the previous release announcements. You should arrive at a "News form <some date>" page.
      3. There is a row of tabs near the top of this page. To the right of that row is an "Add News" button. Click on the button.
      4. Enter "CruiseControl.NET x.y Released" as the headline.
      5. Enter wiki markup similar to the following for the body:
        * Please see the [release notes|CCNet 1.4.1 Release Notes].
        * Download it now from [SourceForge|http://sourceforge.net/project/showfiles.php?group_id=71179&package_id=83198&release_id=641041].
        
        CCNet 1.4.1 is the equivalent to build 1.4.1.3795 from [ccnetlive|http://ccnetlive.thoughtworks.com/].
  18. Email the CCNet users list to notify the users that the new release is ready.
  19. Set the currently released version to "Released" on the Jira. (requires ccnet_administrator group membership on Jira)
    1. "Administer Project"
    2. "Manage Versions"
    3. "Release" on "x.y"
    4. Set the release date to today's date.
  20. Upgrade the version that ccnetlive is running.
Document generated by Confluence on Mar 14, 2009 02:55