Skip to content

Commit ed61934

Browse files
release-process: update based on 8.5.0RC1 and discussions
* Add PHP 8.5 release schedule link * Note that the patch-level branch for PHP X.Y.0 is created as part of the last planned release candidate * Clarify when patch-level branches are pushed * Add a hint about the values for API versions
1 parent 34631f5 commit ed61934

File tree

1 file changed

+36
-19
lines changed

1 file changed

+36
-19
lines changed

docs/release-process.md

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ repository available according to the release schedule.
66
The release schedule for each version is published on the
77
[PHP wiki](https://wiki.php.net):
88

9+
- [PHP 8.5](https://wiki.php.net/todo/php85)
910
- [PHP 8.4](https://wiki.php.net/todo/php84)
1011
- [PHP 8.3](https://wiki.php.net/todo/php83)
1112
- [PHP 8.2](https://wiki.php.net/todo/php82)
@@ -137,14 +138,23 @@ slightly different steps. We'll call attention where the steps differ.
137138
> During the first RC release, you will create (and push!) the version
138139
> branch for the pre-GA release, e.g., `PHP-8.2`. See
139140
> "[Forking a new version branch](#forking-a-new-version-branch)" below.
140-
> From this point forward, all pre-GA release branches will be created from
141+
> For the last RC release, and the subsequent GA release, follow the post-GA
142+
> procedure, but until that point, pre-GA release branches will be created from
141143
> this version branch. Again, these release branches are local-only. Do not
142144
> push them!
143145
>
144146
> ```shell
145147
> git checkout -b php-X.Y.0beta2-local-release-branch upstream/PHP-X.Y
146148
> ```
147149
150+
> 💬 **Hint** \
151+
> The *patch-level version branch* for GA (PHP X.Y.0) is created as part of the
152+
> last *planned* RC release (currently PHP X.Y.0RC4). After the last RC is released
153+
> additional bug fixes in the branch will not be a part of PHP X.Y.0. If a regression
154+
> is found that warrants including a fix in PHP X.Y.0, use the same process as
155+
> for other patch releases - merge the patch as normal to PHP X.Y, and then cherry-pick
156+
> the patch to the patch-level PHP X.Y.0 branch.
157+
148158
> 🔷 **Non-stable version branches: post-GA** \
149159
> After GA, you will create (and push) a new *patch-level version branch*
150160
> along with each non-stable release. For example, if you are building a
@@ -291,11 +301,16 @@ slightly different steps. We'll call attention where the steps differ.
291301
> Only release tags should have version numbers in these files that do not
292302
> end in `-dev` (e.g., `8.1.7`, `8.1.7RC1`, `8.2.0alpha1`, etc.).
293303
294-
10. Push the changes to the `php-src`.
304+
Do not forget to merge up PHP-X.Y all the way to master. When resolving
305+
the conflicts, ignore the changes from PHP-X.Y in higher branches. It
306+
means using something like `git checkout --ours .` when on PHP.X.Y+1 or
307+
master after the merge resulting in the conflicts.
308+
309+
11. Push the changes to the `php-src`.
295310
296311
```shell
297312
git push upstream php-X.Y.ZRCn # tag name
298-
git push upstream PHP-X.Y.Z # patch-level version branch (post-GA only)
313+
git push upstream PHP-X.Y.Z # patch-level version branch (beginning with the last RC before GA)
299314
git push upstream PHP-X.Y # version branch (post-branch creation only)
300315
git push upstream master # version branch (pre-branch creation only)
301316
```
@@ -306,28 +321,23 @@ slightly different steps. We'll call attention where the steps differ.
306321
>
307322
> Local-only release branches should not be pushed!
308323
309-
Do not forget to merge up PHP-X.Y all the way to master. When resolving
310-
the conflicts, ignore the changes from PHP-X.Y in higher branches. It
311-
means using something like `git checkout --ours .` when on PHP.X.Y+1 or
312-
master after the merge resulting in the conflicts.
313-
314-
11. Run the following using the release tag to export the tree, create the
324+
12. Run the following using the release tag to export the tree, create the
315325
`configure` script, and build and compress three tarballs (`.tar.gz`,
316326
`.tar.bz2` and `.tar.xz`).
317327
318328
```shell
319329
./scripts/dev/makedist php-X.Y.ZRCn
320330
```
321331
322-
12. Run the following using the release tag and your GPG key ID to sign the
332+
13. Run the following using the release tag and your GPG key ID to sign the
323333
tarballs and save the signatures to `php-X.Y.ZRCn.manifest`, which you can
324334
upload to GitHub and include in the announcement emails.
325335
326336
```shell
327337
./scripts/dev/gen_verify_stub X.Y.ZRCn YOURKEYID > php-X.Y.ZRCn.manifest
328338
```
329339
330-
13. If you have the [GitHub command line tool][] installed, run the following to
340+
14. If you have the [GitHub command line tool][] installed, run the following to
331341
create a public Gist for the manifest file:
332342
333343
```shell
@@ -336,7 +346,7 @@ slightly different steps. We'll call attention where the steps differ.
336346
337347
Or you may go to https://gist.github.com to create it manually.
338348
339-
14. Copy the tarballs (using scp, rsync, etc.) to your `public_html/` folder on
349+
15. Copy the tarballs (using scp, rsync, etc.) to your `public_html/` folder on
340350
downloads.php.net.
341351
342352
```shell
@@ -347,10 +357,10 @@ slightly different steps. We'll call attention where the steps differ.
347357
> If you do not have a `public_html` directory, create it and set its
348358
> permissions to `0755`.
349359
350-
15. Now the tarballs and signatures may be found at
360+
16. Now the tarballs and signatures may be found at
351361
`https://downloads.php.net/~yourname/`, e.g. https://downloads.php.net/~derick/.
352362
353-
16. Once the release is tagged, contact the release-managers@php.net distribution
363+
17. Once the release is tagged, contact the release-managers@php.net distribution
354364
list so that Windows binaries can be created. Once those are made, they may
355365
be found at https://windows.php.net/qa/.
356366
@@ -519,8 +529,8 @@ slightly different steps. We'll call attention where the steps differ.
519529
520530
> 💬 **Hint** \
521531
> You should have created this branch when packaging the non-stable release
522-
> candidate for this version. If it is for a PHP-X.Y.0 version, then just
523-
> create and push this branch.
532+
> candidate for this version. If it is for a PHP-X.Y.0 version, then the branch
533+
> was created as part of the final planned release candidate, PHP-X.Y.0RC4.
524534
525535
2. If a CVE commit needs to be merged to the release, have it committed to
526536
the base branches and [merged upwards as usual][] (e.g. commit the CVE fix
@@ -938,13 +948,20 @@ feature development that cannot go into the new version.
938948
See [Prepare for PHP 8.2][] and [Prepare for PHP 8.2 (bis)][] for an example
939949
of what this commit should include.
940950
941-
4. Push the new version branch and the changes to the `master` branch, with an
951+
> 💬 **Hint** \
952+
> The API version numbers in `Zend/zend_extensions.h`, `Zend/zend_modules.h`, and
953+
> `main/php.h` in `master` need to be **greater** than the ones in the new `PHP-X.Y`
954+
> branch. Generally, use the `YYYYMMDD` date for the *Thursday* as the value for the
955+
> `PHP-X.Y` API numbers, and for the *Friday* as the value for the `master` API
956+
> numbers. This ensures that `master` is always considered newer than the version branch.
957+
958+
5. Push the new version branch and the changes to the `master` branch, with an
942959
appropriate commit message (e.g., "master is now for PHP 8.3.0-dev").
943960
944-
5. Immediately notify internals@ of the new branch and advise on the new merging
961+
6. Immediately notify internals@ of the new branch and advise on the new merging
945962
order. For example: https://news-web.php.net/php.internals/99903
946963
947-
6. Update `web-php:git.php` and https://wiki.php.net/vcs/gitworkflow to reflect
964+
7. Update `web-php:git.php` and https://wiki.php.net/vcs/gitworkflow to reflect
948965
the new branch.
949966
950967
For example:

0 commit comments

Comments
 (0)