@@ -8,15 +8,16 @@ General notes and tips
8
8
1. Do not release on Fridays, Saturdays or Sundays
9
9
because the sysadmins can not upgrade stuff then.
10
10
11
- 2. Package the day before a release. So if the release is to be on Thursday,
12
- package on Wednesday .
11
+ 2. Package two days before a release. So if the release is to be on Thursday,
12
+ package on Tuesday. Think about timezones as well .
13
13
14
14
3. Ensure that Windows builds will work before packaging
15
15
16
- 4. Follow all steps to the letter. When unclear ask previous RM's (Derick/Ilia)
17
- before proceeding. Ideally make sure that for the first releases one of the
18
- previous RM's is around to answer questions. For the steps related to the
19
- php/QA/bug websites try to have someone from the webmaster team (Bjori) on hand.
16
+ 4. Follow all steps to the letter. When unclear ask previous RM's (David/Julien/
17
+ Johannes/Stas/Derick/Ilia) before proceeding. Ideally make sure that for the
18
+ first releases one of the previous RM's is around to answer questions. For the
19
+ steps related to the php/QA/bug websites try to have someone from the webmaster
20
+ team (Bjori) on hand.
20
21
21
22
5. Verify the tags to be extra sure everything was tagged properly.
22
23
@@ -50,37 +51,47 @@ Rolling a non stable release (alpha/beta/RC)
50
51
2. run the "scripts/dev/credits" script in php-src and commit the changes in the
51
52
credits files in ext/standard.
52
53
53
- 3. Checkout the release branch for this release (e.g., PHP-5.4.2).
54
+ 3. Checkout the release branch for this release (e.g., PHP-5.4.2) from the main branch .
54
55
55
56
4. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
56
- Do not use abbreviations for alpha and beta.
57
+ Do not use abbreviations for alpha and beta. Do not use dashes, you should
58
+ ``#define PHP_VERSION "5.4.22RC1"`` and not ``#define PHP_VERSION "5.4.22-RC1"``
57
59
58
- 5. Commit these changes to the branch with ``git commit -a``.
60
+ 5. Compile and make test, with and without ZTS, using the right Bison version
61
+ (for example, for 5.5, Bison 2.4.1 is used)
59
62
60
- 6. Tag the repository with the version, e.g.:
63
+ 6. Check ./sapi/cli/php -v output for version matching.
64
+
65
+ 7. If all is right, commit the changes to the release branch with ``git commit -a``.
66
+
67
+ 8. Tag the repository release branch with the version, e.g.:
61
68
``git tag -u YOURKEYID php-5.4.2RC2``
62
69
63
- 7. Push the changes to the main repo:
70
+ 9. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and ``NEWS``
71
+ in the *main* branch (PHP-5.4 for example) to prepare for the **next** version.
72
+ F.e. if the RC is "5.4.1RC1" then the new one should be "5.4.2-dev" - regardless if we get
73
+ a new RC or not. This is to make sure ``version_compare()`` can correctly work.
74
+ Commit the changes to the main branch.
75
+
76
+ 10. Push the changes to the main repo, the tag, the main branch and the release branch :
64
77
``git push --tags origin HEAD``
78
+ ``git push origin {main branch}``
79
+ ``git push origin {release branch}``
65
80
66
- 8. run: ``./makedist 5.4.2RC2``, this will export the tree, create configure
67
- and build three tarballs (gz,bz2 and xz). Make sure you use the same GNU Bison
68
- version as snaps. Recent bison version are known to break ZTS.
81
+ 11. run: ``PHPROOT=. ./makedist 5.4.2RC2``, this will export the tree, create configure
82
+ and build three tarballs (gz, bz2 and xz).
69
83
70
- 9 . Copy those three tarballs to www .php.net, in your homedir there should be a
84
+ 12 . Copy those tarballs (scp, rsync) to downloads .php.net, in your homedir there should be a
71
85
directory "downloads/". Copy them into there, so that the system can generate
72
- MD5 sums. If you do not have this directory, talk to Derick.
86
+ MD5 sums. If you do not have this directory, talk to Derick or Dan .
73
87
74
- 10 . Now the RC can be found on http://downloads.php.net/yourname,
88
+ 13 . Now the RC can be found on http://downloads.php.net/yourname,
75
89
f.e. http://downloads.php.net/derick/
76
90
77
- 11 . Once the release has been tagged, contact the PHP Windows development team
91
+ 14 . Once the release has been tagged, contact the PHP Windows development team
78
92
(internals-win@lists.php.net) so that Windows binaries can be created. Once
79
93
those are made, they should be placed into the same directory as the source snapshots.
80
94
81
- 12. Notify the documentation team if documentations for new features are
82
- not yet available but a stable release is imminent.
83
-
84
95
Getting the non stable release (alpha/beta/RC) announced
85
96
--------------------------------------------------------
86
97
@@ -109,9 +120,9 @@ Derick) run the following commands for you:
109
120
110
121
Note: Remember to update the MD5 checksum information.
111
122
112
- 4. Update ``php.git/include/version.inc`` (x=major version number)
123
+ 4. Update ``web/ php.git/include/version.inc`` (x=major version number)
113
124
114
- a. ``$PHP_x_RC`` = "5.4.0RC1"
125
+ a. ``$PHP_x_RC`` = "5.4.0RC1" (should be set to "false" before)
115
126
116
127
b. ``$PHP_x_RC_DATE`` = "06 September 2007"
117
128
@@ -122,70 +133,61 @@ Derick) run the following commands for you:
122
133
6. For the first RC, write the doc team (phpdoc@lists.php.net) about updating the
123
134
INSTALL and win32/install.txt files which are generated from the PHP manual sources.
124
135
125
- 7. Publish the announce on www.php.net as well (for all releases, alpha, RCs or other)
126
-
127
136
Rolling a stable release
128
137
------------------------
129
138
130
- 1. Check windows snapshot builder logs (http://snaps.php.net/win32/snapshot-STABLE.log f.e.)
131
-
132
- 2. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
139
+ 1. Checkout your release branch, you should have created when releasing previous RC
140
+ and bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
133
141
134
- 3. **Merge** all related sections in NEWS (f.e. merge the 5.4.1RC1 and 5.4.0 sections)
142
+ 2. If a CVE commit needs to be merged to the release, then have it commited to
143
+ the base branches and merged upwards as usual (f.e commit the CVE fix to 5.3,
144
+ merge to 5.4, 5.5 etc...). Then you can cherry-pick it in your release branch.
145
+ Don't forget to update NEWS manually in an extra commit then.
135
146
136
- 4 . Commit those changes
147
+ 3 . Commit those changes
137
148
138
- 5 . run the "scripts/dev/credits" script in php-src and commit the changes in the
149
+ 4 . run the "scripts/dev/credits" script in php-src and commit the changes in the
139
150
credits files in ext/standard.
140
151
141
- 6. tag the repository with the version f.e. "``git tag -s php-5.4.1``"
142
- (of course, you need to change that to the version you're rolling an RC for).
143
- When making 5.X release, you need to tag the Zend directory separately!!
152
+ 5. Compile and make test, with and without ZTS, using the right Bison version
153
+ (for example, for 5.5, Bison 2.4.1 is used)
144
154
145
- 7. Bump up the version numbers in ``main/php_version.h``, ``configure.in`` and
146
- possibly ``NEWS`` again, to the **next** version. F.e. if the release candidate
147
- was "5.4.1RC1" then the new one should be "5.4.1RC2-dev" - regardless if we get
148
- a new RC or not. This is to make sure ``version_compare()`` can correctly work.
155
+ 6. Check ./sapi/cli/php -v output for version matching.
149
156
150
- 8. Commit those changes
157
+ 7. tag the repository with the version f.e. "``git tag -s php-5.4.1``"
151
158
152
- 9. Log in onto the snaps box and go into the correct tree (f.e. the PHP-5.4
153
- branch if you're rolling 5.5.x releases).
159
+ 8. Push the tag f.e. "``git push origin php-5.4.1``"
154
160
155
- 10. You do not have to update the tree, but of course you can with "``git pull
156
- origin <branch>``".
161
+ 9. run: ``PHPROOT=. ./makedist php 5.4.1``, this will export the tag, create configure
162
+ and build three tarballs (gz, bz2 and xz).
163
+ Check if the pear files are updated (phar).
157
164
158
- 11. run: ``./makedist php 5.4.1``, this will export the tree, create configure
159
- and build two tarballs (one gz and one bz2).
165
+ 10. Generate the GPG signature files for the archives.
166
+ ``gpg -u YOUREMAIL --armor --detach-sign php-X.Y.Z.tar.xxx``
160
167
161
- 12 . Commit those two tarballs to web/php-distributions.git, then update the git
162
- submodule reference in web/php.git:
163
- git submodule init;
168
+ 11 . Commit and push all the tarballs and signature files to web/php-distributions.git,
169
+ then update the git submodule reference in web/php.git:
170
+ `` git submodule init;
164
171
git submodule update;
165
172
cd distributions;
166
173
git pull origin master;
167
174
cd ..;
168
175
git commit distributions;
169
- git push;
170
-
171
- 13. Once the release has been tagged, contact the PHP Windows development team
172
- (internals-win@lists.php.net) so that Windows binaries can be created. Once
173
- those are made, they should be committed to SVN too.
176
+ git push;``
177
+ This is to fetch the last commit id from php-distributions.git and commit this
178
+ last commit id to web/php.git, then, mirrors will now sync
174
179
175
- 14. Check if the pear files are updated (phar for 5.1+ or run pear/make-pear-bundle.php with 4.4)
176
-
177
- 15. When making a final release, also remind the PHP Windows development team
178
- (internals-win@lists.php.net) to prepare the installer packages for Win32.
179
-
180
- 16. Make sure proper documentation exists for all new features/changes.
181
- Coordinate the release with the PHP Documentation team.
180
+ 12. Once the release has been tagged, contact the PHP Windows development team
181
+ (internals-win@lists.php.net) so that Windows binaries can be created.
182
182
183
183
Getting the stable release announced
184
184
------------------------------------
185
185
186
186
1. Run the bumpRelease script for phpweb on your local checkout
187
187
188
- a. ``php bin/bumpRelease 5`` (or ``php bin/bumpRelease 4`` for PHP4)
188
+ a. ``php bin/bumpRelease 5`` to create the release file (releases/x_y_z.php)
189
+ The release announcement file should list in detail security fixes and
190
+ changes in behavior (whether due to a bug fix or not).
189
191
190
192
b. In case multiple PHP minor versions are in active development you have
191
193
to manually copy the old information to include/releases.inc
@@ -205,7 +207,13 @@ Getting the stable release announced
205
207
206
208
f. if the windows builds aren't ready yet prefix the "windows" key with a dot (".windows")
207
209
208
- 3. Update the ChangeLog file for the given major version
210
+ 3. Update phpweb/include/releases.php with the old release info
211
+ (updates the download archives)
212
+
213
+ 4. Update php-qa/include/release-qa.php and add the next version as an QARELEASE
214
+ (prepare for next RC)
215
+
216
+ 5. Update the ChangeLog file for the given major version
209
217
f.e. ``ChangeLog-5.php`` from the NEWS file
210
218
211
219
a. go over the list and put every element on one line
@@ -225,27 +233,22 @@ f.e. ``ChangeLog-5.php`` from the NEWS file
225
233
IV. ``s/Fixed PECL bug #\([0-9]\+\)/<?php peclbugfix(\1); ?>/``
226
234
227
235
V. ``s/FR #\([0-9]\+\)/FR <?php bugl(\1); ?>/``
236
+
237
+ e. You may want to try php-web/bin/news2html to automate this task
228
238
229
- 4. ``cp releases/5_4_0.php releases/5_4_1.php``
230
-
231
- 5. ``git add releases/5_4_1.php``
232
-
233
- 6. Update the ``releases/*.php`` file with relevant data. The release
234
- announcement file should list in detail:
235
-
236
- a. security fixes,
237
-
238
- b. changes in behavior (whether due to a bug fix or not)
239
-
240
- 7. Add a short notice to phpweb stating that there is a new release, and
239
+ 6. Add a short notice to phpweb stating that there is a new release, and
241
240
highlight the major important things (security fixes) and when it is important
242
241
to upgrade.
243
242
244
243
a. Call php bin/createNewsEntry in your local phpweb checkout
245
244
246
245
b. Add the content for the news entry
247
246
248
- 8. Commit all the changes.
247
+ 7. **Check mirrors have been synced before announcing or pushing news**
248
+ Try, f.e. http://www.php.net/get/php-5.5.1.tar.bz2/from/a/mirror
249
+ Try several mirrors, mirrors may update slowly (may take an hour)
250
+
251
+ 8. Commit all the changes to their respective git repos
249
252
250
253
9. Wait an hour or two, then send a mail to php-announce@lists.php.net,
251
254
php-general@lists.php.net and internals@lists.php.net with a text similar to
0 commit comments