Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2014
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.62 KB | None | 0 0
  1. [[!meta title="Baserock release process"]]
  2.  
  3. Baserock release process
  4. ========================
  5.  
  6. These are the steps to go through to make a Baserock release. The release
  7. process is a work in progress, so expect it to require a lot of improvement
  8. over time. Also, further tool support is needed.
  9.  
  10. Releases tend to involve uploading lots of data. As a rule of thumb, you should
  11. aim to be uploading the release images and artifacts the night before the date
  12. that the release is due.
  13.  
  14. Prerequisites for making a release
  15. ----------------------------------
  16.  
  17. > **Note**: Typically, only Baserock maintainers have enough access to complete
  18. > this process.
  19.  
  20. You will need:
  21.  
  22. * Push access to the `git.baserock.org` Trove.
  23. * Write access to the backing store for `download.baserock.org`.
  24. * A fresh `x86_64` (or `x86_32` at a push) VM to coordinate the release.
  25. This VM should have enough space to coordinate the release artifacts.
  26. In the past, 30G or more was required. Please refer to other guides
  27. for setting up such a VM.
  28.  
  29. If you are doing a GENIVI release, you will also need:
  30.  
  31. * An `x86` system capable of emulating ARM's `versatile-pb` platform.
  32.  
  33. You will also need access to:
  34.  
  35. * A local Trove synced with `git.baserock.org`.
  36. * An `x86_64` distributed build infrastructure.
  37. * An `x86_32` distributed build infrastructure.
  38. * An `armv7lhf` distributed build infrastructure.
  39. * Configuration for the above suitable for use with your coordination VM.
  40.  
  41. Configuration
  42. -------------
  43.  
  44. Ensure that `morph.conf` on your coordination VM is configured to use your
  45. internal Trove by setting `trove-id` and `trove-host` as appropriate.
  46.  
  47. Deliverables
  48. ------------
  49.  
  50. See `release.morph` in `definitions.git` for the systems we release.
  51. In addition to the system images and other files produced by
  52. `release.morph`, the release requires manually producing or updating
  53. the following:
  54.  
  55. * Release notes, on `wiki.baserock.org`.
  56. * Updated symlinks to "current" images and tarballs
  57.  
  58. For a GENIVI release, the following artifacts are produced:
  59.  
  60. * GENIVI baseline manifest and license manifest
  61. * GENIVI release notes
  62. * An updated version of the `run-built-arm-image.sh` script in
  63. `baserock:baserock/genivi-initial-setup`
  64.  
  65. Release steps
  66. -------------
  67.  
  68. You should do the release in a clean instance of the previous Baserock
  69. devel system release, preferably on x86 (for speed). This makes it
  70. possible for others to reproduce the release images you created.
  71.  
  72. * Create a new branch (`baserock/release/baserock-X.Y`) in
  73. `definitions.git`. This is the "release branch", and any changes
  74. made during the release will happen there, avoiding the need to
  75. freeze master while the release is happening.
  76. * Get the branch mirrored to your local Trove (push to
  77. `git.baserock.org`, promote on your local Trove to get it lorried
  78. quickly).
  79. * Run `scripts/release-build` to produce release artifacts. This
  80. script builds all the artifacts needed for the release (using
  81. distbuild, so they end up on your local Trove), and creates the
  82. release artifacts (all the images and tar archives etc).
  83. - See the `scripts/release-build.test.conf` sample configuration
  84. file and use that as a basis for your own.
  85. * Run `scripts/release-upload` to publish release artifacts.
  86. This copies build artifacts from your local Trove to
  87. `git.baserock.org`, and other files to `download.baserock.org`.
  88. After this script has finished successfully, Baserock users can
  89. start using the new release.
  90. - See the `scripts/release-upload.test.conf` sample configuration
  91. file and use that as a basis for your own.
  92. * Manually create the "current" symlinks pointing at the new release.
  93. (FIXME: The upload script should do this automatically, but that
  94. code hasn't been written yet.)
  95. * Tag the HEAD of the release branch with the new release
  96. (`baserock-X.Y`). Push the release branch, including tags (`git push
  97. --tags`).
  98. * Prepare or update release notes, wikis, and websites.
  99. - Drafting these can start early on, while building and uploading
  100. are running.
  101.  
  102. The upload script assumes that you have appropriate credentials to upload files to the
  103. servers using rsync. If a password is required, rsync will prompt for your
  104. password at that stage of the script. If you rely on SSH agent forwarding to
  105. provide access, and are leaving the release script running overnight, remember
  106. that the machine running your SSH agent must **also** remain running overnight!
  107.  
  108. GENIVI Baseline release steps
  109. -----------------------------
  110.  
  111. For the GENIVI Baseline systems there are several extra steps. Beware: these
  112. scripts are slow and can take several hours!
  113.  
  114. 1. Generate a manifest for each baseline system, using the `morph generate-manifest` command:
  115.  
  116. morph generate-manifest /src/cache/artifacts/*.genivi-baseline-system-armv7lhf-versatile-rootfs > \
  117. /src/release/genivi-baseline-system-armv7lhf-versatile-manifest.txt
  118. morph generate-manifest /src/cache/artifacts/*.genivi-baseline-system-x86_64-generic-rootfs > \
  119. /src/release/genivi-baseline-system-x86_64-generic-manifest.txt
  120.  
  121. > **NOTE**: You will need the rootfs artifacts because while
  122. > generate-manifest claims to operate from disk images, the code is not
  123. > in-sync with our current raw disk generator
  124.  
  125. 2. Generate a license manifest for each baseline system, using the
  126. `license-check` script in definitions.git:
  127.  
  128. scripts/licensecheck.sh genivi-baseline-system-armv7lhf-versatile > \
  129. /src/release/genivi-baseline-system-armv7lhf-versatile-license-manifest.txt
  130. scripts/licensecheck.sh genivi-baseline-system-x86_64-generic > \
  131. /src/release/genivi-baseline-system-x86_64-generic-license-manifest.txt
  132.  
  133. > **NOTE**: You will need the release workspace to run the licensecheck
  134. script
  135.  
  136. 3. Extract the kernel zImage file from the ARMv7lhf system, by loopback
  137. mounting it and copying the file out. (FIXME: there is an unmerged patch in
  138. morph.git branch baserock/richardipsum/write_kernel to make `morph deploy`
  139. handle this automatically).
  140.  
  141. 4. Write GENIVI release notes. These should summarise the changes relevant to
  142. developers of systems based on the Baserock GENIVI Baseline system, and link
  143. to the Baserock release notes. See
  144. <http://projects.genivi.org/GENIVI_Baselines/genivi-baserock/blog> for
  145. examples.
  146.  
  147. You'll need to upload these extra files to the download.baserock.org server
  148. manually; the script doesn't take care of this yet (see 'future plans', below).
  149.  
  150.  
  151. Announcing the release
  152. ----------------------
  153.  
  154. Once the `release-upload` script completes successfully:
  155.  
  156. 1. Update all pages on `wiki.baserock.org` that refer to the previous release
  157. number to the new release number.
  158. 2. Send release notes to baserock-announce@baserock.org and
  159. baserock-dev@baserock.org.
  160.  
  161. Announcing the GENIVI release
  162. -----------------------------
  163.  
  164. 1. Send announcement email to genivi-dev@mail.genivi.org and
  165. genivi-baserock@lists.genivi.org
  166. 2. Post release notes into blog at
  167. <http://projects.genivi.org/GENIVI_Baselines/genivi-baserock>.
  168. Currently Jonathan Maw (jonathanmaw), Pedro Alvarez (pedroalvaraz), Sam
  169. Thursfield (ssam) and Rob Taylor (robtaylor) have admin access to do this.
  170. WARNING: the 'preview' renderer will show you something quite different
  171. to the actual rendering after you've pressed 'post'.
  172. 3. Review wiki.baserock.org's GENIVI related how-tos.
  173.  
  174. Future goals
  175. ------------
  176.  
  177. Checksum everything we release, to guard against corruption at all stages of
  178. the release process.
  179.  
  180. Consider the bit-for-bit reproducibility of the release images, and how we can
  181. make it easy for those who want to reproduce the Baserock release images that
  182. are produced as part of this process.
  183.  
  184. Allow greater flexibility in what we release. Some of us think that
  185. Baserock's release process should, in future, be as follows: the build-system
  186. image is released every week (this image is capable of building any other
  187. Baserock image), other systems can optionally be released at the same time
  188. according either to schedule or need. For example, we can continue to release
  189. the GENIVI Baseline demo system every 6 weeks, following the GENIVI Baseline
  190. release process. We can release other example systems when they have received
  191. significant changes to merit a new release.
  192.  
  193. Automate GENIVI releases. Ideally, this should be done in a generic way,
  194. treating the GENIVI Baseline system as if it was one of many example Baserock
  195. systems which each had their own release requirements.
  196.  
  197. Ensure that this script is useful for projects derived from Baserock, as well
  198. as for the Baserock project itself.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement