| 1 | | = !OpenLayers Release Procedure = |
| 2 | | |
| 3 | | ''Let us say that for the release in question, '''x''' is the API Version and '''y''' the incremental release number.'' |
| 4 | | |
| 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. |
| 6 | | 1. A [wiki:SteeringCommittee#DetailedProcess vote] must be passed by the SteeringCommittee to start a new release procedure. |
| 7 | | 1. Create a new branch |
| 8 | | {{{ |
| 9 | | svn copy /trunk/openlayers /branches/openlayers/x.y |
| 10 | | }}} |
| 11 | | 1. Make a Trac query to see a list of all the tickets that were closed for this release's milestone. |
| 12 | | {{{ |
| 13 | | http://trac.openlayers.org/query?milestone=x.y+Release&resolution=fixed&order=component |
| 14 | | }}} |
| 15 | | 1. Based on the list from the previous step, create a new ReleaseNotes wiki for the new release. The wiki should be named ''Release/x.y/Notes''. [[br]]''For a good example, see [wiki:Release/2.2/Notes]''[[br]][[br]] |
| 16 | | 1. '''Release Candidate (RC) Cycle''' [[br]]''Let us say that for the RC in question, '''Z''' is the incremental release candidate number (starting with 1)''[[br]][[br]] |
| 17 | | 1. Compile a Release Announcement. The announcement should be located at ''Release/x.y/Announce/RCZ'' and should include one of the following: |
| 18 | | * 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. |
| 19 | | * If this is ''not'' the first RC, then: A brief summary of all of the tickets that were fixed in the last RC.[[br]] ''This should be a summary of the following trac query (where we let W be the previous RC number, i.e. Z-1):'' |
| 20 | | {{{ |
| 21 | | http://trac.openlayers.org/query?status=closed&version=x.y+RCW&milestone=x.y+Release&resolution=fixed&order=priority |
| 22 | | }}} |
| 23 | | 1. Give the Release Announcement and the Release Candidate to the official MetaCartaOpenLayersRepresentative for inspection. [[br]]''(Until !MetaCarta transfers !OpenLayers copyright to a community host.)'' |
| 24 | | * If approval is not granted, the conflicting code must be removed. Do not release the RC. Restart entire release process from beginning.[[br]][[br]] |
| 25 | | 1. Replace all instances in the lib directory of "!http://svn.openlayers.org/trunk/openlayers/repository-license.txt" with "!http://svn.openlayers.org/trunk/openlayers/release-license.txt" [[br]][[br]] |
| 26 | | 1. Tag the release: |
| 27 | | {{{ |
| 28 | | svn cp http://svn.openlayers.org/branches/openlayers/x.y http://svn.openlayers.org/tags/openlayers/release-x.y-rcZ |
| 29 | | }}} |
| 30 | | 1. Export and Build the single file version: |
| 31 | | {{{ |
| 32 | | svn export http://svn.openlayers.org/tags/openlayers/release-x.y-rcZ OpenLayers-x.y-rcZ |
| 33 | | cd OpenLayers-x.y-rcZ/build |
| 34 | | ./build.sh |
| 35 | | }}} |
| 36 | | 1. Create a new API release directory on openlayers.org and install the build |
| 37 | | {{{ |
| 38 | | mkdir /www/openlayers/htdocs/api/x.y-rcZ |
| 39 | | cd .. |
| 40 | | cp build/OpenLayers.js /www/openlayers/htdocs/api/x.y-rcZ |
| 41 | | cp -a img/ /www/openlayers/htdocs/api/x.y-rcZ |
| 42 | | cp -a theme/ /www/openlayers/htdocs/api/x.y-rcZ |
| 43 | | }}} |
| 44 | | 1. Build the tarball and copy it up to openlayers.org |
| 45 | | {{{ |
| 46 | | # First remove all .pyc files from the directory. |
| 47 | | rm tools/*.pyc |
| 48 | | cd .. |
| 49 | | tar cvfz OpenLayers-x.y-rcZ.tar.gz OpenLayers-x.y-rcZ/ |
| 50 | | cp OpenLayers-x.y-rcZ.tar.gz /www/openlayers/htdocs/download |
| 51 | | }}} |
| 52 | | 1. Email the Release Announcement to the dev list[[br]][[br]] |
| 53 | | 1. '''Testing Cycle''' -- in which users and developers: |
| 54 | | * Report new tickets |
| 55 | | 1. Milestone: ''x.y Release'' |
| 56 | | 1. Version: ''x.y RCZ'' |
| 57 | | * Fix outstanding tickets: |
| 58 | | 1. Commit only to trunk |
| 59 | | 1. Mark keyword ''pullup'' as they still need to be pulled up to the branch |
| 60 | | 1. Do not mark as ''closed'' (i.e. leave them open) |
| 61 | | * Run all tests in both Firefox 1.5 and IE 6. |
| 62 | | * If any tests fail, return to '''Testing Cycle''' and report a new ticket. |
| 63 | | * If all tests pass, a committer may send a proposal email to the dev list calling for: |
| 64 | | * A new RC: |
| 65 | | 1. The support of at least one other committer must be obtained. |
| 66 | | 1. The committer chooses which patches to include in the the new RC or Final Release. [[br]] ''These should be taken from the the results of the following trac query:'' |
| 67 | | {{{ |
| 68 | | http://trac.openlayers.org/query?milestone=x.y+Release&keywords=%7Epullup&order=priority |
| 69 | | }}} |
| 70 | | 1. Bring up each ticket's patch from trunk into the branch |
| 71 | | 1. Remove ''pullup'' keyword from ticket |
| 72 | | 1. Add brief summary of the change to the ''Release/x.y/Notes'' wiki |
| 73 | | 1. Mark ticket ''closed'' |
| 74 | | 1. Committer exits '''Testing Cycle''', starts new '''Release Candidate Cycle''' |
| 75 | | * The Final Release: |
| 76 | | 1. All tickets for the milestone must be closed in the previous RC and no new tickets opened in the current one. |
| 77 | | 1. A successful [wiki:SteeringCommittee#DetailedProcess voting] round must pass the SteeringCommittee. |
| 78 | | 1. SteeringCommittee member exits the '''Testing Cycle''' and '''Release Candidate Cycle''' and proceeds to the next step, '''Install the new API code on openlayers.org'''[[br]][[br]] |
| 79 | | 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: |
| 80 | | {{{ |
| 81 | | http://trac.openlayers.org/query?group=component&milestone=x.y+Release&resolution=fixed&order=priority |
| 82 | | }}} |
| 83 | | 1. Give the Final Release Candidate to the official MetaCartaOpenLayersRepresentative for inspection. [[br]]''(Until !MetaCarta transfers !OpenLayers copyright to a community host.)'' |
| 84 | | * If approval is not granted, the conflicting code must be removed. Do not release the RC. Restart entire release process from beginning.[[br]][[br]] |
| 85 | | 1. Replace all instances in the lib directory of "!http://svn.openlayers.org/trunk/openlayers/repository-license.txt" with "!http://svn.openlayers.org/trunk/openlayers/release-license.txt" [[br]][[br]] |
| 86 | | 1. Tag the release: |
| 87 | | {{{ |
| 88 | | svn cp http://svn.openlayers.org/branches/openlayers/x.y http://svn.openlayers.org/tags/openlayers/release-x.y |
| 89 | | }}} |
| 90 | | 1. Export and Build the single file version: |
| 91 | | {{{ |
| 92 | | svn export http://svn.openlayers.org/tags/openlayers/release-x.y OpenLayers-x.y |
| 93 | | cd OpenLayers-x.y/build |
| 94 | | ./build.sh |
| 95 | | }}} |
| 96 | | 1. Create a new API release directory on openlayers.org and install the build |
| 97 | | {{{ |
| 98 | | mkdir /www/openlayers/htdocs/api/x.y |
| 99 | | cd .. |
| 100 | | cp build/OpenLayers.js /www/openlayers/htdocs/api/x.y |
| 101 | | cp -a img/ /www/openlayers/htdocs/api/x.y |
| 102 | | cp -a theme/ /www/openlayers/htdocs/api/x.y |
| 103 | | }}} |
| 104 | | 1. Build the tarball and copy it up to openlayers.org |
| 105 | | {{{ |
| 106 | | # First remove all .pyc files from the directory. |
| 107 | | rm tools/*.pyc |
| 108 | | cd .. |
| 109 | | tar cvfz OpenLayers-x.y.tar.gz OpenLayers-x.y/ |
| 110 | | cp OpenLayers-x.y.tar.gz /www/openlayers/htdocs/download |
| 111 | | }}} |
| 112 | | 1. Install the new API code on openlayers.org |
| 113 | | {{{ |
| 114 | | ln -sf /www/openlayers.org/htdocs/api/x.y/OpenLayers.js /www/openlayers/htdocs/api |
| 115 | | ln -sf /www/openlayers.org/htdocs/api/x.y/img /www/openlayers/htdocs/api |
| 116 | | ln -sf /www/openlayers.org/htdocs/api/x.y/theme /www/openlayers/htdocs/api |
| 117 | | ln -s /www/openlayers.org/htdocs/api/x.y/ /www/openlayers.org/htdocs/api/x/ |
| 118 | | }}} |
| 119 | | 1. Update API documentation -- This process still needs to be flushed out[[br]][[br]] |
| 120 | | 1. Email the dev and users lists and announce the release containing: |
| 121 | | * A link to the ''Release/x.y/Notes'' wiki |
| 122 | | * A summary of the major features and bug fixes for the release |
| | 1 | see [wiki:Release/Procedure] |