=================== Release Processes =================== This document describes the relative ordering and rough timeline for all of the steps related to preparing the release. Before Summit (after closing previous release) ============================================= 1. Set up the release schedule for the newly opened cycle by creating the required pages in openstack/releases. 2. Create the $series-relmgt-plan and $series-relmgt-tracking etherpads. 3. Use ``init-series`` to create stub deliverable files based on the contents of the previous release. Between Summit and Milestone-1 ============================== 1. Establish liaisons by having them update https://wiki.openstack.org/wiki/CrossProjectLiaisons with their contact information. 2. Email PTLs directly one time to explain the use of the "[release]" email tag on the openstack-dev list. 3. Encourage liaisons to ensure that their release model is set properly before the first milestone. 4. Start weekly countdown emails, sent on Thursday with information needed about the following week (deadlines, instructions, etc.). 5. The week before Milestone-1, include a reminder about completing the responses to community-wide goals in the countdown email. Milestone-1 =========== 1. Include the deadline for the milestone in the countdown emails but do not send extra reminders to liaisons. Missing the first milestone isn't important in terms of the release, so we want to encourage everyone to pay attention on their own. Between Milestone-1 and Milestone-2 =================================== 1. Follow up with PTLs and liaisons for projects that missed the first milestone. 2. The week before Milestone-2 include a reminder of the deadline in the countdown emails. Also remind release:independent and release:cycle-with-intermediary projects to prepare releases. Milestone-2 =========== n/a Between Milestone-2 and Milestone-3 =================================== 1. In the countdown email immediately after Milestone-2, include a reminder about the various freezes that happen around Milestone-3. 2. Two weeks before Milestone-3, include a reminder about the final library release freeze coming the week before Milestone-3. 3. Two weeks before Milestone-3, set up the gerrit ACLs for the yet-to-be-created stable/$series branches. (The timing for this is meant to postpone it until all projects that will be included in the current release are accepted but not put it off for so long that we have to rush to merge the changes in order to avoid having the release blocked.) 1. Update ACLs for refs/heads/stable/$series so that members of $project-release-branch can approve changes. The patch can be generated (for all release:cycle-with-milestones deliverables) with:: tox -e aclmanager -- acls /path/to/openstack-infra/project-config 2. Set the population of all $project-release-branch groups to the "Release Managers" group and $project-release. This can be done (for all release:cycle-with-milestones deliverables) by running ``aclmanager.py``:: tox -e aclmanager -- groups pre_release $user ($user being your Gerrit username) 3. Ask the release liaisons for the affected teams to update the contents of their $project-release groups. For new projects in some cases they will need to get the group created by Infra. 4. Notify the Infrastructure team to `generate &1 | tee unreleased.log 7. As soon as the last release candidate is tagged and the freeze period is entered, use ``propose-final-releases`` to tag the existing most recent release candidates as the final release for projects using the cycle-with-milestone model. 8. Ask liaisons and PTLs of milestone-based projects to review and +1 the final release proposal from the previous step so their approval is included in the metadata that goes onto the signed tag. 9. The week before final release test the release process using the openstack/release-test repository. Final Release ============= 1. Add documentation links on the series page on releases.o.o. See https://review.openstack.org/#/c/381005 for an example. 2. Mark series as released on releases.o.o, by updating doc/source/index.rst and doc/source/$series/index.rst. See https://review.openstack.org/#/c/381006 for an example. 3. Approve the final release patch created earlier. 4. Send release announcement email to ``openstack-announce@lists.openstack.org``, based on ``templates/final.txt``. 5. Reset gerrit ACLs 1. Update all of the $project-release-branch groups to have $project-stable-maint as members instead of "Release Managers" and $project-release. This can be done (for all release:cycle-with-milestones deliverables) by running ``aclmanager.py groups post_release $user`` ($user being your Gerrit username) 2. Remove the refs/heads/stable/$series from the project gerrit ACLs. This can be done by reverting the original ACL patch. 6. Update the default series name in ``openstack/releases/openstack_releases/defaults.py`` to use the new series name. 7. Declare ``openstack/releases`` unfrozen. Post-Final Release ================== 1. The week after the final release, process any late or blocked release requests for deliverables for any branch (treating the new series branch as stable). 2. The week after the final releases for milestone-based projects are tagged, use ``propose-final-releases --all`` to tag the existing most recent release candidates as the final release for projects using the cycle-trailing model. 3. Ask liaisons and PTLs of cycle-trailing projects to review and +1 the final release proposal from the previous step so their approval is included in the metadata that goes onto the signed tag. cycle-trailing Final Release ============================ 1. Two weeks after the final release for milestone-based projects, approve the final release patch created earlier. 2. Reset gerrit ACLs 1. Update all of the $project-release-branch for cycle-trailing groups to have $project-stable-maint as members instead of "Release Managers" and $project-release. This can be done (for all release:cycle-with-milestones deliverables) by running ``aclmanager.py groups post_release $user`` ($user being your Gerrit username) 2. Remove the refs/heads/stable/$series from the project gerrit ACLs. This can be done by reverting the original ACL patch. R+4 Branch Documentation Repos ============================== 1. The documentation team waits to branch their repositories until a few weeks after the final release. Be available to help with creating the branches if needed.