Changes between Version 4 and Version 5 of Obsolete/Development/ReleaseProcess
- Timestamp:
- Jul 2, 2014, 11:58:07 AM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Obsolete/Development/ReleaseProcess
v4 v5 8 8 As discussed in the 15th Quattor workshop, I detail here the tools and means for a Quattor release. This document should be kept up to date as the release procedure gets more automated. 9 9 10 For the client code (configuration modules, core libraries...), we do one release each 4-6 weeks. The "certification" process is manual, here is how it goes:10 We do one release approximately every two months. The "certification" process is partly automated, here is how it goes: 11 11 12 12 == Release branch == 13 13 14 When the time comes, the release manager (RM) creates a new branch in the main GitHub repository, on each repository that will be released. He ensures that the builds in the [https://jenkins1.ugent.be/view/Quattor Jenkins repository] pass. If they don't, he iterates with the authors or reverts the commits that break the tests. 14 A week before release date, the RM announces a merge freeze on all repositories, this means that no new features should be merged, only fixes for serious issues discovered in the current code-base. 15 16 The RM merges any pull-requests that need to be in the release. 17 18 If necessary, the release manager (RM) creates a new branch in the main GitHub repository, on each repository that will be released, however most repositories will be released from master. 19 20 The RM ensures that the builds in the [https://jenkins1.ugent.be/view/Quattor Jenkins repository] pass. If they don't, he iterates with the authors or reverts the commits that break the tests. 21 22 == Tools == 23 24 The [https://github.com/quattor/release release repository] contains the releaser.sh script for performing releases, this is now the preferred method of performing a Quattor release. 25 This builds packages, tags the GitHub repositories, collects and signs the RPMs and generates a signed YUM repository in a tar-ball. 26 27 At least one release candidate should be built before a final release, more often than not several will be required! 28 29 Release numbering is of the format YY.M.P where P is a point-release number, starting at 0. 30 Release candidates are suffixed with -rcN where N is the RC number. 31 For example: 32 * 14.5.0 (final) 33 * 14.6.0-rc1 (release candidate 1) 15 34 16 35 == Testing the release == 17 36 18 When all tests seem to pass, the RM creates all the packages and uploads them to some Yum repository. He will then update all templates in a sandbox, and deploy the site. 37 When all tests seem to pass, the RM uploads the repository tar-ball to the to yum.quattor.org and publishes it under /testing/. 38 39 The RM announces the availability of the RC and requests site testing. 19 40 20 41 '''NOTE:''' We don't have the manpower to produce test profiles for each component. Only the most important ones are being stressed ATM. … … 22 43 '''NOTE:''' We'd appreciate a number of virtual machines (or a test site in the cloud) to make even more thorough tests. 23 44 24 == Declaring victory ==25 26 When all the installations and component executions succeed, the RM executes the following command line on all the repositories:27 28 {{{29 #!sh30 $ mvn -q -DautoVersionSubmodules=true -Dgpg.useagent=true -Darguments=-Dgpg.useagent=true -B -DreleaseVersion=$VERSION clean release:prepare release:perform31 }}}32 33 45 == Uploading to the Git repositories == 34 46 35 The [https://github.com/quattor/release.git release repository] contains a POM file with all the artifacts that should be uploaded to the Yum repositories, with their releases. Just adjust it. 36 37 == Tools == 38 39 The `releasing.org` file is an useful checklist to keep track of which modules we have already validated. 40 47 The [https://github.com/quattor/release release repository] contains a POM file with all the artifacts that should be uploaded to the Yum repositories, with their releases. Just adjust it.