You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This chapter describes the process to release Plone and its packages.
13
+
15
14
16
-
To keep the Plone software stack maintainable, the Python egg release process must be automated to high degree.
17
-
This happens by enforcing Python packaging best practices and then making automated releases using the [zest.releaser](https://github.com/zestsoftware/zest.releaser/) tool.
15
+
## Release process for Plone packages
18
16
19
-
This is extended with Plone coredev specific features by `plone.releaser <https://github.com/plone/plone.releaser>`.
17
+
To keep the Plone software stack maintainable, the Python egg release process must be automated to a high degree.
18
+
This happens by enforcing Python packaging best practices, and then making automated releases using [`zest.releaser`](https://github.com/zestsoftware/zest.releaser/).
20
19
21
-
- Anyone with necessary PyPi permissions must be able to make a new release by running the `fullrelease` command
20
+
This is extended with Plone coredev specific features by [`plone.releaser`](https://github.com/plone/plone.releaser).
22
21
23
-
... which includes ...
22
+
Anyone with necessary PyPI permissions must be able to make a new release by running the `fullrelease` command.
23
+
This command includes the following requirements.
24
24
25
-
- All releases must be hosted on PyPi
26
-
- All versions must be tagged at version control
27
-
- Each package must have README.rst with links to the version control repository and issue tracker
28
-
- CHANGES.rst (docs/HISTORY.rst respectively .txt in some packages) must be always up-to-date and must contain list of functional changes which may affect package users.
29
-
- CHANGES.rst must contain release dates
30
-
- README.rst and CHANGES.rst must be visible on PyPI
31
-
- Released eggs must contain generated gettext .mo files,
32
-
but these files must not be committed to the repository.
33
-
The .mo files can be created with the `zest.pocompile` add-on,
34
-
which should be installed together with `zest.releaser`.
35
-
-`.gitignore` and `MANIFEST.in` must reflect the files going to egg (must include page template, po files)
25
+
```{note}
26
+
All files mentioned in this list may be written in Markdown or reStructuredText and have the appropriate file name suffix.
27
+
```
36
28
37
-
More information:
29
+
- All releases must be hosted on PyPI.
30
+
- All versions must be tagged in version control.
31
+
- Each package must have a {file}`README` file with links to the version control repository and issue tracker.
32
+
- {file}`CHANGES` ({file}`docs/HISTORY`) must be always up-to-date and must contain list of functional changes which may affect package users.
33
+
- {file}`CHANGES` must contain release dates.
34
+
- {file}`README` and {file}`CHANGES` must be visible on PyPI.
35
+
- Released eggs must contain generated gettext `.mo` files, but these files must not be committed to the repository.
36
+
The `.mo` files can be created with the `zest.pocompile` add-on, which should be installed together with `zest.releaser`.
37
+
-`.gitignore` and `MANIFEST.in` must reflect the files going in to the egg (must include page template, po files).
38
+
39
+
```{seealso}
40
+
[High quality automated package releases for Python with `zest.releaser`](https://opensourcehacker.com/2012/08/14/high-quality-automated-package-releases-for-python-with-zest-releaser/).
41
+
```
38
42
39
-
-[High quality automated package releases for Python with zest.releaser](http://opensourcehacker.com/2012/08/14/high-quality-automated-package-releases-for-python-with-zest-releaser/).
40
43
41
44
## Special packages
42
45
43
46
The Plone Release Team releases the core Plone packages.
44
-
Several others also have the rights to release individual packages on <https://pypi.python.org>.
47
+
Several others also have the rights to release individual packages on [PyPI](https://pypi.org/).
45
48
If you have those rights on your account, you should feel free to make releases.
46
49
47
-
Some packages need special care or should be done only by specific people as they know what they are doing.
50
+
Some packages need special care, or should be done only by specific people, as they know what they are doing.
48
51
These are:
49
52
50
-
`Products.CMFPlone`, `Plone`, and `plone.app.upgrade`:
53
+
`Products.CMFPlone`, `Plone`, and `plone.app.upgrade`
54
+
: Please leave these to the release manager, Eric Steele.
51
55
52
-
: Please leave these to the release manager, Eric Steele.
56
+
`plone.app.locales`
57
+
: Please leave this to the i18n team lead, Vincent Fretin.
53
58
54
-
`plone.app.locales`:
55
-
56
-
: Please leave this to the i18n team lead, Vincent Fretin.
57
59
58
60
## Plone core release process checklist
59
61
60
-
1. Check Jenkins Status
61
-
62
-
Check latest Plone coredev job on jenkins.plone.org, it should be green, if it is not, fix the problem first.
> > - Check if version in setup.py is correct and follows our versioning best practice
110
-
>
111
-
> 5. Make a release (zest.releaser: `bin/fullrelease`)
112
-
> 6. Remove packages from auto-checkout section in `checkouts.cfg` and update `versions.cfg`.
113
-
114
-
5. Make sure `plone.app.upgrade` contains an upgrade step for the future Plone release.
115
-
6. Update CMFPlone version in `profiles/default/metadata.xml`
116
-
7. Create an issue in <https://github.com/collective/plone.app.locales/issues> to ask the i18n team lead @vincentfretin to do a plone.app.locales release.
117
-
8. Create a pending release (directory) on dist.plone.org
118
-
119
-
> 1. Copy all core packages there.
120
-
> 2. Possibly make an alpha/beta release of CMFPlone.
121
-
> 3. Copy the versions.cfg file from coredev there.
122
-
123
-
09. Write an email to the Plone developers list announcing a pending release.
124
-
10. Update plone.app.locales version.
125
-
11. Create a unified changelog
126
-
127
-
```
128
-
bin/manage changelog
129
-
```
130
-
131
-
12. Make final release on dist.plone.org (remove "-pending")
132
-
13. Update the "-latest" link on dist.plone.org
133
-
14. Create new release on launchpad (<https://launchpad.net/plone/>)
134
-
15. Create release page on <http://plone.org/products/plone/releases>
Check all packages for updates, add to or remove from `checkouts.cfg` accordingly.
78
+
This script may help:
79
+
80
+
```shell
81
+
bin/manage report --interactive
82
+
```
83
+
84
+
This step should not be needed, because we do the check for every single commit, but people may still have forgotten to add a package to the `checkouts.cfg` file.
85
+
86
+
4. Check packages individually.
87
+
88
+
Use the `bin/fullrelease` script from the core development buildout.
89
+
This includes extra checks that we have added in`plone.releaser`.
90
+
It guides you through all the next steps.
91
+
92
+
1. Check changelog.
93
+
Check if`CHANGES` is up-to-date.
94
+
All changes since the last release should be included.
95
+
A "Fixes" or "New" header should be included, with the relevant changes under it.
96
+
Upgrade notes are best placed here as well.
97
+
Compare `git log HEAD...<LAST_RELEASE_TAG>` with `CHANGES`, or from `zest.releaser` use the command`lasttaglog <optional tag if not latest>`.
98
+
2. Run [pyroma](https://pypi.org/project/pyroma/).
99
+
3. Run [check-manifest](https://pypi.org/project/check-manifest/).
5. Check if the version in`setup.py` is correct and follows our versioning best practice.
102
+
6. Make a release (zest.releaser: `bin/fullrelease`)
103
+
7. Remove packages from auto-checkout section in`checkouts.cfg` and update `versions.cfg`.
104
+
105
+
5. Make sure `plone.app.upgrade` contains an upgrade step for the future Plone release.
106
+
6. Update CMFPlone version in`profiles/default/metadata.xml`.
107
+
7. Create an issue in<https://github.com/collective/plone.app.locales/issues> to ask the i18n team lead @vincentfretin to do a `plone.app.locales` release.
108
+
8. Create a pending release (directory) on [dist.plone.org](https://dist.plone.org/).
109
+
110
+
1. Copy all core packages there.
111
+
2. Possibly make an alpha or beta release of CMFPlone.
112
+
3. Copy the `versions.cfg` file from coredev to there.
113
+
114
+
9. Write an email to the Plone developers list announcing a pending release.
115
+
10. Update `plone.app.locales` version.
116
+
11. Create a unified changelog.
117
+
118
+
```shell
119
+
bin/manage changelog
120
+
```
121
+
122
+
12. Make the final release on dist.plone.org (remove "-pending")
123
+
13. Update the "-latest" link on [dist.plone.org](https://dist.plone.org/).
124
+
14. For Plone 5.x versions only, create the new release on [Launchpad](https://launchpad.net/plone/).
125
+
15. Create a release page on [plone.org](https://plone.org/download/releases)
0 commit comments