Skip to content

Todos before a release

Arthur Schiwon edited this page Nov 27, 2024 · 62 revisions

Check list for a release (copy it to a ticket and then tick of the checkboxes):

# Beta phase (major releases)
* [ ] add app store release (https://apps.nextcloud.com/admin/core/nextcloudrelease/add/)

# RC phase (up to one week before the release date)

* [ ] get all the pending backports merged to the stable branches ([check the milestones accross the organisation](https://github.com/issues?utf8=✓&q=is%3Aopen+user%3Anextcloud+archived%3Afalse+milestone%3A%22Nextcloud+13.0.2%22+))
  * when a PR requires development actions before merge, you may assign relevant persons
  * if moving a PR'S milestone for the third time without activity, warn it will be closed next time
  * when a PR's milestone was moved already three times without activity, close the PR
* [ ] create the RC packages using the release script (see README of release script)
* [ ] upload the RC packages to the `/server/prereleases` folder of the download server
* [ ] update the beta channel of the [updater_server](https://github.com/nextcloud/updater_server)
* [ ] test the updater_server on the internal updater server
* [ ] check that the enterprise patches apply properly (see release script repo)
* [ ] create releases from tags [on the server repo](https://github.com/nextcloud/server/tags). Tick "Set as a pre-release"!
* [ ] ask in the forums for help (use the [changelog generator script](https://github.com/nextcloud/github_helper#changelog-generator))
* [ ] prepare "What's new" server - [Example](https://github.com/nextcloud/changelog_server/pull/5)
* [ ] First RC of a major: branch-off the stableXX branch from the default branch (use the [brancher](https://github.com/nextcloud/github_helper/tree/master/brancher))
* [ ] First RC of a major: enable daily build of the stable channel on the builder VM.
* [ ] First RC of a major: add daily update path to client_updater
* [ ] First RC of a major: Update the Nextcloud database fields description spreadsheet (ping all "php" team leads to review/update https://cloud.nextcloud.com/f/5866090)
* [ ] First RC of a major: enable build dailies for stableXX
* [ ] **marketing** sent customer newsletter with security and release date information
* [ ] **marketing** prepare social media messages for the release next week for translation (deadline Wednesday 16:00 Berlin time)
* [ ] **sysadmin** deploy on productive instance
* [ ] **sysadmin** test update of try.nextcloud.com, schedule update on release date (please ping sysadmins)

# Release (~1 day before the planned release)

* [ ] create the final packages using the release script (see README of release script)
* [ ] upload the final packages to `/server/prereleases` folder of the download server
* [ ] inform server packagers in the corresponding Talk channel about the availability of the archives
* [ ] (maintenance only) provide the changelogs to Marketing person on duty (use the [changelog generator script](https://github.com/nextcloud/github_helper#changelog-generator))
* [ ] **marketing** update the changelog on the website (use the [changelog generator script](https://github.com/nextcloud/github_helper#changelog-generator))
* [ ] **marketing** prepare blog post, newsletter, social media messages (check the changelog for interesting features/fixes and possible screenshots)
* [ ] **sysadmin** deploy on productive instance

## T - 30 minutes

* [ ] copy the final packages to `/server/releases` folder of the download server
* [ ] update the stable channel of the [updater_server](https://github.com/nextcloud/updater_server)
* [ ] test the updater_server on the internal updater server 
* [ ] update [wiki page](https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule), next maintenance roughly 4 weeks later (be considerate of holidays, vacation, etc)
* [ ] merge `master` of updater_server to `production` ([oepn PR here](https://github.com/nextcloud/updater_server/compare/production...master?expand=1))

## T

* [ ] create releases from tags [on the server repo](https://github.com/nextcloud/server/tags)
* [ ] send https://cloud.nextcloud.com/f/5866090 to Marketing to update website
* [ ] **marketing** send newsletter
* [ ] **marketing** publish blog posts
* [ ] **marketing** post on social media
* [ ] **marketing** re-edit the release forum post to look good when pinned on top (major release only)

# Enterprise version

* [ ] fetch latest updater server version for customer updater server
* [ ] build and upload enterprise version
* [ ] update customer updater server with enterprise version
* [ ] for old releases: update the [changelogs on the portal](https://github.com/nextcloud-gmbh/portal.nextcloud.com/tree/main/content/Changelogs)
* [ ] on first major: schedule bumping staged rollout bumps to 70% and 100%

# Post processing (non-coding)

* [ ] update the milestones in all repos (use the [milestone updater](https://github.com/nextcloud/github_helper/tree/master/milestoneupdater) for this)
* [ ] update user content proxy of app store (see https://github.com/nextcloud/usercontent.apps.nextcloud.com)
* [ ] update security scanner
* [ ] update owncloud-migration config on update server
* [ ] update portal.nextcloud.com with newest enterprise release link
* [ ] check wikipedia pages for release information - update pages if necessary
* [ ] check wikimedia content for outdated media e.g. screenshots
* [ ] update documentation [min and max EOL versions config](https://github.com/nextcloud/documentation/blob/master/conf.py#L39-L40)
* [ ] update dependabot supported for server [stable branch configs](https://github.com/nextcloud/server/blob/master/.github/dependabot.yml)
* [ ] update dependabot supported for 3rdparty [stable branch configs](https://github.com/nextcloud/3rdparty/blob/master/.github/dependabot.yml)
* [ ] schedule a retrospective if applicable

# Post processing (major version)

* [ ] on minimum PHP version bump: update installer script on download server (see [repo](https://github.com/nextcloud/web-installer))
* [ ] on stable channel creation: update translation sync containers with new stable channels (translations & translations-app container)
* [ ] on stable channel creation: update config-convert repo and translations-documentation-sync container
* [ ] on stable channel creation/retirement: check [dependabot jobs](https://app.dependabot.com/accounts/nextcloud/repos/61813775)
* [ ] on stable channel creation: change stable symlink on documentation to newest one
* [ ] on stable channel creation/retirement: check the documentation build jobs for the current set of stable channels
* [ ] schedule bumping staged rollout bumps to 70% and 100%
* [ ] schedule a retrospective if applicable
* [ ] inform sysadmins to update demo instances

# Pulling a release

* [ ] inform server packagers in the corresponding Talk channel about pulling the release (ideally give them as much time as possible)
* [ ] inform in the forums about the pull and the outlook
* [ ] on the download server, move the packages from `/server/releases` back to `/server/prereleases` 
* [ ] on the updater_server, revert the the configuration update (master, then prod)
* [ ] on the customer updater_server, revert the the configuration update (master, then prod)
* [ ] for portal.nextcloud.com revert the release link updates