| @@ -15,39 +15,26 @@ Note: This document was updated in the context of releasing Ant 1.9.5. | |||
| The issue of whether to create a branch for the release should be | |||
| discussed in the release vote. | |||
| The level of bugs reported can delay things. Generally, give a few | |||
| weeks to "close" the source tree to further changes so people can | |||
| finalise contributions, etc. At this time, the first beta will be | |||
| cut and there will be then a period of beta testing, usually 1 | |||
| month but this should be flexible. | |||
| 2. Note that any mention of a deadline causes a flood of bug fixes, new tasks, | |||
| etc. This needs to be managed as best it can. Some fixes will be applied, | |||
| others held over. Make this clear in the release plan. The committers and | |||
| particularly the release manager will need to make judgement calls here. | |||
| Anything too "big" is likely to be held over. | |||
| 3. We used until Ant 1.6 to create branches, for instance ANT_16_BRANCH | |||
| to allow parallel development on trunk and on the current branch. | |||
| In the case of parallel development on a branch and on trunk, the project | |||
| version would be x.y+1 on trunk and x.y on the branch, for instance 2.0.alpha on trunk | |||
| and 1.9.xbeta on the branch. | |||
| 2. We used until Ant 1.6 to create branches, for instance ANT_16_BRANCH | |||
| to allow parallel development on master and on the current branch. | |||
| Given the slow development speed we've reached with 1.9.x this | |||
| doesn't seem to be necessary anymore. | |||
| For more information on performing branching and merging, please visit | |||
| http://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell | |||
| 4. Before a build : | |||
| 3. Before a build : | |||
| the project.version property in build.xml governs the output of | |||
| ant -version and the naming of the distribution files. | |||
| Update the following files for version number: | |||
| see at the end of this document the list of files containing version information | |||
| see at the end of this document the list of files containing | |||
| version information | |||
| 5. Ensure you have all the external libraries that Ant uses in your | |||
| 4. Ensure you have all the external libraries that Ant uses in your | |||
| lib/optional directory. All dependencies are either provided by | |||
| JDK 1.5.0 or downloadable using | |||
| ant -f fetch.xml -Ddest=optional. | |||
| @@ -55,18 +42,25 @@ Note: This document was updated in the context of releasing Ant 1.9.5. | |||
| the build with -verbose option and scan for lines beginning with | |||
| "Unable to load...". | |||
| 5. Create a branch just for the release, even if you've decided to | |||
| not work with long lived branches in step 2. This branch can be | |||
| removed after the release. | |||
| Switch to that branch. | |||
| 6. Make sure that your directory tree is clean by running git status. | |||
| Some tests leave behind leftovers which end up in the source | |||
| distribution otherwise. | |||
| 7. Next bootstrap, build and run the tests. Then build the distribution | |||
| on the branch. It is important that this be a clean build. Tag this with | |||
| a tag ANT_195. | |||
| 7. Next bootstrap, build and run the tests. Then build the | |||
| distribution on the branch. It is important that this be a clean | |||
| build. Tag this with a tag ANT_195_RC1. | |||
| The file release.sh gives an idea of how to do this build process. | |||
| buid.xml specifies that the code should be compiled with source=1.5 and target=1.5. | |||
| build.xml specifies that the code should be compiled with | |||
| source=1.5 and target=1.5. | |||
| git tag -s -m "Tagging version 1.9.5 of Ant" ANT_195 | |||
| git tag -s -m "Tagging RC1 for version 1.9.5 of Ant" ANT_195_RC1 | |||
| git push --tags | |||
| 8. Sign the distribution files using the script release/signit.xml | |||
| @@ -82,7 +76,7 @@ Note: This document was updated in the context of releasing Ant 1.9.5. | |||
| and pass your key passphrase on the command line with -Dpassword=**** | |||
| Before you do that, ensure that the key you use is inside the KEYS | |||
| file in Ant's SVN repository | |||
| file in Ant's git repository | |||
| <https://git-wip-us.apache.org/repos/asf?p=ant-antlibs-common.git;a=blob;f=KEYS;h=dc62b011b1b429bd6de913f8f2bce79b715f96db;hb=HEAD> - | |||
| and that you copy the KEYS file to | |||
| /www/www.apache.org/dist/ant | |||
| @@ -112,44 +106,54 @@ Note: This document was updated in the context of releasing Ant 1.9.5. | |||
| Copy the distribution folder to the location of the sandbox. | |||
| svn add the files and commit into https://dist.apache.org/repos/dist/dev/ant | |||
| 11. | |||
| * upload the maven artifacts located under java-repository/org/apache/ant | |||
| these artifacts comprise currently for each ant jar of one POM file, the corresponding jar file | |||
| and the corresponding GPG signatures (x.pom, x.jar, x.pom.asc, x.jar.asc) | |||
| MD5 and SHA1 are generated by ivy during the upload | |||
| 11. Upload the maven artifacts located under java-repository/org/apache/ant | |||
| these artifacts comprise currently for each ant jar of one POM | |||
| file, the corresponding jar file and the corresponding GPG | |||
| signatures (x.pom, x.jar, x.pom.asc, x.jar.asc) MD5 and SHA1 are | |||
| generated by ivy during the upload | |||
| to | |||
| to | |||
| https://repository.apache.org (nexus repository) | |||
| using the build file release/upload.xml | |||
| using the build file release/upload.xml | |||
| ant -Dupload.user=foo -Dupload.password=secret -lib location_of_ivy_jar -f upload.xml | |||
| * after the upload, you need to access the web interface of nexus under https://repository.apache.org | |||
| login using your Apache credentials | |||
| in the left pane, below "build promotion", click on the "Stagings Repositories" links | |||
| expand org.apache.ant | |||
| select the checkbox next to the upload that you just did | |||
| click the button "Close" on the top of the table listing the uploads | |||
| make a note of the location of the staging repository for the vote email | |||
| After the upload, you need to access the web interface of nexus | |||
| under https://repository.apache.org login using your Apache | |||
| credentials in the left pane, below "build promotion", click on | |||
| the "Stagings Repositories" links expand org.apache.ant select the | |||
| checkbox next to the upload that you just did click the button | |||
| "Close" on the top of the table listing the uploads make a note of | |||
| the location of the staging repository for the vote email | |||
| 12. Once this is committed send a release vote email on dev@ant. | |||
| The email will typically mention : | |||
| - the git tag for the release including commit hash, | |||
| - the location of the tarballs, including revision number in dist.apache.org repository | |||
| - the location of the tarballs, including revision number in | |||
| dist.apache.org repository | |||
| - the URL for the maven artifacts | |||
| The vote will only pass if at least three PMC members have voted +1 | |||
| and more +1s than -1s have been cast. The vote will run for 3 days. | |||
| 13. Update the files listed at the end of the document (files containing | |||
| version information) to prepare the development of the next version of Ant | |||
| version information) to prepare the development of the next | |||
| version of Ant on the master branch. | |||
| 14. If the vote fails, address the problems and recreate the next RC | |||
| build. | |||
| 14. Once the vote has passed, the distrib artifacts should be published the | |||
| apache dist. It is managed via svnpubsub so the release should be | |||
| committed to the subversion repository | |||
| 15. Once the vote has passed, tag the last RC created with the final tag | |||
| $ git tag -s -m "Tagging version 1.9.5 of Ant" ANT_195 HASH_OF_LAST_RC | |||
| $ git push --tags | |||
| 15. The distrib artifacts should be published the apache dist. It is | |||
| managed via svnpubsub so the release should be committed to the | |||
| subversion repository | |||
| https://dist.apache.org/repos/dist/release/ant/. | |||
| In order to keep the main dist area of a reasonable size, old releases | |||
| @@ -157,47 +161,9 @@ Note: This document was updated in the context of releasing Ant 1.9.5. | |||
| available via the archive. To do so, just use the "svn rm" command against | |||
| the artifacts or folders to remove. | |||
| 15. Address the available version tags in BugZilla. Create a new version 1.9.6. | |||
| Assign all existing 1.9.5 bugs to 1.9.6. | |||
| Note that such massive changes can be done at once by choosing the | |||
| link "Change several bugs at once" at the bottom of the bug list | |||
| displaying the 1.9.5 bugs. | |||
| 16. Once that is done, do a test download to make sure everything is OK. A | |||
| common problem may be: | |||
| * the file's mime type is not recognized and is interpreted as | |||
| text/plain. Fix it by using some .htaccess magic (AddEncoding stuff) | |||
| * Your gz.asc files are not being displayed properly (RemoveEncoding stuff) | |||
| If it looks OK, announce it on dev@ant and user@ant. After a few | |||
| days pass and there are no major problems, a wider announcement is | |||
| made (ant website, announce@apache.org, etc). | |||
| 17. As problems in the beta are discovered, there may be a need for | |||
| one or more subsequent betas. The release manager makes this | |||
| call. Each time, the versions are updated and the above process is | |||
| repeated. Try not to have too many betas. | |||
| 18. Try to advertise the need for testing of the betas as much as possible. | |||
| This would eliminate the need to release minor patch versions like | |||
| we had to do when releasing Ant 1.4. | |||
| 19. When the final beta is considered OK, propose a vote on dev@ant to | |||
| officially adopt the latest beta as the Ant 1.6 release. If it is passed, | |||
| (it usually does,) this would be labelled ANT_16 and built in a similar | |||
| fashion to the above process. | |||
| It is probably a good idea to have the re-labeled distribution | |||
| files ready in time for the vote so that no additional vote on the | |||
| actual package is required later. | |||
| 20. This time you'll have to do some house-keeping for the old | |||
| release: | |||
| * commit the new release files to | |||
| from distribution | |||
| to https://dist.apache.org/repos/dist/release/ant/[source|binaries|manual]. | |||
| https://dist.apache.org/repos/dist/release/ant/[source|binaries|manual]. | |||
| * release the maven artifacts using the web interface of nexus under https://repository.apache.org | |||
| login using your Apache credentials | |||
| @@ -211,9 +177,7 @@ Note: This document was updated in the context of releasing Ant 1.9.5. | |||
| * Make README.html points to the new RELEASE-NOTES or is a copy of | |||
| it. | |||
| (*) | |||
| 21. Update the ant.apache.org site : | |||
| 16. Update the ant.apache.org site : | |||
| The website is managed here: https://svn.apache.org/repos/asf/ant/site/ant/ | |||
| @@ -236,26 +200,21 @@ Note: This document was updated in the context of releasing Ant 1.9.5. | |||
| svn merge https://svn.apache.org/repos/asf/ant/core/tags/ANT_193/manual/ ./manual/ | |||
| followed by a commit. | |||
| 22. Clean up. | |||
| * remove the remaining files of the previous release and betas from | |||
| https://dist.apache.org/repos/dist/release/ant/[source|binaries|manual]. | |||
| This includes the old release notes. | |||
| (+) | |||
| 23. Now and perhaps during previous betas any changes on the branch must | |||
| be merged back into the tree. | |||
| 17. Address the available version tags in BugZilla. Create a new version 1.9.6. | |||
| Assign all existing 1.9.5 bugs to 1.9.6. | |||
| Note that such massive changes can be done at once by choosing the | |||
| link "Change several bugs at once" at the bottom of the bug list | |||
| displaying the 1.9.5 bugs. | |||
| 24. At this point in time, the release is done and announcements are made. | |||
| 18. At this point in time, the release is done and announcements are made. | |||
| PGP-sign your announcement posts. | |||
| Apache mailing lists that should get the announcements: | |||
| announce@apache.org, dev@ant and user@ant. | |||
| 25. Add a new release tag to doap_Ant.rdf in Ant's site. | |||
| 19. Add a new release tag to doap_Ant.rdf in Ant's site. | |||
| 26. You can now reacquaint yourself with your family and friends. | |||
| 20. You can now reacquaint yourself with your family and friends. | |||
| (*) Mirrors : the srcdownload.html, bindownload.html and | |||
| manualdownload.html each list a number of mirrors. For ant 1.6.0 | |||
| @@ -303,10 +262,10 @@ build.xml | |||
| right after a release : | |||
| project.version property in build.xml gets bumped to | |||
| [newversion]alpha, for example 1.9.5alpha | |||
| [newversion]alpha, for example 1.9.6alpha | |||
| manifest-version gets bumped to the exact next release number | |||
| for example 1.9.5 | |||
| for example 1.9.6 | |||
| pom.version gets bumped to [newversion]-SNAPSHOT | |||