| @@ -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 | The issue of whether to create a branch for the release should be | ||||
| discussed in the release vote. | 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 | For more information on performing branching and merging, please visit | ||||
| http://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell | 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 | the project.version property in build.xml governs the output of | ||||
| ant -version and the naming of the distribution files. | ant -version and the naming of the distribution files. | ||||
| Update the following files for version number: | 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 | lib/optional directory. All dependencies are either provided by | ||||
| JDK 1.5.0 or downloadable using | JDK 1.5.0 or downloadable using | ||||
| ant -f fetch.xml -Ddest=optional. | 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 | the build with -verbose option and scan for lines beginning with | ||||
| "Unable to load...". | "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. | 6. Make sure that your directory tree is clean by running git status. | ||||
| Some tests leave behind leftovers which end up in the source | Some tests leave behind leftovers which end up in the source | ||||
| distribution otherwise. | 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. | 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 | git push --tags | ||||
| 8. Sign the distribution files using the script release/signit.xml | 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=**** | 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 | 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> - | <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 | and that you copy the KEYS file to | ||||
| /www/www.apache.org/dist/ant | /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. | 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 | 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) | 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 | 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. | 12. Once this is committed send a release vote email on dev@ant. | ||||
| The email will typically mention : | The email will typically mention : | ||||
| - the git tag for the release including commit hash, | - 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 URL for the maven artifacts | ||||
| The vote will only pass if at least three PMC members have voted +1 | 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. | 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 | 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/. | https://dist.apache.org/repos/dist/release/ant/. | ||||
| In order to keep the main dist area of a reasonable size, old releases | 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 | available via the archive. To do so, just use the "svn rm" command against | ||||
| the artifacts or folders to remove. | 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 | * 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 | * release the maven artifacts using the web interface of nexus under https://repository.apache.org | ||||
| login using your Apache credentials | 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 | * Make README.html points to the new RELEASE-NOTES or is a copy of | ||||
| it. | 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/ | 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/ | svn merge https://svn.apache.org/repos/asf/ant/core/tags/ANT_193/manual/ ./manual/ | ||||
| followed by a commit. | 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. | PGP-sign your announcement posts. | ||||
| Apache mailing lists that should get the announcements: | Apache mailing lists that should get the announcements: | ||||
| announce@apache.org, dev@ant and user@ant. | 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 | (*) Mirrors : the srcdownload.html, bindownload.html and | ||||
| manualdownload.html each list a number of mirrors. For ant 1.6.0 | manualdownload.html each list a number of mirrors. For ant 1.6.0 | ||||
| @@ -303,10 +262,10 @@ build.xml | |||||
| right after a release : | right after a release : | ||||
| project.version property in build.xml gets bumped to | 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 | 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 | pom.version gets bumped to [newversion]-SNAPSHOT | ||||