diff --git a/doc/release_steps.txt b/doc/release_steps.txt index f1b710581..505c1ed42 100644 --- a/doc/release_steps.txt +++ b/doc/release_steps.txt @@ -3,44 +3,73 @@ Steps in doing an ns-3 release 1. check out a clean ns-3-dev somewhere using ns-3-allinone (you will need it) - hg clone http://code.nsnam.org/ns-3-allinone - ./download.py - - ./build.py + - ./build.py --enable-examples --enable-tests - confirm that the release builds cleanly. - cd ns-3-dev - ensure that tests pass (./test.py) 2. prepare the source files - revise and check in AUTHORS, if needed - - revise and check in RELEASE_NOTES. Make sure to add the Availability - section. + - revise and check in RELEASE_NOTES. Make sure to edit the Availability + section if this is a final release. - DO NOT change VERSION at this time - confirm that Doxygen builds cleanly (./waf doxygen), - and check in any necessary changes + and check in any necessary changes. Currently, doxygen does not build + cleanly, we need to fix this over time. 3. build an ns-3-allinone distribution - - change back into the allinone directory + - you may want to check out a clean ns-3-allinone and ns-3-dev somewhere, + otherwise the tarball will be huge + - change into the allinone directory - ./dist.py - this will create an ns-allinone-dev.tar.bz2 tarball 4. test dev tarball on release platforms - ./test.py - other scripts you can think of -5. once you are happy with the tarball and tag ns-3-dev +5. once you are happy with the tarball, tag ns-3-dev - cd into ns-3-dev - - hg tag "ns-3.x" - - hg push + - if release candidate + -- hg tag "ns-3.x-RCy" + -- hg push ssh://code@code.nsnam.org//home/code/repos/ns-3.x-RCy + - else if final release + -- hg tag "ns-3.x" + -- hg push ssh://code@code.nsnam.org//home/code/repos/ns-3.x 6. clone the tagged ns-3-dev and place it on the repository - ssh code.nsnam.org; sudo bash; su code; - - cp -r /home/code/repos/ns-3-dev /home/code/repos/ns-3.x - - cd /home/code/repos/ns-3.x/.hg and edit the hgrc appropriately: - "description = ns-3.x release - name = ns-3.x" -7. check out a clean version of the new release (ns-3.x) somewhere - - hg clone http://code.nsnam.org/ns-3.x -8. Update the VERSION for this new release + - if release candidate + -- cp -r /home/code/repos/ns-3-dev /home/code/repos/ns-3.x-RCy + -- cd /home/code/repos/ns-3.x-RCy/.hg and edit the hgrc appropriately: + [paths] + default = /home/code/repos/ns-3.x-RCy + [web] + description = ns-3.x-RCy release + name = ns-3.x-RCy + contact = + - else if final release + -- cp -r /home/code/repos/ns-3-dev /home/code/repos/ns-3.x + -- cd /home/code/repos/ns-3.x/.hg and edit the hgrc appropriately: + [paths] + default = /home/code/repos/ns-3.x + [web] + description = ns-3.x release + name = ns-3.x + contact = +7. If this is a final release (not RC) + - archive ns-3.x RCs in /home/code/archived-repos + - delete ns-3.x RCs from /home/code/repos +8. check out a clean version of the new release (ns-3.x) or (ns-3.x-RCy) somewhere + - hg clone http://code.nsnam.org/ns-3.x or (-RCy) +9. Update the VERSION for this new release - change the string 3-dev in the VERSION file to the real version (e.g. 3.7 or 3.7-RC1) This must agree with the version name you chose in the clone. - - hg commit -m "update VERSION to ns-3.x" + - change the version and release string for the documentation in + doc/manual/source, doc/tutorial/source, and doc/models/source conf.py files + This should hopefully be updated in the future to simply pull from the + VERSION file. + - hg commit -m "update VERSION to ns-3.x" or (-RCy), you get the point - hg push ssh://code@code.nsnam.org//home/code/repos/ns-3.x - -9. Run the tests on the new release (debug and optimized) like a user would - You need to use ns-3-allinone since you will use that to make the distro +10. Run the tests on the new release (debug and optimized) like a user would + You need to use ns-3-allinone since you will use that to make the distro + It is convenient to let buildbot do much of this work for you, the day of + the release - hg clone http://code.nsnam.org/ns-3-allinone ns-3-allinone-3.x-test - cd !$ - ./download.py -n ns-3.x @@ -53,7 +82,7 @@ Steps in doing an ns-3 release - ./test.py - ./test.py -g - There should be no test errors at this time -10. Create final tarballs +11. Create final tarballs You need to work with a clean ns-3-allinone-3.x directory - hg clone http://code.nsnam.org/ns-3-allinone ns-3-allinone-3.x - cd !$ @@ -61,46 +90,43 @@ Steps in doing an ns-3 release - ./dist.py - notice we did not build here - this will create an ns-allinone-3.x.tar.bz2 tarball -11. upload "ns-allinone-3.x.tar.bz2" to the /var/www/html/releases/ directory on + - test this tarball out somewhere just to make sure everything went ok +12. upload "ns-allinone-3.x.tar.bz2" to the /var/www/html/releases/ directory on the www.nsnam.org server - scp ns-allinone-3.x.tar.bz2 www.nsnam.org:~ - ssh www.nsnam.org - sudo cp ns-allinone-3.x.tar.bz2 /var/www/html/releases - cd !$ -12. give it 644 file permissions, and user/group = apache if it is not already +13. give it 644 file permissions, and user/group = apache if it is not already - sudo chown apache:apache ns-allinone-3.x.tar.bz2 - sudo chmod 644 ns-allinone-3.x.tar.bz2 -13. update web pages on www.nsnam.org (source is in the www/ module) +14. if this is a final release (not RC) + - delete RC releases from /var/www/html/releases +15. if final release (not RC) build release documentation + - sudo bash; su nsnam; cd /home/nsnam/bin + - edit ./update-manual-release, ./update-tutorial-release, + ./update-doxygen-release and make sure RELEASE variable is + set correctly + - run ./update-manual-release, ./update-tutorial-release, + ./update-doxygen-release +16. update web pages on www.nsnam.org (source is in the www/ module) - clone the source repo (hg clone http://code.nsnam.org/www) - update references to releases in html_src (consider "grep 'ns-3\.' *.html" for a new release) (consider "grep 'RCx' *.html" for a new RC) + (consider looking at past commits to www for changes) - update references to releases in scripts/ - - update roadmap on wiki - commit and push changes -14. update the server + - update roadmap on wiki +17. update the server - build and update HTML directory on the server -- ssh www.nsnam.org; sudo bash; su nsnam; -- run ~/bin/update-html - - build and update Doxygen directory on the server - -- edit ~/bin/update-doxygen-release file and change RELEASE variable - to the right version number - -- run ~/bin/update-doxygen-release -15. build release documentation - - if this is final release (not RC) - -- archive old release documentation in /var/www/html/docs/release - by creating release specific folder and moving current - documenation into this folder - -- from ns-3.x/doc, enter manual/ testing/ and tutorial directories - and build the documentation using make - -- copy this newly created documentation into - /var/www/html/docs/release making sure to copy only the - necessary files -16. Final checks - - check manual, testing, and tutorial documentation links +18. Final checks + - check manual, tutorial, model, and doxygen documentation links - download tarball from web, build and run tests for as many targets as you can - download release from mercurial, build and run tests for as many targets as you can - test and verify until you're confident the release is solid. -17. announce to ns-developers, with summary of release notes +19. announce to ns-developers, with summary of release notes