@@ -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,30 +51,44 @@ 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 two tarballs (one gz and one bz2 ).
81
+ 11 . run: ``PHPROOT=. ./makedist 5.4.2RC2``, this will export the tree, create configure
82
+ and build three tarballs (gz, bz2 and xz ).
68
83
69
- 9 . Copy those two 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
70
85
directory "downloads/". Copy them into there, so that the system can generate
71
- 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 .
72
87
73
- 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,
74
89
f.e. http://downloads.php.net/derick/
75
90
76
- 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
77
92
(internals-win@lists.php.net) so that Windows binaries can be created. Once
78
93
those are made, they should be placed into the same directory as the source snapshots.
79
94
@@ -105,9 +120,9 @@ Derick) run the following commands for you:
105
120
106
121
Note: Remember to update the MD5 checksum information.
107
122
108
- 4. Update ``php.git/include/version.inc`` (x=major version number)
123
+ 4. Update ``web/ php.git/include/version.inc`` (x=major version number)
109
124
110
- a. ``$PHP_x_RC`` = "5.4.0RC1"
125
+ a. ``$PHP_x_RC`` = "5.4.0RC1" (should be set to "false" before)
111
126
112
127
b. ``$PHP_x_RC_DATE`` = "06 September 2007"
113
128
@@ -118,67 +133,61 @@ Derick) run the following commands for you:
118
133
6. For the first RC, write the doc team (phpdoc@lists.php.net) about updating the
119
134
INSTALL and win32/install.txt files which are generated from the PHP manual sources.
120
135
121
- 7. Publish the announce on www.php.net as well (for all releases, alpha, RCs or other)
122
-
123
136
Rolling a stable release
124
137
------------------------
125
138
126
- 1. Check windows snapshot builder logs (http://snaps.php.net/win32/snapshot-STABLE.log f.e.)
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``.
127
141
128
- 2. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
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.
129
146
130
- 3. **Merge** all related sections in NEWS (f.e. merge the 5.4.1RC1 and 5.4.0 sections)
147
+ 3. Commit those changes
131
148
132
- 4. Commit those changes
133
-
134
- 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
135
150
credits files in ext/standard.
136
151
137
- 6. tag the repository with the version f.e. "``git tag -s php-5.4.1``"
138
- (of course, you need to change that to the version you're rolling an RC for).
139
- 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)
140
154
141
- 7. Bump up the version numbers in ``main/php_version.h``, ``configure.in`` and
142
- possibly ``NEWS`` again, to the **next** version. F.e. if the release candidate
143
- was "5.4.1RC1" then the new one should be "5.4.1RC2-dev" - regardless if we get
144
- 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.
145
156
146
- 8. Commit those changes
157
+ 7. tag the repository with the version f.e. "``git tag -s php-5.4.1``"
147
158
148
- 9. Log in onto the snaps box and go into the correct tree (f.e. the PHP-5.4
149
- branch if you're rolling 5.5.x releases).
159
+ 8. Push the tag f.e. "``git push origin php-5.4.1``"
150
160
151
- 10. You do not have to update the tree, but of course you can with "``git pull
152
- 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).
153
164
154
- 11. run: ``./makedist php 5.4.1``, this will export the tree, create configure
155
- 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``
156
167
157
- 12 . Commit those two tarballs to web/php-distributions.git, then update the git
158
- submodule reference in web/php.git:
159
- 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;
160
171
git submodule update;
161
172
cd distributions;
162
173
git pull origin master;
163
174
cd ..;
164
175
git commit distributions;
165
- git push;
166
-
167
- 13. Once the release has been tagged, contact the PHP Windows development team
168
- (internals-win@lists.php.net) so that Windows binaries can be created. Once
169
- 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
170
179
171
- 14. Check if the pear files are updated (phar for 5.1+ or run pear/make-pear-bundle.php with 4.4)
172
-
173
- 15. When making a final release, also remind the PHP Windows development team
174
- (internals-win@lists.php.net) to prepare the installer packages for Win32.
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.
175
182
176
183
Getting the stable release announced
177
184
------------------------------------
178
185
179
186
1. Run the bumpRelease script for phpweb on your local checkout
180
187
181
- 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).
182
191
183
192
b. In case multiple PHP minor versions are in active development you have
184
193
to manually copy the old information to include/releases.inc
@@ -198,7 +207,13 @@ Getting the stable release announced
198
207
199
208
f. if the windows builds aren't ready yet prefix the "windows" key with a dot (".windows")
200
209
201
- 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
202
217
f.e. ``ChangeLog-5.php`` from the NEWS file
203
218
204
219
a. go over the list and put every element on one line
@@ -218,27 +233,22 @@ f.e. ``ChangeLog-5.php`` from the NEWS file
218
233
IV. ``s/Fixed PECL bug #\([0-9]\+\)/<?php peclbugfix(\1); ?>/``
219
234
220
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
221
238
222
- 4. ``cp releases/5_4_0.php releases/5_4_1.php``
223
-
224
- 5. ``git add releases/5_4_1.php``
225
-
226
- 6. Update the ``releases/*.php`` file with relevant data. The release
227
- announcement file should list in detail:
228
-
229
- a. security fixes,
230
-
231
- b. changes in behavior (whether due to a bug fix or not)
232
-
233
- 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
234
240
highlight the major important things (security fixes) and when it is important
235
241
to upgrade.
236
242
237
243
a. Call php bin/createNewsEntry in your local phpweb checkout
238
244
239
245
b. Add the content for the news entry
240
246
241
- 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
242
252
243
253
9. Wait an hour or two, then send a mail to php-announce@lists.php.net,
244
254
php-general@lists.php.net and internals@lists.php.net with a text similar to
0 commit comments