Annotation of embedaddon/php/README.RELEASE_PROCESS, revision 1.1
1.1 ! misho 1: =======================
! 2: PHP Release Process
! 3: =======================
! 4:
! 5: General notes and tips
! 6: ----------------------
! 7:
! 8: 1. Do not release on Fridays, Saturdays or Sundays
! 9: because the sysadmins can not upgrade stuff then.
! 10:
! 11: 2. Package the day before a release. So if the release is to be on Thursday,
! 12: package on Wednesday.
! 13:
! 14: 3. Ensure that Windows builds will work before packaging
! 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.
! 20:
! 21: 5. Verify the tags to be extra sure everything was tagged properly.
! 22:
! 23: 6. Moving extensions from/to PECL requires write acces to the destination.
! 24: Most developers should have this.
! 25:
! 26: Moving extensions from php-src to PECL
! 27: - Checkout the pecl directory, most likely you want a sparse-root checkout
! 28: svn co --depth=empty https://svn.php.net/repository/pecl
! 29: - Create an directory for the extension incl. branch and tag structure,
! 30: no trunk at this point and commit this to svn
! 31: cd pecl; mkdir foo foo/tags foo/branches; svn add foo; svn commit
! 32: - Move the extension from php-src to the new location
! 33: svn mv https://svn.php.net/repository/php/php-src/trunk/ext/foo \
! 34: https://svn.php.net/repository/pecl/foo/trunk
! 35:
! 36: If the extension is still usable or not dead, in cooperation with the extension
! 37: maintainers if any:
! 38: - create the pecl.php.net/foo package and its content, license, maintainer
! 39: - create the package.xml, commit
! 40: - release the package
! 41:
! 42: For Moving extensions from PECL to php-src the svn mv has to be tone the other
! 43: way round.
! 44:
! 45: Rolling a non stable release (alpha/beta/RC)
! 46: --------------------------------------------
! 47:
! 48: 1. Check windows snapshot builder logs (http://windows.php.net/downloads/snaps/ the last revision)
! 49:
! 50: 2. run the "scripts/dev/credits" script in php-src and commit the changes in the
! 51: credits files in ext/standard.
! 52:
! 53: 3. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
! 54: Do not use abbreviations for alpha and beta.
! 55:
! 56: 4. Commit those changes and note the revision id.
! 57:
! 58: 5. tag the repository with the version. To do the tag in a fast way do a svn copy on the server using full URLs. You should use the revision id from the above commit to prevent mistakes in case there was a commit in between. f.e. "``svn cp https://svn.php.net/repository/php/php-src/branches/PHP_5_3@308399 https://svn.php.net/repository/php/php-src/tags/php_5_3_6RC1``"
! 59: (of course, you need to change that to the version you're rolling an RC for). Mail php-internals to announce the tag so tests/validation/check can be done prior to package it. It is especially important for RCs.
! 60:
! 61: 6. Bump up the version numbers in ``main/php_version.h``, ``configure.in``
! 62: and possibly ``NEWS`` again, to the **next** version. F.e. if the release
! 63: candidate was "4.4.1RC1" then the new one should be "4.4.1RC2-dev" - regardless
! 64: if we get a new RC or not. This is to make sure ``version_compare()`` can
! 65: correctly work.
! 66:
! 67: 7. Commit those changes
! 68:
! 69: 8. Log in onto the snaps box and go into the correct tree (f.e. the PHP_4_4
! 70: branch if you're rolling 4.4.x releases).
! 71:
! 72: 9. You do not have to update the tree, but of course you can with "``svn up``".
! 73:
! 74: 10. run: ``./makedist php 4.4.1RC1``, this will export the tree, create configure
! 75: and build two tarballs (one gz and one bz2).
! 76:
! 77: 11. Copy those two tarballs to www.php.net, in your homedir there should be a
! 78: directory "downloads/". Copy them into there, so that the system can generate
! 79: MD5 sums. If you do not have this directory, talk to Derick.
! 80:
! 81: 12. Now the RC can be found on http://downloads.php.net/yourname,
! 82: f.e. http://downloads.php.net/derick/
! 83:
! 84: 13. Once the release has been tagged, contact the PHP Windows development team
! 85: (internals-win@lists.php.net) so that Windows binaries can be created. Once
! 86: those are made, they should be placed into the same directory as the source snapshots.
! 87:
! 88: Getting the non stable release (alpha/beta/RC) announced
! 89: --------------------------------------------------------
! 90:
! 91: 1. Send an email (see example here: http://news.php.net/php.internals/19486)
! 92: **To** ``internals@lists.php.net`` and ``php-general@lists.php.net`` lists
! 93: pointing out "the location of the release" and "the possible release date of
! 94: either the next RC, or the final release".
! 95:
! 96: 2. Send an email (see example here http://news.php.net/php.pear.qa/5201) **To**
! 97: ``php-qa@lists.php.net`` and ``primary-qa-tests@lists.php.net``.
! 98: This email is to notify the selected projects about a new release so that they
! 99: can make sure their projects keep working. Make sure that you have been setup
! 100: as a moderator for ``primary-qa-tests@lists.php.net`` by having someone (Wez,
! 101: Derick) run the following commands for you:
! 102:
! 103: ``ssh lists.php.net``
! 104:
! 105: ``sudo -u ezmlm ezmlm-sub ~ezmlm/primary-qa-tester/mod moderator-email-address``
! 106:
! 107: 3. Update ``web/qa/trunk/include/release-qa.php`` with the appropriate information.
! 108: See the documentation within release-qa.php for more information, but all releases
! 109: and RCs are configured here. Only $QA_RELEASES needs to be edited.
! 110:
! 111: Example: When rolling an RC, set the 'rc' with appropriate information for the
! 112: given version.
! 113:
! 114: Note: Remember to update the MD5 checksum information.
! 115:
! 116: 4. Update ``web/php/trunk/include/version.inc`` (x=major version number)
! 117:
! 118: a. ``$PHP_x_RC`` = "5.3.0RC1"
! 119:
! 120: b. ``$PHP_x_RC_DATE`` = "06 September 2007"
! 121:
! 122: 5. Commit those changes:
! 123:
! 124: a. ``svn commit web/qa/trunk web/php-bugs/trunk web/php/trunk``
! 125:
! 126: 6. For the first RC, write the doc team (phpdoc@lists.php.net) about updating the
! 127: INSTALL and win32/install.txt files which are generated from the PHP manual sources.
! 128:
! 129: 7. Publish the announce on www.php.net as well (for all releases, alpha, RCs or other)
! 130:
! 131: Rolling a stable release
! 132: ------------------------
! 133:
! 134: 1. Check windows snapshot builder logs (http://snaps.php.net/win32/snapshot-STABLE.log f.e.)
! 135:
! 136: 2. Bump the version numbers in ``main/php_version.h``, ``configure.in`` and possibly ``NEWS``.
! 137:
! 138: 3. **Merge** all related sections in NEWS (f.e. merge the 4.4.1RC1 and 4.4.0 sections)
! 139:
! 140: 4. Commit those changes
! 141:
! 142: 5. run the "scripts/dev/credits" script in php-src and commit the changes in the
! 143: credits files in ext/standard.
! 144:
! 145: 6. tag the repository with the version f.e. "``cvs tag php_4_4_1``"
! 146: (of course, you need to change that to the version you're rolling an RC for).
! 147: When making 5.X release, you need to tag the Zend directory separately!!
! 148:
! 149: 7. Bump up the version numbers in ``main/php_version.h``, ``configure.in`` and
! 150: possibly ``NEWS`` again, to the **next** version. F.e. if the release candidate
! 151: was "4.4.1RC1" then the new one should be "4.4.1RC2-dev" - regardless if we get
! 152: a new RC or not. This is to make sure ``version_compare()`` can correctly work.
! 153:
! 154: 8. Commit those changes
! 155:
! 156: 9. Log in onto the snaps box and go into the correct tree (f.e. the PHP_4_4
! 157: branch if you're rolling 4.4.x releases).
! 158:
! 159: 10. You do not have to update the tree, but of course you can with "``cvs up -dP``".
! 160:
! 161: 11. run: ``./makedist php 4.4.1``, this will export the tree, create configure
! 162: and build two tarballs (one gz and one bz2).
! 163:
! 164: 12. Commit those two tarballs to CVS (phpweb/distributions)
! 165:
! 166: 13. Once the release has been tagged, contact the PHP Windows development team
! 167: (internals-win@lists.php.net) so that Windows binaries can be created. Once
! 168: those are made, they should be committed to SVN too.
! 169:
! 170: 14. Check if the pear files are updated (phar for 5.1+ or run pear/make-pear-bundle.php with 4.4)
! 171:
! 172: 15. When making a final release, also remind the PHP Windows development team
! 173: (internals-win@lists.php.net) to prepare the installer packages for Win32.
! 174:
! 175: Getting the stable release announced
! 176: ------------------------------------
! 177:
! 178: 1. Run the bumpRelease script for phpweb on your local checkout
! 179:
! 180: a. ``php bin/bumpRelease 5`` (or ``php bin/bumpRelease 4`` for PHP4)
! 181:
! 182: 2. Edit ``phpweb/include/version.inc`` and change (X=major release number):
! 183:
! 184: a. ``$PHP_X_VERSION`` to the correct version
! 185:
! 186: b. ``$PHP_X_DATE`` to the release date
! 187:
! 188: c. ``$PHP_X_MD5`` array and update all the md5 sums
! 189:
! 190: d. set ``$PHP_X_RC`` to false!
! 191:
! 192: e. Make sure there are no outdated "notes" or edited "date" keys in the
! 193: ``$RELEASES[X][$PHP_X_VERSION]["source"]`` array
! 194:
! 195: f. if the windows builds aren't ready yet prefix the "windows" key with a dot (".windows")
! 196:
! 197: 3. Update the ChangeLog file for the given major version
! 198: f.e. ``ChangeLog-4.php`` from the NEWS file
! 199:
! 200: a. go over the list and put every element on one line
! 201:
! 202: b. check for &, < and > and escape them if necessary
! 203:
! 204: c. remove all the names at the ends of lines
! 205:
! 206: d. for marking up, you can do the following (with VI):
! 207:
! 208: I. ``s/^- /<li>/``
! 209:
! 210: II. ``s/$/<\/li>/``
! 211:
! 212: III. ``s/Fixed bug #\([0-9]\+\)/<?php bugfix(\1); ?>/``
! 213:
! 214: IV. ``s/Fixed PECL bug #\([0-9]\+\)/<?php peclbugfix(\1); ?>/``
! 215:
! 216: V. ``s/FR #\([0-9]\+\)/FR <?php bugl(\1); ?>/``
! 217:
! 218: 4. ``cp releases/4_4_0.php releases/4_4_1.php``
! 219:
! 220: 5. ``cvs add releases/4_4_1.php``
! 221:
! 222: 6. Update the ``releases/*.php`` file with relevant data. The release
! 223: announcement file should list in detail:
! 224:
! 225: a. security fixes,
! 226:
! 227: b. changes in behavior (whether due to a bug fix or not)
! 228:
! 229: 7. Add a short notice to phpweb stating that there is a new release, and
! 230: highlight the major important things (security fixes) and when it is important
! 231: to upgrade.
! 232:
! 233: a. Call php bin/createNewsEntry in your local phpweb checkout
! 234:
! 235: b. Add the content for the news entry
! 236:
! 237: 8. Commit all the changes.
! 238:
! 239: 9. Wait an hour or two, then send a mail to php-announce@lists.php.net,
! 240: php-general@lists.php.net and internals@lists.php.net with a text similar to
! 241: http://news.php.net/php.internals/17222.
! 242:
! 243: 10. Update ``php-bugs-web/include/functions.php`` to include the new version
! 244: number, and remove the RC from there.
! 245:
! 246: 11. Update ``qaweb/include/release-qa.php``
! 247:
! 248: - Update $QA_RELEASES with the appropriate information, which means bumping
! 249: the version number to an upcoming version.
! 250:
! 251: Example: If PHP 5.3.7 is being released, then PHP 5.3.8 is the next QA version,
! 252: so replace 5.3.7 with 5.3.8 within $QA_RELEASES.
! 253:
! 254: Re-releasing the same version (or -pl)
! 255: --------------------------------------
! 256:
! 257: 1. Commit the new binaries to ``phpweb/distributions/``
! 258:
! 259: 2. Edit ``phpweb/include/version.inc`` and change (X=major release number):
! 260:
! 261: a. If only releasing for one OS, make sure you edit only those variables
! 262:
! 263: b. ``$PHP_X_VERSION`` to the correct version
! 264:
! 265: c. ``$PHP_X_DATE`` to the release date
! 266:
! 267: d. ``$PHP_X_MD5`` array and update all the md5 sums
! 268:
! 269: e. Make sure there are no outdated "notes" or edited "date" keys in the
! 270: ``$RELEASES[X][$PHP_X_VERSION]["source"]`` array
! 271:
! 272: 3. Add a short notice to phpweb stating that there is a new release, and
! 273: highlight the major important things (security fixes) and when it is important
! 274: to upgrade.
! 275:
! 276: a. Call php bin/createNewsEntry in your local phpweb checkout
! 277:
! 278: b. Add the content for the news entry
! 279:
! 280: 4. Commit all the changes (``include/version.inc``, ``archive/archive.xml``,
! 281: ``archive/entries/YYYY-MM-DD-N.xml``)
! 282:
! 283: 5. Wait an hour or two, then send a mail to php-announce@lists.php.net,
! 284: php-general@lists.php.net and internals@lists.php.net with a text similar to
! 285: the news entry.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>