Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2014
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.91 KB | None | 0 0
  1. --- guides/release-process.mdwn 2014-07-23 15:18:23.604115230 +0100
  2. +++ guides/release-process-new.mdwn 2014-07-23 15:45:28.062484615 +0100
  3. @@ -14,8 +14,8 @@
  4. Prerequisites for making a release
  5. ----------------------------------
  6.  
  7. -> **Note**: Typically, only Baserock maintainers have enough access to complete
  8. -> this process.
  9. +> **Note**: Typically, only Codethink employees have enough access to complete
  10. +> this process. This is to be considered a bug that needs fixing.
  11.  
  12. You will need:
  13.  
  14. @@ -25,12 +25,10 @@
  15. This VM should have enough space to coordinate the release artifacts.
  16. In the past, 30G or more was required. Please refer to other guides
  17. for setting up such a VM.
  18. -* Available host space for testing `x86` systems.
  19. -* A Wandboard for testing the `armv7lhf` systems.
  20.  
  21. If you are doing a GENIVI release, you will also need:
  22.  
  23. -* A powerful `x86` system capable of emulating ARM's `versatile-pb` platform.
  24. +* An `x86` system capable of emulating ARM's `versatile-pb` platform.
  25.  
  26. You will also need access to:
  27.  
  28. @@ -46,150 +44,67 @@
  29. Ensure that `morph.conf` on your coordination VM is configured to use your
  30. internal Trove by setting `trove-id` and `trove-host` as appropriate.
  31.  
  32. -Pre-release testing
  33. --------------------
  34. -
  35. -All Baserock releases should meet the following standard. Further, Baserock
  36. -should run continuous testing of the 'master' branch of definitions.git to
  37. -identify whenever 'master' is *not* in a releasable state, so that it can be
  38. -fixed.
  39. -
  40. -Systems:
  41. -
  42. -- All combinations of system and architecture which are part of the release
  43. - should boot successfully and all components should work as expected.
  44. -- These should be built for testing using the Trove and distributed build
  45. - infrastructure you are using for the release.
  46. -- An example command to build the `x86_64` development system would be:
  47. -
  48. - morph distbuild --verbose --controller-initiator-address=my-x86_64-controller devel-system-x86_64-generic
  49. -
  50. -- Alternatively you can distbuild all the systems in a cluster using
  51. - `scripts/distbuild-cluster.py`. See its `--help` for details.
  52. -
  53. -Definitions:
  54. -
  55. -- All chunk ref fields are pointing at exact commits (SHA1s), *not* named refs
  56. - (which could be changed any time after the release is built).
  57. -- All chunk commits that are referenced are part of a stable branch in that
  58. - chunk's repo. (This ensures that the commits will not be garbage collected,
  59. - as long as the stable branch ref is not force-updated).
  60. -
  61. -Morph:
  62. -
  63. -- Morph's NEWS file should be up to date.
  64. -- Morph's README file should be up to date.
  65. -- The ref for the morph chunk in the tools stratum is up to date.
  66. -
  67. -GENIVI Baseline pre-release testing
  68. ------------------------------------
  69. -
  70. -Weston and the Weston ivi-shell should work. See [[the GENIVI page|genivi]] for
  71. -instructions on how to run these.
  72. -
  73. Deliverables
  74. ------------
  75.  
  76. -The weeky release process aims to produce the following:
  77. +See `release.morph` in `definitions.git` for the systems we release.
  78. +In addition to the system images and other files produced by
  79. +`release.morph`, the release requires manually producing or updating
  80. +the following:
  81.  
  82. -- x86-64 devel raw image and chroot tarball
  83. -- x86-32 devel raw image and chroot tarball
  84. -- armv7lhf-wandboard devel rootfs tarball
  85. -- armv7lhf-wandboard devel kernel uImage
  86. +* Release notes, on `wiki.baserock.org`.
  87. +* Updated symlinks to "current" images and tarballs
  88.  
  89. For a GENIVI release, the following artifacts are produced:
  90.  
  91. -- x86-64 genivi baseline raw image
  92. -- armv7lhf-versatile genivi baseline raw image
  93. -- armv7lhf-versatile genivi baseline kernel zImage
  94. -- GENIVI baseline manifest and license manifest
  95. -- GENIVI release notes
  96. -- An updated version of the `run-built-arm-image.sh` script in
  97. - baserock:baserock/genivi-initial-setup
  98. -
  99. -Each release should also include:
  100. -
  101. -- Cached artifacts for every built system on the trove.baserock.org cache
  102. - server.
  103. -- Release notes
  104. -- Updated symlinks to "current" images and tarballs
  105. -- Updates to wiki.baserock.org quick-start and devel-with pages, and other
  106. - instruction pages
  107. +* GENIVI baseline manifest and license manifest
  108. +* GENIVI release notes
  109. +* An updated version of the `run-built-arm-image.sh` script in
  110. + `baserock:baserock/genivi-initial-setup`
  111.  
  112. Release steps
  113. -------------
  114.  
  115. -The release process begins by choosing a commit of definitions to tag as
  116. -a release, and pushing the tag.
  117. +You should do the release in a clean instance of the previous Baserock
  118. +devel system release, preferably on x86 (for speed). This makes it
  119. +possible for others to reproduce the release images you created.
  120. +
  121. +* Create a new branch (`baserock/release/baserock-X.Y`) in
  122. + `definitions.git`. This is the "release branch", and any changes
  123. + made during the release will happen there, avoiding the need to
  124. + freeze master while the release is happening.
  125. +* Get the branch mirrored to your local Trove (push to
  126. + `git.baserock.org`, promote on your local Trove to get it lorried
  127. + quickly).
  128. +* Run `scripts/release-build` to produce release artifacts. This
  129. + script builds all the artifacts needed for the release (using
  130. + distbuild, so they end up on your local Trove), and creates the
  131. + release artifacts (all the images and tar archives etc).
  132. + - See the `scripts/release-build.test.conf` sample configuration
  133. + file and use that as a basis for your own.
  134. +* Run `scripts/release-upload` to publish release artifacts.
  135. + This copies build artifacts from your local Trove to
  136. + `git.baserock.org`, and other files to `download.baserock.org`.
  137. + After this script has finished successfully, Baserock users can
  138. + start using the new release.
  139. + - See the `scripts/release-upload.test.conf` sample configuration
  140. + file and use that as a basis for your own.
  141. +* Manually create the "current" symlinks pointing at the new release.
  142. + (FIXME: The upload script should do this automatically, but that
  143. + code hasn't been written yet.)
  144. +* Tag the HEAD of the release branch with the new release
  145. + (`baserock-X.Y`). Push the release branch, including tags (`git push
  146. + --tags`).
  147. +* Prepare or update release notes, wikis, and websites.
  148. + - Drafting these can start early on, while building and uploading
  149. + are running.
  150.  
  151. -We used to tag morph.git with the corresponding Baserock version number, but we
  152. -no longer do this. Currently versions of Morph are identified by the commit
  153. -SHA1.
  154. -
  155. -1. Identify the commit of definitions.git that will be released. This should
  156. - already be built, tested and known to work on all architectures.
  157. -2. Update `release.morph` to contain the systems that are being released and no
  158. - others. Check that the configuration is correct. Ensure that for all systems
  159. - the system name and deployment name are identical.
  160. -3. Create an annotated release tag in definitions.git:
  161. -
  162. - git tag -a baserock-XX.XX -m "Baserock release XX.XX"
  163. -
  164. -4. Push your changes to definitions.git on git.baserock.org (again, remember to
  165. - push the new tag).
  166. -5. Cause the Trove on which you are building the release to update its copy of
  167. - definitions.git. There is currently no way to do this from the web frontend,
  168. - but you can log into the Trove and run this [promote.py script].
  169. -6. Write the release notes, and send them as a DRAFT for review to
  170. - `baserock-dev@baserock.org`. (You can leave this until the release script
  171. - runs, in fact).
  172. -
  173. -From here, the release process is automated by [scripts/do-release.py] (in
  174. -definitions.git).
  175. -
  176. -The script takes care of:
  177. -
  178. - - deploying the release images.
  179. - - fetching and archiving all build artifacts involved in building the
  180. - release.
  181. - - uploading the release images to a private directory on the
  182. - <http://download.baserock.org> server
  183. - - uploading the release artifacts to a private directory on the
  184. - <http://trove.baserock.org> Trove.
  185. - - moving the images and artifacts into publically readable locations once
  186. - everything has been uploaded
  187. -
  188. -> **Note**: Before running the do-release.py ensure that the `release` directory
  189. -> exists at `/src/release/`.
  190. -
  191. -You should run the script from a clean instance of the previous Baserock devel
  192. -system release, preferably on x86. This makes it easier for others to
  193. -reproduce the release images you created. You should *not* do a release from a
  194. -Baserock system that has local modifications, or that was built from commits
  195. -that are not part of stable branches in git.baserock.org. The resulting release
  196. -images would not be considered reproducible in this case, because the
  197. -environment used to deploy them cannot be reproduced.
  198. -
  199. -Read through the configuration section at the top of the script, and then run
  200. -it using: `python do-release.py`. The script is designed so that if the release
  201. -fails partway through, you can run the script again and it will resume from
  202. -where it left off. Ensure you have enough disk space for all deployed images:
  203. -the script required 30GB of space during the Baserock 14.23 release.
  204. -
  205. -The script assumes that you have appropriate credentials to upload files to the
  206. +The upload script assumes that you have appropriate credentials to upload files to the
  207. servers using rsync. If a password is required, rsync will prompt for your
  208. password at that stage of the script. If you rely on SSH agent forwarding to
  209. provide access, and are leaving the release script running overnight, remember
  210. that the machine running your SSH agent must **also** remain running overnight!
  211.  
  212. -> **Note**: This script is quite new and may need to be tweaked. Although it tries to
  213. -> some extent to be robust, if it aborts while creating or processing a file you
  214. -> should check that the file has been deleted before running the script again,
  215. -> to be doubly sure that there are no corrupt files in the release.
  216. -
  217. -[promote.py script]: https://bitbucket.org/richardipsum/baserock/src/f6503c0c68e5f21463faf82d2ccc3c214603ef91/promote.py?at=master
  218. -[scripts/do-release.py]: http://git.baserock.org/cgi-bin/cgit.cgi/baserock/baserock/definitions.git/plain/scripts/do-release.py
  219. -
  220. GENIVI Baseline release steps
  221. -----------------------------
  222.  
  223. @@ -236,15 +151,11 @@
  224. Announcing the release
  225. ----------------------
  226.  
  227. -The script completes when all images and artifacts are successfully uploaded to
  228. -public directories on the appropriate servers.
  229. -
  230. -Once it completes and the release is available, do the following:
  231. +Once the `release-upload` script completes successfully:
  232.  
  233. -1. Update the 'current' symlinks to point to the new versions of the files.
  234. -2. Update all pages on wiki.baserock.org that refer to the previous release
  235. +1. Update all pages on `wiki.baserock.org` that refer to the previous release
  236. number to the new release number.
  237. -3. Send release notes to baserock-announce@baserock.org and
  238. +2. Send release notes to baserock-announce@baserock.org and
  239. baserock-dev@baserock.org.
  240.  
  241. Announcing the GENIVI release
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement