[x] Check Jenkins Status: should be green. (This should be checked often during the release process.)
[x] In coredev, check packages for updates: bin/manage report --interactive. This is less needed now that we have mr.roboto to add packages to the checkouts. Use bin/versioncheck to see if any new PyPI releases are worth adding, or check the artifact of the versioncheck GitHub Action.
[x] Release individual packages from checkouts.cfg.
[x] Check that the version numbers of CMFPlone metadata.xml and latest upgrade step are in sync, and that they are higher than in the previous Plone release.
[x] Handle special packages, often handled by special people. :-) You can can ping people in the release-team channel on Discord, in the current issue, or individually:
[x] plonetheme.barceloneta needs a release on PyPI and npmjs. Maybe ask Peter Holzer (agitator) or Peter Mathis (petschki) for assistence.
[x] plone.staticresources and mockup. Ask on Discord in the classic-ui or ask Johannes (thet), Peter Mathis (petschki) or Maik (MrTango).
[x] plone.restapi and maybe plone.volto. If needed, ask the Plone REST api team or Timo (tisto) for a new release.
[x] Update the versions of those packages in versions.cfg.
[x] Make an alpha/beta/release candidate release of Products.CMFPlone (e.g. 6.0.0a1, later 6.0.0b1 and 6.0.0rc1). Fine to release this on PyPI. Once Plone 6 is final, we can continue doing release candidates for the bugfix releases, so people can try it in a pending release.
Release notes, constraints, dist.plone.org
[x] Adjust coredev branch release/6.0-dev. Most importantly, the auto-checkout list in checkouts.cfg should be empty, and the versions.cfg and requirements.txt should be the same. One way that works for me: git checkout release/6.0-dev; git reset --hard 6.0; git reset origin/release/6.0-dev. Then check which changes you want to commit.
[x] Update the 6.0-dev directory on dist.plone.org, and gather files to put there:
[x] You can use tox -c release/tox.ini -p auto to create or copy some files in release/dist. But you need to create some of those files first.
[x] Create a unified changelog based on the previous release: bin/manage changelog --start=6.0.0a1 > release/changelog.txt. Remove the uninteresting top lines. You may want to link to the Zope changelog with a specific tag.
[x] Create a file release/RELEASE-NOTES.md. It may be enough to look through the changelog and copy interesting changes.
[x] Get the versions.cfg file and any other versions files from coredev.
[x] Create a release/constraints.txt file from this. The above tox command generates this. Note: at some point I expect the constraints file to become leading, and we may need to generate a versions.cfg file instead.
[x] Copy (rsync) these files to the pending release directory. (We used to copy packages as well, but we do not do this for Plone 6 anymore.)
[x] Write a post on community.plone.org announcing a pending/soft release. See example. In the 6.0 alpha/beta/rc stage, we can skip pending releases and just make a real release.
[x] Wait for feedback, preferably at most a few days. As said, in the alpha/beta/rc stage, we can skip this.
Final release, Docker
[x] Make final release of Products.CMFPlone to PyPI, update versions.cfg.
[x] In release/6.0-dev branch update changelog, release notes, constraints.txt.
[x] Create tag of the release/6.0-dev branch, e.g. 6.0.0a1, and push to GitHub.
[x] Make final release directory on dist.plone.org, with versions, requirements, constraints, changelog, release notes.
[x] Update the "-latest" links on dist.plone.org, e.g. ln -sfT 6.0.0a1 6.0-latest
[x] Notify Erico, perhaps on the #install-and-deploy Discord channel, that there is a new release. He can create Docker images then.
Announcements
You probably want to wait until the Docker images are there, but don't wait long.
[x] Send mail to Marketing Team so they can prepare announcements.
[x] Update the https://plone.org/security/hotfixes/ page in the configuration control panel. This is done in the configuration registry: plone.securitysupport, plone.versions, plone.activemaintenance. You could ask the security team.
[x] Publish release page on plone.org.
[x] Update the release schedule: note the new release, and say when the next release in this series is expected.
Release packages, update versions
bin/manage report --interactive
. This is less needed now that we havemr.roboto
to add packages to the checkouts. Usebin/versioncheck
to see if any new PyPI releases are worth adding, or check the artifact of the versioncheck GitHub Action.checkouts.cfg
.CMFPlone metadata.xml
and latestupgrade step
are in sync, and that they are higher than in the previous Plone release.plone.staticresources
andmockup
. Ask on Discord in the classic-ui or ask Johannes (thet), Peter Mathis (petschki) or Maik (MrTango).plone.restapi
and maybeplone.volto
. If needed, ask the Plone REST api team or Timo (tisto) for a new release.plone.app.locales
. Create an issue there or ask Mikel (erral).plone.app.upgrade
andPlone
yourself.versions.cfg
.Products.CMFPlone
(e.g. 6.0.0a1, later 6.0.0b1 and 6.0.0rc1). Fine to release this on PyPI. Once Plone 6 is final, we can continue doing release candidates for the bugfix releases, so people can try it in a pending release.Release notes, constraints, dist.plone.org
release/6.0-dev
. Most importantly, theauto-checkout
list incheckouts.cfg
should be empty, and theversions.cfg
andrequirements.txt
should be the same. One way that works for me:git checkout release/6.0-dev; git reset --hard 6.0; git reset origin/release/6.0-dev
. Then check which changes you want to commit.6.0-dev
directory on dist.plone.org, and gather files to put there:tox -c release/tox.ini -p auto
to create or copy some files inrelease/dist
. But you need to create some of those files first.bin/manage changelog --start=6.0.0a1 > release/changelog.txt
. Remove the uninteresting top lines. You may want to link to the Zope changelog with a specific tag.release/RELEASE-NOTES.md
. It may be enough to look through the changelog and copy interesting changes.versions.cfg
file and any other versions files from coredev.release/constraints.txt
file from this. The above tox command generates this. Note: at some point I expect the constraints file to become leading, and we may need to generate aversions.cfg
file instead.rsync
) these files to the pending release directory. (We used to copy packages as well, but we do not do this for Plone 6 anymore.)Final release, Docker
Products.CMFPlone
to PyPI, updateversions.cfg
.release/6.0-dev
branch update changelog, release notes,constraints.txt
.release/6.0-dev
branch, e.g. 6.0.0a1, and push to GitHub.ln -sfT 6.0.0a1 6.0-latest
#install-and-deploy
Discord channel, that there is a new release. He can create Docker images then.Announcements
You probably want to wait until the Docker images are there, but don't wait long.
plone.securitysupport
,plone.versions
,plone.activemaintenance
. You could ask the security team.