To be carried out by: Ubuntu Release Team
Goals:
- Inform users of a supported Ubuntu release of its imminent end-of-life and corresponding termination of maintenance and support
45 days prior to end of life (for LTS releases), or 14 days prior for 9-month releases:
Send Release End of Life Warning to ubuntu-announce, ubuntu-security-announce, ubuntu-news
- Ensure that the email gets moderated and accepted
- Notify the web team manager that ubuntu pages will need to be updated to remove EOL release.
10 days prior to end of life:
Verify that distro-info-data has the correct EOL date for this release, and fix it if it does not.
At end of life:
- Clean up things before setting release to OBSOLETE in Launchpad, as otherwise removals are not actually published.
- NBS
- New queue
- Unapproved queue
- packages in -proposed (Any packages in -proposed which are just autopkgtest fixes should be removed from -proposed.)
- Check for any updates which are phasing and decide if they should be fully phased or the changes reverted.
Set release to OBSOLETE in Launchpad (work with SRE, who can visit e.g. https://launchpad.net/ubuntu/$releasename/+admin even if the series page itself is too slow to load any longer).
update http://changelogs.ubuntu.com/meta-release and http://changelogs.ubuntu.com/meta-release-proposed (bdmurray)
- set the release to "Supported: 0"
update the ReleaseNotes URI so that it includes an EOL disclaimer, such as in PrecisePangolin/ReleaseNotes.
update https://wiki.ubuntu.com/Releases for Canonical support.
Deactivate any milestones for the release. Look at https://launchpad.net/ubuntu/$releasename/+milestones and open a tab for each one. THen switch the milestone from active to inactive.
Archive the release on old-releases on ancientminister
Warning: It may not be possible to follow this procedure entirely mechanically! old-releases is by its nature not very regularly maintained, and the fact that many files are purged from the master system and only exist on mirrors can cause a good deal of confusion. Refer to the publicly-visible structure on http://old-releases.ubuntu.com/releases/. This procedure indicates with some degree of accuracy what steps need to be taken, but anyone following this procedure is strongly advised to use their initiative.
In the following instructions, RELEASE should be replaced throughout with the name of the EOLed release. PROJECT is used for flavours of Ubuntu other than Ubuntu itself (e.g. Kubuntu, Edubuntu, etc.).
Disable mirror syncing: chmod -x /srv/cdimage.ubuntu.com/bin/sync-mirrors.
In /srv/cdimage.ubuntu.com/www/simple/, find all directories named after the EOLed release. In each one:
Move all files containing the release number in the adjacent .pool directory to the corresponding .pool subdirectory of /srv/cdimage.ubuntu.com/www/old-releases/ (either .pool or PROJECT/.pool), creating it if necessary.
In the target .pool directory, run checksum-directory . /path/to/old/directory, or update checksums manually if necessary (in the latter case, remember to use sign-cdimage on each checksums file).
Move all files starting with a lower-case letter to the corresponding subdirectory of /srv/cdimage.ubuntu.com/www/old-releases/ (either RELEASE or PROJECT/RELEASE), creating it if necessary.
In the target directory, run checksum-directory . /path/to/old/directory ../.pool, or update checksums manually if necessary (in the latter case, remember to use sign-cdimage on each checksums file).
- In the target directory, update web indices. The procedure for doing this varies depends on whether the images currently being archived supersede all previous images from the previous point release (if any), or if some images from a previous point release must be kept visible (as is the case when EOLing the server part of an LTS release).
In the former case, run DIST=RELEASE for-project PROJECT make-web-indices . PREFIX, where PREFIX is the common prefix of the images without any trailing - (e.g. ubuntu-9.10).
In the latter case, edit .htaccess and HEADER.html by hand and change the version numbers for only those images that are being superseded.
Make sure that appropriate version-number symlinks to the release name exist in /srv/cdimage.ubuntu.com/www/old-releases/ or /srv/cdimage.ubuntu.com/www/old-releases/PROJECT/.
Edit /srv/cdimage.ubuntu.com/www/old-releases/.htaccess and /srv/cdimage.ubuntu.com/www/old-releases/HEADER.html (or old-releases/PROJECT/...) by hand to refer to the EOLed releases.
In the source .pool directory (under /srv/cdimage.ubuntu.com/www/simple/), run checksum-directory . to get rid of references to the EOLed release.
Remove the remaining files and symlinks corresponding to the EOLed release from under /srv/cdimage.ubuntu.com/www/simple/. Clean up emptied directories if any.
Edit /srv/cdimage.ubuntu.com/www/simple/.htaccess and /srv/cdimage.ubuntu.com/www/simple/HEADER.html (or simple/PROJECT/...) by hand to remove references to the EOLed release.
Edit /srv/cdimage.ubuntu.com/www/simple/.htaccess (not PROJECT-specific) to add appropriate RedirectPermanent directives redirecting users to the new URLs.
Re-enable mirror syncing: chmod +x /srv/cdimage.ubuntu.com/bin/sync-mirrors.
Push to mirrors: sync-old-releases; sync-mirrors.
- Move any images from cdimage.ubuntu.com to old-images on nusakan and notify IS team for archival
Disable mirror syncing: chmod -x /srv/cdimage.ubuntu.com/bin/sync-mirrors.
If /srv/cdimage.ubuntu.com/www/full/netboot/RELEASE/ exists, remove it (it is only an HTML page with links, and does not need to be archived), remove any symlinks to it, and remove references to it from /srv/cdimage.ubuntu.com/www/full/netboot/index.html.
In /srv/cdimage.ubuntu.com/www/full/, find all directories named after the EOLed release which have /releases/ in their path. Each one will have a subdirectory identifying the milestone (e.g. release, release.1, etc.). For each one:
Move the directory to the corresponding subdirectory of /srv/cdimage.ubuntu.com/old-images/, creating it if necessary.
Remove any remaining files and symlinks corresponding to the EOLed release from under /srv/cdimage.ubuntu.com/www/full/. Clean up emptied directories if any.
In /srv/cdimage.ubuntu.com/www/torrent/, find all directories named after the EOLed release which have /releases/, /ports/, or /simple/ in their path. Remove these directories.
Re-enable mirror syncing: chmod +x /srv/cdimage.ubuntu.com/bin/sync-mirrors.
Push to mirrors: sync-mirrors.
- Archive the apt archive to old-releases:
- Notify IS to backup (and verify) the ftp archive to old-releases. They should have tickets filed for this well in advance.
Remove the release from the archive (send RT ticket asking IS to follow this procedure, requiring sign-off from IS, Foundations, Release Team, Commercial Engineering, and Launchpad)
Once that is done, ask IS to run https://wiki.canonical.com/InformationInfrastructure/OSA/LPHowTo/ObsoleteDistroSeries to remove the series from the internal FTP master host and obsolete the publications on Launchpad.
- Even with sign-off from all parties, we typically give a generous grace period between backup and removal, a month for 9mo releases and 6mo for LTS is a reasonable lower bound.
- Update lp:ubuntu-archive-scripts to drop references to the removed release; this will stop tasks such as component-mismatches, proposed-migration, germinate and so on from being run. Add the EOLing release to the exclusion list in the archive-reports rsync, to stop it being mirrored from ftpmaster.
Notify HeatherEllsworth to disable the release in appstream-generator (in https://git.launchpad.net/~ubuntu-desktop/+git/appstream-cloud/, remove the release from config.json, then git pull and run juju set appstream-generator config="$(cat config.json)" as prod-ue-appstream-back@wendigo (Canonical only).
Notify JeremyBicha to update osinfo-db for the move to old-releases.
Notify JulianAndresKlode, SteveLangasek or LukaszZemczak to remove the EOL release from autopkgtest. Edit mojo/service-bundle in lp:autopkgtest-cloud to remove the release, then run mojo run on the bastion host; and remove the images (in all cloud regions, run something like glance image-list | awk -F '| ' '/adt\/ubuntu-RELEASE/ { print $2 }' | xargs glance image-delete.
also clean up old logs and results for the series with swift --os-auth-url $SWIFT_AUTH_URL --auth-version $SWIFT_AUTH_VERSION --os-tenant-name $SWIFT_TENANT --os-username $SWIFT_USERNAME --os-password $SWIFT_PASSWORD --os-region-name $SWIFT_REGION delete autopkgtest-RELEASE.
Notify someone with access to the "prod-cnf-extractor" group to disable generation of command-not-found indices (juju config cnf-extractor releases="space separated list of releases")
- Tell Canonical IS that they can remove images for this release from the internal clouds.
- Manually remove the release from snakefruit:~ubuntu-archive/.madison-lite/config so it doesn't show up in rmadison output.
- As ubuntu-archive on snakefruit, manually remove files related to the release: ~/public_html/proposed-migration/RELEASE* ~/proposed-migration/output/RELEASE ~/proposed-migration/data/RELEASE* ~/public_html/seeds/*.RELEASE ~/public_html/germinate-output/*.RELEASE
- Clear all packages from the partner repository for this release with remove-package (check with PES first)
Send EndOfLifeAnnouncement to ubuntu-announce, ubuntu-security-announce
- Notify the web team manager to remove release from the website.
Run close-EOL-bugs RELEASE from ubuntu-archive-tools.
Update charmed daisy retracer cronjob named "whoopsie-update-daily-users.bash.tmpl" to no longer collect stats on the release that has become End of Life e.g. https://bazaar.launchpad.net/~daisy-pluckers/charms/xenial/daisy-retracer/trunk/revision/206
Update utils.py in https://code.launchpad.net/~daisy-pluckers/daisy/trunk so that the release is in EOL_RELEASES, which will also increment a counter for that specific release e.g. unsupported.eol_raring.
Run script which unsubscribes teams (specifically Canonical teams) from packages which are no longer in main or restricted for supported releases.
Remove /srv/cdimage.ubuntu.com/scratch/*/RELEASE to free up disk space.
Remove the EoL release from ddebs: on ddebs.internal, move /srv/ddebs.ubuntu.com/www/dists/RELEASE* to /srv/ddebs.ubuntu.com/www/dists.old/, after which ddeb-retriever will do a garbage-collection pass.
Submit an RT to remove unnecessary crash data from the Error Tracker for the EoL release see https://rt.admin.canonical.com/Ticket/Display.html?id=128690 as an example.