|
| 1 | +Log4Net Release procedure |
| 2 | +--- |
| 3 | + |
| 4 | +This serves to document the release procedure for log4net, which is probably |
| 5 | +more of interest to maintainers than anyone else, but I've found that there |
| 6 | +are enough moving parts and time between releases to make the process more |
| 7 | +difficult than it needs to be. Some parts are automated and others can be in |
| 8 | +the future. |
| 9 | + |
| 10 | +Assuming the code is in a place where a release can be made, for the imagined |
| 11 | +release version 2.0.123: |
| 12 | + |
| 13 | +1. Update the documentation under `src/site` |
| 14 | + - minimally, this means at least: |
| 15 | + - `src/site/xdoc/release/release-notes.xml` |
| 16 | + - copy an existing release section & think about: |
| 17 | + - what does this release change? |
| 18 | + - bug fixes? |
| 19 | + - enhancements |
| 20 | + - don't forget to mention contributors |
| 21 | + - people who reported issues |
| 22 | + - people who created pull requests |
| 23 | + - people who suggested code that was implemented |
| 24 | + - `src/site/xdoc/download_log4net.xml` |
| 25 | + - you should be able to search & replace on the prior version |
| 26 | + for the new one you're about to create |
| 27 | +2. Update the log4net.csproj file with this new version |
| 28 | +3. Build release artifacts with `npm run release` |
| 29 | + - if this doesn't work, you may need to `npm ci` first! |
| 30 | + - currently, this _must_ happen on a windows machine because of older |
| 31 | + .net framework requirements which cannot be met on a Linux machine |
| 32 | + (or at least, I haven't figured out how - in particular CF) |
| 33 | +4. Sign release artifacts (zips & nupkg) under `build/artifacts` |
| 34 | + - eg `gpg --argmor --output log4net-2.0.123.nupkg.asc --detach-sig log4net-2.0.123.nupkg` |
| 35 | + - there is an accompanying `sign-log4net-libraries.sh` which you could invoke if you cd |
| 36 | + into the `build/artifacts` folder |
| 37 | + - I build on Windows and sign on Linux as my build machine belongs to my company |
| 38 | + and I don't want to store keys there. Always protect your keys fervently! |
| 39 | +5. Clone out the log4net doc repo (https://github.com/apache/logging-log4net-site) |
| 40 | + - check out the `asf-staging` branch |
| 41 | + - create a folder which includes the version, eg `log4net-2.0.123` |
| 42 | +6. Copy the contents of `target/site` from this repo into the folder created in (5) |
| 43 | +7. Update the symlinks in the base of the docs repo, ie: |
| 44 | + - 2.0.x -> 2.0.123 |
| 45 | + - 2.x -> 2.0.123 |
| 46 | +8. update the `doap_log4net.rdf` to point to the new release |
| 47 | + - (copy-paste-modify an existing release) |
| 48 | +9. update the `.htaccess` file |
| 49 | + - the trailing RewriteRule should point to the new log4net-2.0.123 folder |
| 50 | +10. push the `asf-staging` branch to github and wait a bit |
| 51 | + - after a minute or two, check the updates at https://logging.staged.apache.org/log4net |
| 52 | + - are you seeing the correct releases page? |
| 53 | + - are you seeing the correct downloads page? |
| 54 | + - download links should (at this point) not work |
| 55 | +11. create an rc-releasd at GitHub with a tag like `rc/2.0.123` |
| 56 | + - attach all the files from the build/artifacts folder, _including signatures_ |
| 57 | +12. get the artifacts in build/artifacts up to https://downloads.apache.org/logging/log4net/ |
| 58 | + - currently, I have to as another ASF member for help with this |
| 59 | + - I also see release notes there - which are out of date (don't know how to update) |
| 60 | + |
0 commit comments