wiki:ReleaseProcedure

Version 7 (modified by radix, 8 years ago) (diff)

Start moving some stuff here

RELEASING TWISTED CORE OR A SUBPROJECT

  1. Fix all release-critical bugs in http://twistedmatrix.com/bugs/
  2. Verify that buildbot ( http://twistedmatrix.com/buildbot/ ) is ALL GREEN (for all platforms that it was green for on the last release).
  3. svn up.
  4. Create a ticket for releasing your project at http://twistedmatrix.com/bugs/.
  5. Branch the repo to /branches/releases/twisted-[projname]-<a.b>.x-[ticketnumber]. That last 'x' is literal.
  6. Switch to that branch.
  7. Write release notes in proj/topfiles/NEWS, including a date and a version number.
  8. Run ./admin/change-versions. Specify the versions of whatever you're releasing. Core should be versioned as release.major.minor, where minors are only bugfixes, majors are functionality increases, and releases are major milestones.
  9. Add a Quote of the Release to twisted/topfiles/README if you are releasing Twisted Core.
  10. Run the release script: ./admin/release-twisted --commands=exportTemp,makeDocProj,makeBallProj
  11. Test the produced tarballs. Install them, run tests, etc.
  12. svn commit
  13. Tag the release. svn cp -m 'Tagging for 0.2.0 release' $TREPO/branches/<a.b>.x $TREPO/tags/releases/<a.b.c>.
  14. Merge the branch to trunk.
  15. Distribute, announce, and so forth.

RELEASING TWISTED SUMO

  1. From Twisted trunk WC, mkdir twistedballs.
  2. Put all current subproject tarballs into twistedballs. Just copy unchanged projects from the previous Twisted tarball.
  3. Put ZopeInterface-*.tgz in twistedballs.
  4. ./admin/change-versions --sumo-only, and make sure all the versions are appropriately specified for the tarballs you've included. Eventually it shouldn't be necessary to change any version but the Twisted one.
  5. './admin/release-twisted --commands=makeBallSumo --sumo-version=a.b.x.y' where 'a.b.x' is the version of Twisted Core contained in this release (see point 6 in "Releasing Core or a Subproject" above), and 'y' is simply a monotonically increasing nonnegative integer as long as 'a.b.x' is the same as the last release.
  6. Commit the changed README file to trunk, author: release-twisted, reviewer: you.
  7. Distribute, announce, etc.

CREATING A NEW SUBPROJECT

  1. Add the project name to twisted/python/dist.py's list of subprojects and setup.py's list of subprojects.
  2. mkdir twisted/<proj>/topfiles
  3. Create a setup.py, copying/modifying from e.g. twisted/conch/topfiles/setup.py.
  4. If your project has extension modules, see twisted/runner/topfiles/setup.py as an example.

OK SOME OTHER STUFF

  1. Put the release tarball in the appropriate subdirectory of /twisted/Releases/
  2. Edit the wiki page for the released project
    1. Add a new section for current stable release
      1. Put new version number in visible text
      2. Point the download link at the new download URL on tmrc
    2. Delete any existing old stable release
    3. Relabel the old stable release as the old stable release
    4. Point the release notes at the trac browser URL for NEWS file in the release tag (if the release is Twisted, point to all of the NEWS files for all included subprojects)
  3. Update the documentation
    1. Create a ticket
    2. Create a branch of WebSite
    3. Switch to the branch
    4. Update website documentation
    5. Delete old doc directory
    6. Commit
    7. Copy doc out of release tarball into WebSite WC in place of old doc directory
    8. svn add
    9. commit
    10. Generate new book.pdf with admin/process-docs and put it in the branch in the right place. Do not be afraid of the output of process-docs.
    11. Follow rest of normal UQDS with the following additions:
      1. Bring up staging server on alternate ports on pyramid
        1. More detail here
      2. Make sure the links are correct, the text is properly processed, etc
  4. Update the wiki front page with new version number and download links
  5. Send out release announcement
    1. twisted-python@…
    2. python-announce@…
    3. freshmeat
    4. Update front page of twistedmatrix.com.

Here is some Crap that I will paste on to the page.

radix@takkun ~/Projects/WebSite/branches/docs-2.4-1749/vhosts/twistedmatrix.com/projects% for x in conch core lore mail names web words; do  
cp -r Twisted-2.4.0/Twisted`python -c 'import sys; print sys.argv[1].title()' $x`*/doc/* $x/documentation/
svn add $x/documentation/*
done

Was that good

Here is some more

from twisted.python import filepath as fp
source = fp.FilePath('/path/to/TwistedCore-a.b.c/docs')
dest = fp.FilePath('/path/to/svn/working/copy/WebSite/vhosts/twistedmatrix.com/projects/core/documentation')
source.copyTo(dest)

Weeeeee. This does a thing that is useful if it works which it might not but it could (ish).