wiki:Release/Procedure

GeoExt Release Process

Let us say that for the release in question, x is the API Version and y the incremental release number, e.g. 0.5.

  1. Push all remaining open tickets out of the current release's milestone. A Release procedure must be started with all the milestone's tickets closed.
  2. A vote must be passed by the Steering Committee to start a new release procedure.
  3. Make a Trac query to see a list of all the tickets that were closed for this release's milestone.
    http://www.geoext.org/trac/geoext/query?milestone=x.y&resolution=fixed&order=component
    
  4. Make sure that no GitHub pull requests are open for this release's milestone, and see which were closed since the last milestone.
  5. Based on the lists from the previous two steps, create a wiki page for the new release. The page should be named Release/x.y/Notes. The release notes should contain a short description of added and modified features, with links to the respective documentation and tickets. Target audience is a GeoExt user.
  6. Create a new branch for both http://github.com/geoext/geoext and http://github.com/geoext/geoext-docsrc
      git branch x.y
      git checkout x.y
      git push upstream x.y
    
  7. In the new docsrc branch, set the release and version in conf.py and commit/push the change
  8. Release Candidate (RC) Cycle
    Let us say that for the RC in question, Z is the incremental release candidate number (starting with 1)

    1. Compile a Release Announcement. The announcement should be located at Release/x.y/Announce/RCZ and should include one of the following:
      • If this is the first RC (Z is 1): A link to the Release/x.y/Notes wiki, and a brief summary of its contents.
      • If this is not the first RC, then: A brief summary of all of the tickets that were fixed in the last RC.
        This should be a summary of the following trac query (where we let W be the previous RC number, i.e. Z-1):
        http://geoext.org/trac/geoext/query?status=closed&version=x.y+RCW&milestone=x.y&resolution=fixed&order=priority
        
    2. In the docsrc branch, add a link to the download (the file will be called GeoExt-x.y-rcZ.zip) and the release notes in downloads.rst and commit/push the change
    3. In the docsrc branch, set the release in conf.py and commit the change
    4. Set the "latest" release in http://svn.geoext.org/geoext/website/website-conf.cfg and commit the change
    5. Tag the release for both http://github.com/geoext/geoext and http://github.com/geoext/geoext-docsrc:
        git tag release-x.y-rcZ
        git push --tags
      
    6. Build the distribution (assuming you have python, sqlite and jstools installed:
        svn checkout http://svn.geoext.org/website GeoExt
        cd GeoExt
        python setup_website
        . bin/activate
        paver release=latest dist
      
  1. Upload GeoExt-x.y-rcZ.zip from your current directory to http://github.com/geoext/geoext/downloads
  2. Update the release website and add a new hosted version on http://api.geoext.org (Note: we do not create release candidate APIs. As soon as we have a release candidate, we populate http://api.geoext.org/x.y/):
      ssh admin@www.geoext.org
      sudo su - www-data
      cd /var/www/api.geoext.org/htdocs/
      wget "http://github.com/downloads/geoext/geoext/GeoExt-x.y-rcZ.zip"
      unzip GeoExt-x.y-rcZ.zip
      rm -Rf /var/www/www.geoext.org/htdocs/website/*
      cp -Rf GeoExt/docs/* /var/www/www.geoext.org/htdocs/website/
      mv GeoExt x.y
      rm GeoExt-x.y-rcZ.zip
    
  3. Create a new Version entry in TRAC called "x.y RCZ" for bug tracking

  4. Email the Release Announcement to the dev list, for the first release candidate also to the users list.

  5. Testing Cycle -- in which users and developers:
    • Report new tickets
      1. Milestone: x.y
      2. Version: x.y RCZ
    • Fix outstanding tickets:
      1. Commit only to trunk
      2. Set 'State' to 'Pullup' as they still need to be pulled up to the branch
      3. Do not mark as closed (i.e. leave them open)
    • Run all tests in both Firefox 3 and IE 7.
      • If any tests fail, return to Testing Cycle and report a new ticket.
      • If all tests pass, a committer may send a proposal email to the dev list calling for:
        • A new RC:
          1. The support of at least one other committer must be obtained.
          2. The committer chooses which patches to include in the the new RC or Final Release.
            These should be taken from the the results of the following trac query:
            http://geoext.org/trac/geoext/query?milestone=x.y&state=%7EPullup&order=priority
            
            1. Bring up each ticket's patch from trunk into the branch
            2. Change each ticket's 'State' field to 'Complete'
            3. Add brief summary of the change to the Release/x.y/Notes wiki
            4. Mark ticket closed
          3. Committer exits Testing Cycle, starts new Release Candidate Cycle
        • The Final Release:
          1. All tickets for the milestone must be closed in the previous RC and no new tickets opened in the current one.
          2. A successful voting round must pass the SteeringCommittee.
          3. Steering Committee member exits the Testing Cycle and Release Candidate Cycle and proceeds to the next step, Review the Release/x.y/Notes wiki...

  1. Review the Release/x.y/Notes wiki and make sure it contains important info from all the closed tickets for the Release x.y milestone:
    http://geoext.org/trac/geoext/query?group=component&milestone=x.y&resolution=fixed&order=priority
    
  2. In the docsrc branch, add a link to the download (the file will be named GeoExt-x.y.zip) and the release notes in downloads.rst and commit/push the change
  3. In the docsrc branch, set the release in conf.py and commit/push the change
  4. Set the "latest" release in http://svn.geoext.org/geoext/website/website-conf.cfg and commit the change
  5. For both http://github.com/geoext/geoext and http://github.com/geoext/geoext-docsrc, tag the release:
      git tag release-x.y
      git push --tags
    
  6. Build the distribution (assuming you have already checked out http://svn.geoext.org/website to GeoExt):
      cd GeoExt
      . bin/activate
      paver release=latest dist
    
  1. Upload GeoExt-x.y.zip from your current directory to http://github.com/geoext/geoext/downloads
    1. Update the release website and add a new hosted version on http://api.geoext.org:
        ssh admin@www.geoext.org
        sudo su - www-data
        cd /var/www/api.geoext.org/htdocs/
        wget "http://github.com/downloads/geoext/geoext/GeoExt-x.y.zip"
        unzip GeoExt-x.y.zip
        rm -Rf /var/www/www.geoext.org/htdocs/website/*
        cp -Rf GeoExt/docs/* /var/www/www.geoext.org/htdocs/website/
        mv GeoExt x.y
        rm GeoExt-x.y.zip
      
  2. Merge the docsrc branch into docsrc master:
      git checkout master
      git merge x.y
      git push upstream master
    
  3. Create a new Version entry in TRAC called "x.y + 1" for bug tracking.
  4. Set the milestone "x.y" as completed:
      ssh admin@www.geoext.org 
      sudo su - www-data
      trac-admin /srv/trac/projects/geoext/ milestone completed x.y now
    
  5. Email the dev and users lists and announce the release containing:
    • A link to the Release/x.y/Notes wiki
    • A summary of the major features and bug fixes for the release
  6. Write a 50 word summary of the release and send to news_item at osgeo dot org (see http://www.osgeo.org/content/news/submit_news.html)
Last modified 6 years ago Last modified on 12/15/11 18:03:03