diff options
Diffstat (limited to 'docs/release-process.md')
| -rw-r--r-- | docs/release-process.md | 194 |
1 files changed, 184 insertions, 10 deletions
diff --git a/docs/release-process.md b/docs/release-process.md index 22c2fd19..f71a4110 100644 --- a/docs/release-process.md +++ b/docs/release-process.md | |||
| @@ -5,6 +5,37 @@ related topics and flows. | |||
| 5 | 5 | ||
| 6 | [TOC] | 6 | [TOC] |
| 7 | 7 | ||
| 8 | ## Schedule | ||
| 9 | |||
| 10 | There is no specific schedule for when releases are made. | ||
| 11 | Usually it's more along the lines of "enough minor changes have been merged", | ||
| 12 | or "there's a known issue the maintainers know should get fixed". | ||
| 13 | If you find a fix has been merged for an issue important to you, but hasn't been | ||
| 14 | released after a week or so, feel free to [contact] us to request a new release. | ||
| 15 | |||
| 16 | ### Release Freezes {#freeze} | ||
| 17 | |||
| 18 | We try to observe a regular schedule for when **not** to release. | ||
| 19 | If something goes wrong, staff need to be active in order to respond quickly & | ||
| 20 | effectively. | ||
| 21 | We also don't want to disrupt non-Google organizations if possible. | ||
| 22 | |||
| 23 | We generally follow the rules: | ||
| 24 | |||
| 25 | * Release during Mon - Thu, 9:00 - 14:00 [US PT] | ||
| 26 | * Avoid holidays | ||
| 27 | * All regular [US holidays] | ||
| 28 | * Large international ones if possible | ||
| 29 | * All the various [New Years] | ||
| 30 | * Jan 1 in Gregorian calendar is the most obvious | ||
| 31 | * Check for large Lunar New Years too | ||
| 32 | * Follow the normal [Google production freeze schedule] | ||
| 33 | |||
| 34 | [US holidays]: https://en.wikipedia.org/wiki/Federal_holidays_in_the_United_States | ||
| 35 | [US PT]: https://en.wikipedia.org/wiki/Pacific_Time_Zone | ||
| 36 | [New Years]: https://en.wikipedia.org/wiki/New_Year | ||
| 37 | [Google production freeze schedule]: http://goto.google.com/prod-freeze | ||
| 38 | |||
| 8 | ## Launcher script | 39 | ## Launcher script |
| 9 | 40 | ||
| 10 | The main repo script serves as a standalone program and is often referred to as | 41 | The main repo script serves as a standalone program and is often referred to as |
| @@ -49,11 +80,12 @@ control how repo finds updates: | |||
| 49 | 80 | ||
| 50 | * `--repo-url`: This tells repo where to clone the full repo project itself. | 81 | * `--repo-url`: This tells repo where to clone the full repo project itself. |
| 51 | It defaults to the official project (`REPO_URL` in the launcher script). | 82 | It defaults to the official project (`REPO_URL` in the launcher script). |
| 52 | * `--repo-branch`: This tells repo which branch to use for the full project. | 83 | * `--repo-rev`: This tells repo which branch to use for the full project. |
| 53 | It defaults to the `stable` branch (`REPO_REV` in the launcher script). | 84 | It defaults to the `stable` branch (`REPO_REV` in the launcher script). |
| 54 | 85 | ||
| 55 | Whenever `repo sync` is run, repo will check to see if an update is available. | 86 | Whenever `repo sync` is run, repo will, once every 24 hours, see if an update |
| 56 | It fetches the latest repo-branch from the repo-url. | 87 | is available. |
| 88 | It fetches the latest repo-rev from the repo-url. | ||
| 57 | Then it verifies that the latest commit in the branch has a valid signed tag | 89 | Then it verifies that the latest commit in the branch has a valid signed tag |
| 58 | using `git tag -v` (which uses gpg). | 90 | using `git tag -v` (which uses gpg). |
| 59 | If the tag is valid, then repo will update its internal checkout to it. | 91 | If the tag is valid, then repo will update its internal checkout to it. |
| @@ -64,9 +96,14 @@ If that tag is valid, then repo will warn and use that commit instead. | |||
| 64 | 96 | ||
| 65 | If that tag cannot be verified, it gives up and forces the user to resolve. | 97 | If that tag cannot be verified, it gives up and forces the user to resolve. |
| 66 | 98 | ||
| 99 | ### Force an update | ||
| 100 | |||
| 101 | The `repo selfupdate` command can be used to force an immediate update. | ||
| 102 | It is not subject to the 24 hour limitation. | ||
| 103 | |||
| 67 | ## Branch management | 104 | ## Branch management |
| 68 | 105 | ||
| 69 | All development happens on the `master` branch and should generally be stable. | 106 | All development happens on the `main` branch and should generally be stable. |
| 70 | 107 | ||
| 71 | Since the repo launcher defaults to tracking the `stable` branch, it is not | 108 | Since the repo launcher defaults to tracking the `stable` branch, it is not |
| 72 | normally updated until a new release is available. | 109 | normally updated until a new release is available. |
| @@ -81,7 +118,7 @@ For example, when `stable` moves from `v1.10.x` to `v1.11.x`, then the `maint` | |||
| 81 | branch will be updated from `v1.9.x` to `v1.10.x`. | 118 | branch will be updated from `v1.9.x` to `v1.10.x`. |
| 82 | 119 | ||
| 83 | We don't have parallel release branches/series. | 120 | We don't have parallel release branches/series. |
| 84 | Typically all tags are made against the `master` branch and then pushed to the | 121 | Typically all tags are made against the `main` branch and then pushed to the |
| 85 | `stable` branch to make it available to the rest of the world. | 122 | `stable` branch to make it available to the rest of the world. |
| 86 | Since repo doesn't typically see a lot of changes, this tends to be OK. | 123 | Since repo doesn't typically see a lot of changes, this tends to be OK. |
| 87 | 124 | ||
| @@ -89,10 +126,10 @@ Since repo doesn't typically see a lot of changes, this tends to be OK. | |||
| 89 | 126 | ||
| 90 | When you want to create a new release, you'll need to select a good version and | 127 | When you want to create a new release, you'll need to select a good version and |
| 91 | create a signed tag using a key registered in repo itself. | 128 | create a signed tag using a key registered in repo itself. |
| 92 | Typically we just tag the latest version of the `master` branch. | 129 | Typically we just tag the latest version of the `main` branch. |
| 93 | The tag could be pushed now, but it won't be used by clients normally (since the | 130 | The tag could be pushed now, but it won't be used by clients normally (since the |
| 94 | default `repo-branch` setting is `stable`). | 131 | default `repo-rev` setting is `stable`). |
| 95 | This would allow some early testing on systems who explicitly select `master`. | 132 | This would allow some early testing on systems who explicitly select `main`. |
| 96 | 133 | ||
| 97 | ### Creating a signed tag | 134 | ### Creating a signed tag |
| 98 | 135 | ||
| @@ -113,7 +150,7 @@ $ export GNUPGHOME=~/.gnupg/repo/ | |||
| 113 | $ gpg -K | 150 | $ gpg -K |
| 114 | 151 | ||
| 115 | # Pick whatever branch or commit you want to tag. | 152 | # Pick whatever branch or commit you want to tag. |
| 116 | $ r=master | 153 | $ r=main |
| 117 | 154 | ||
| 118 | # Pick the new version. | 155 | # Pick the new version. |
| 119 | $ t=1.12.10 | 156 | $ t=1.12.10 |
| @@ -161,7 +198,144 @@ You can create a short changelog using the command: | |||
| 161 | $ git log --format="%h (%aN) %s" --no-merges origin/stable..$r | 198 | $ git log --format="%h (%aN) %s" --no-merges origin/stable..$r |
| 162 | ``` | 199 | ``` |
| 163 | 200 | ||
| 164 | 201 | ## Project References | |
| 202 | |||
| 203 | Here's a table showing the relationship of major tools, their EOL dates, and | ||
| 204 | their status in Ubuntu & Debian. | ||
| 205 | Those distros tend to be good indicators of how long we need to support things. | ||
| 206 | |||
| 207 | Things in bold indicate stuff to take note of, but does not guarantee that we | ||
| 208 | still support them. | ||
| 209 | Things in italics are things we used to care about but probably don't anymore. | ||
| 210 | |||
| 211 | | Date | EOL | [Git][rel-g] | [Python][rel-p] | [SSH][rel-o] | [Ubuntu][rel-u] / [Debian][rel-d] | Git | Python | SSH | | ||
| 212 | |:--------:|:------------:|:------------:|:---------------:|:------------:|-----------------------------------|-----|--------|-----| | ||
| 213 | | Apr 2008 | | | | 5.0 | | ||
| 214 | | Jun 2008 | | | | 5.1 | | ||
| 215 | | Oct 2008 | *Oct 2013* | | 2.6.0 | | *10.04 Lucid* - 10.10 Maverick / *Squeeze* | | ||
| 216 | | Dec 2008 | *Feb 2009* | | 3.0.0 | | ||
| 217 | | Feb 2009 | | | | 5.2 | | ||
| 218 | | Feb 2009 | *Mar 2012* | | | | Debian 5 Lenny | 1.5.6.5 | 2.5.2 | | ||
| 219 | | Jun 2009 | *Jun 2016* | | 3.1.0 | | *10.04 Lucid* - 10.10 Maverick / *Squeeze* | | ||
| 220 | | Sep 2009 | | | | 5.3 | *10.04 Lucid* | | ||
| 221 | | Feb 2010 | *Oct 2012* | 1.7.0 | | | *10.04 Lucid* - *12.04 Precise* - 12.10 Quantal | | ||
| 222 | | Mar 2010 | | | | 5.4 | | ||
| 223 | | Apr 2010 | | | | 5.5 | 10.10 Maverick | | ||
| 224 | | Apr 2010 | *Apr 2015* | | | | *10.04 Lucid* | 1.7.0.4 | 2.6.5 3.1.2 | 5.3 | | ||
| 225 | | Jul 2010 | *Dec 2019* | | *2.7.0* | | 11.04 Natty - *<current>* | | ||
| 226 | | Aug 2010 | | | | 5.6 | | ||
| 227 | | Oct 2010 | | | | | 10.10 Maverick | 1.7.1 | 2.6.6 3.1.3 | 5.5 | | ||
| 228 | | Jan 2011 | | | | 5.7 | | ||
| 229 | | Feb 2011 | | | | 5.8 | 11.04 Natty | | ||
| 230 | | Feb 2011 | *Feb 2016* | | | | Debian 6 Squeeze | 1.7.2.5 | 2.6.6 3.1.3 | | ||
| 231 | | Apr 2011 | | | | | 11.04 Natty | 1.7.4 | 2.7.1 3.2.0 | 5.8 | | ||
| 232 | | Sep 2011 | | | | 5.9 | *12.04 Precise* | | ||
| 233 | | Oct 2011 | *Feb 2016* | | 3.2.0 | | 11.04 Natty - 12.10 Quantal | | ||
| 234 | | Oct 2011 | | | | | 11.10 Ocelot | 1.7.5.4 | 2.7.2 3.2.2 | 5.8 | | ||
| 235 | | Apr 2012 | | | | 6.0 | 12.10 Quantal | | ||
| 236 | | Apr 2012 | *Apr 2019* | | | | *12.04 Precise* | 1.7.9.5 | 2.7.3 3.2.3 | 5.9 | | ||
| 237 | | Aug 2012 | | | | 6.1 | 13.04 Raring | | ||
| 238 | | Sep 2012 | *Sep 2017* | | 3.3.0 | | 13.04 Raring - 13.10 Saucy | | ||
| 239 | | Oct 2012 | *Dec 2014* | 1.8.0 | | | 13.04 Raring - 13.10 Saucy | | ||
| 240 | | Oct 2012 | | | | | 12.10 Quantal | 1.7.10.4 | 2.7.3 3.2.3 | 6.0 | | ||
| 241 | | Mar 2013 | | | | 6.2 | 13.10 Saucy | | ||
| 242 | | Apr 2013 | | | | | 13.04 Raring | 1.8.1.2 | 2.7.4 3.3.1 | 6.1 | | ||
| 243 | | May 2013 | *May 2018* | | | | Debian 7 Wheezy | 1.7.10.4 | 2.7.3 3.2.3 | | ||
| 244 | | Sep 2013 | | | | 6.3 | | ||
| 245 | | Oct 2013 | | | | | 13.10 Saucy | 1.8.3.2 | 2.7.5 3.3.2 | 6.2 | | ||
| 246 | | Nov 2013 | | | | 6.4 | | ||
| 247 | | Jan 2014 | | | | 6.5 | | ||
| 248 | | Feb 2014 | *Dec 2014* | **1.9.0** | | | *14.04 Trusty* | | ||
| 249 | | Mar 2014 | *Mar 2019* | | *3.4.0* | | *14.04 Trusty* - 15.10 Wily / *Jessie* | | ||
| 250 | | Mar 2014 | | | | 6.6 | *14.04 Trusty* - 14.10 Utopic | | ||
| 251 | | Apr 2014 | *Apr 2022* | | | | *14.04 Trusty* | 1.9.1 | 2.7.5 3.4.0 | 6.6 | | ||
| 252 | | May 2014 | *Dec 2014* | 2.0.0 | | ||
| 253 | | Aug 2014 | *Dec 2014* | *2.1.0* | | | 14.10 Utopic - 15.04 Vivid / *Jessie* | | ||
| 254 | | Oct 2014 | | | | 6.7 | 15.04 Vivid | | ||
| 255 | | Oct 2014 | | | | | 14.10 Utopic | 2.1.0 | 2.7.8 3.4.2 | 6.6 | | ||
| 256 | | Nov 2014 | *Sep 2015* | 2.2.0 | | ||
| 257 | | Feb 2015 | *Sep 2015* | 2.3.0 | | ||
| 258 | | Mar 2015 | | | | 6.8 | | ||
| 259 | | Apr 2015 | *May 2017* | 2.4.0 | | ||
| 260 | | Apr 2015 | *Jun 2020* | | | | *Debian 8 Jessie* | 2.1.4 | 2.7.9 3.4.2 | | ||
| 261 | | Apr 2015 | | | | | 15.04 Vivid | 2.1.4 | 2.7.9 3.4.3 | 6.7 | | ||
| 262 | | Jul 2015 | *May 2017* | 2.5.0 | | | 15.10 Wily | | ||
| 263 | | Jul 2015 | | | | 6.9 | 15.10 Wily | | ||
| 264 | | Aug 2015 | | | | 7.0 | | ||
| 265 | | Aug 2015 | | | | 7.1 | | ||
| 266 | | Sep 2015 | *May 2017* | 2.6.0 | | ||
| 267 | | Sep 2015 | *Sep 2020* | | *3.5.0* | | *16.04 Xenial* - 17.04 Zesty / *Stretch* | | ||
| 268 | | Oct 2015 | | | | | 15.10 Wily | 2.5.0 | 2.7.9 3.4.3 | 6.9 | | ||
| 269 | | Jan 2016 | *Jul 2017* | *2.7.0* | | | *16.04 Xenial* | | ||
| 270 | | Feb 2016 | | | | 7.2 | *16.04 Xenial* | | ||
| 271 | | Mar 2016 | *Jul 2017* | 2.8.0 | | ||
| 272 | | Apr 2016 | *Apr 2024* | | | | *16.04 Xenial* | 2.7.4 | 2.7.11 3.5.1 | 7.2 | | ||
| 273 | | Jun 2016 | *Jul 2017* | 2.9.0 | | | 16.10 Yakkety | | ||
| 274 | | Jul 2016 | | | | 7.3 | 16.10 Yakkety | | ||
| 275 | | Sep 2016 | *Sep 2017* | 2.10.0 | | ||
| 276 | | Oct 2016 | | | | | 16.10 Yakkety | 2.9.3 | 2.7.11 3.5.1 | 7.3 | | ||
| 277 | | Nov 2016 | *Sep 2017* | *2.11.0* | | | 17.04 Zesty / *Stretch* | | ||
| 278 | | Dec 2016 | **Dec 2021** | | **3.6.0** | | 17.10 Artful - **18.04 Bionic** - 18.10 Cosmic | | ||
| 279 | | Dec 2016 | | | | 7.4 | 17.04 Zesty / *Debian 9 Stretch* | | ||
| 280 | | Feb 2017 | *Sep 2017* | 2.12.0 | | ||
| 281 | | Mar 2017 | | | | 7.5 | 17.10 Artful | | ||
| 282 | | Apr 2017 | | | | | 17.04 Zesty | 2.11.0 | 2.7.13 3.5.3 | 7.4 | | ||
| 283 | | May 2017 | *May 2018* | 2.13.0 | | ||
| 284 | | Jun 2017 | *Jun 2022* | | | | *Debian 9 Stretch* | 2.11.0 | 2.7.13 3.5.3 | 7.4 | | ||
| 285 | | Aug 2017 | *Dec 2019* | 2.14.0 | | | 17.10 Artful | | ||
| 286 | | Oct 2017 | *Dec 2019* | 2.15.0 | | ||
| 287 | | Oct 2017 | | | | 7.6 | **18.04 Bionic** | | ||
| 288 | | Oct 2017 | | | | | 17.10 Artful | 2.14.1 | 2.7.14 3.6.3 | 7.5 | | ||
| 289 | | Jan 2018 | *Dec 2019* | 2.16.0 | | ||
| 290 | | Apr 2018 | *Mar 2021* | **2.17.0** | | | **18.04 Bionic** | | ||
| 291 | | Apr 2018 | | | | 7.7 | 18.10 Cosmic | | ||
| 292 | | Apr 2018 | **Apr 2028** | | | | **18.04 Bionic** | 2.17.0 | 2.7.15 3.6.5 | 7.6 | | ||
| 293 | | Jun 2018 | *Mar 2021* | 2.18.0 | | ||
| 294 | | Jun 2018 | **Jun 2023** | | 3.7.0 | | 19.04 Disco - **20.04 Focal** / **Buster** | | ||
| 295 | | Aug 2018 | | | | 7.8 | | ||
| 296 | | Sep 2018 | *Mar 2021* | 2.19.0 | | | 18.10 Cosmic | | ||
| 297 | | Oct 2018 | | | | 7.9 | 19.04 Disco / **Buster** | | ||
| 298 | | Oct 2018 | | | | | 18.10 Cosmic | 2.19.1 | 2.7.15 3.6.6 | 7.7 | | ||
| 299 | | Dec 2018 | *Mar 2021* | **2.20.0** | | | 19.04 Disco - 19.10 Eoan / **Buster** | | ||
| 300 | | Feb 2019 | *Mar 2021* | 2.21.0 | | ||
| 301 | | Apr 2019 | | | | 8.0 | 19.10 Eoan | | ||
| 302 | | Apr 2019 | | | | | 19.04 Disco | 2.20.1 | 2.7.16 3.7.3 | 7.9 | | ||
| 303 | | Jun 2019 | | 2.22.0 | | ||
| 304 | | Jul 2019 | **Jul 2024** | | | | **Debian 10 Buster** | 2.20.1 | 2.7.16 3.7.3 | 7.9 | | ||
| 305 | | Aug 2019 | *Mar 2021* | 2.23.0 | | ||
| 306 | | Oct 2019 | **Oct 2024** | | 3.8.0 | | **20.04 Focal** - 20.10 Groovy | | ||
| 307 | | Oct 2019 | | | | 8.1 | | ||
| 308 | | Oct 2019 | | | | | 19.10 Eoan | 2.20.1 | 2.7.17 3.7.5 | 8.0 | | ||
| 309 | | Nov 2019 | *Mar 2021* | 2.24.0 | | ||
| 310 | | Jan 2020 | *Mar 2021* | 2.25.0 | | | **20.04 Focal** | | ||
| 311 | | Feb 2020 | | | | 8.2 | **20.04 Focal** | | ||
| 312 | | Mar 2020 | *Mar 2021* | 2.26.0 | | ||
| 313 | | Apr 2020 | **Apr 2030** | | | | **20.04 Focal** | 2.25.1 | 2.7.17 3.8.2 | 8.2 | | ||
| 314 | | May 2020 | *Mar 2021* | 2.27.0 | | | 20.10 Groovy | | ||
| 315 | | May 2020 | | | | 8.3 | | ||
| 316 | | Jul 2020 | *Mar 2021* | 2.28.0 | | ||
| 317 | | Sep 2020 | | | | 8.4 | 21.04 Hirsute / **Bullseye** | | ||
| 318 | | Oct 2020 | *Mar 2021* | 2.29.0 | | ||
| 319 | | Oct 2020 | | | | | 20.10 Groovy | 2.27.0 | 2.7.18 3.8.6 | 8.3 | | ||
| 320 | | Oct 2020 | **Oct 2025** | | 3.9.0 | | 21.04 Hirsute / **Bullseye** | | ||
| 321 | | Dec 2020 | *Mar 2021* | 2.30.0 | | | 21.04 Hirsute / **Bullseye** | | ||
| 322 | | Mar 2021 | | 2.31.0 | | ||
| 323 | | Mar 2021 | | | | 8.5 | | ||
| 324 | | Apr 2021 | | | | 8.6 | | ||
| 325 | | Apr 2021 | *Jan 2022* | | | | 21.04 Hirsute | 2.30.2 | 2.7.18 3.9.4 | 8.4 | | ||
| 326 | | Jun 2021 | | 2.32.0 | | ||
| 327 | | Aug 2021 | | 2.33.0 | | ||
| 328 | | Aug 2021 | | | | 8.7 | | ||
| 329 | | Aug 2021 | **Aug 2026** | | | | **Debian 11 Bullseye** | 2.30.2 | 2.7.18 3.9.2 | 8.4 | | ||
| 330 | | **Date** | **EOL** | **[Git][rel-g]** | **[Python][rel-p]** | **[SSH][rel-o]** | **[Ubuntu][rel-u] / [Debian][rel-d]** | **Git** | **Python** | **SSH** | | ||
| 331 | |||
| 332 | |||
| 333 | [contact]: ../README.md#contact | ||
| 334 | [rel-d]: https://en.wikipedia.org/wiki/Debian_version_history | ||
| 335 | [rel-g]: https://en.wikipedia.org/wiki/Git#Releases | ||
| 336 | [rel-o]: https://www.openssh.com/releasenotes.html | ||
| 337 | [rel-p]: https://en.wikipedia.org/wiki/History_of_Python#Table_of_versions | ||
| 338 | [rel-u]: https://en.wikipedia.org/wiki/Ubuntu_version_history#Table_of_versions | ||
| 165 | [example announcement]: https://groups.google.com/d/topic/repo-discuss/UGBNismWo1M/discussion | 339 | [example announcement]: https://groups.google.com/d/topic/repo-discuss/UGBNismWo1M/discussion |
| 166 | [repo-discuss@googlegroups.com]: https://groups.google.com/forum/#!forum/repo-discuss | 340 | [repo-discuss@googlegroups.com]: https://groups.google.com/forum/#!forum/repo-discuss |
| 167 | [go/repo-release]: https://goto.google.com/repo-release | 341 | [go/repo-release]: https://goto.google.com/repo-release |
