Release checklist ----------------- One week before: Make announcement on Transifex with checkin deadline A day or two before: Write the release announcement and push to Transifex: Checkout i2p.newsxml branch See README for setup ./create_new_entry.sh tx push -s mtn ci Make announcement on Transifex asking for news translation Ensure all translation updates are imported from Transifex Sync with mtn.i2p2.i2p Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p /path/to/releasedir You may build with Java 7 or higher, but ensure you have the Java 6 JRE installed for the bootclasspath Create override.properties with (adjust as necessary): ----------- release.privkey=/path/to/private-signing.key release.privkey.su3=/path/to/su3keystore.ks release.gpg.keyid=0xnnnnnnnn release.signer.su3=xxx@mail.i2p build.built-by=xxx javac.compilerargs=-bootclasspath /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jce.jar ----------- Copy latest trust list _MTN/monotonerc from website or some other workspace Change revision in: history.txt installer/install.xml core/java/src/net/i2p/CoreVersion.java router/java/src/net/i2p/router/RouterVersion.java (change to BUILD = 0 and EXTRA = "") mtn ci Review the complete diff from the last release: mtn diff -r t:i2p-0.9.(xx-1) > out.diff vi out.diff Verify that no untrusted revisions were inadvertently blessed by a trusted party: mtn log --brief --no-graph --to t:i2p-0.9.(xx-1) | cut -d ' ' -f 2 | sort | uniq -c ========================================= NOTE: These tasks are now automated by 'ant release' Build and tag: ant pkg Create signed update files with: export I2P=~/i2p java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate.zip i2pupdate.sud /path/to/private.key 0.x.xx java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate200.zip i2pupdate.su2 /path/to/private.key 0.x.xx Verify signed update files with: java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate showversion i2pupdate.sud java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate verifysig i2pupdate.sud Make the source tarball: Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p i2p-0.x.xx Double-check trust list tar cjf i2psource-0.x.xx.tar.bz2 --exclude i2p-0.x.xx/_MTN i2p-0.x.xx mv i2p-0.x.xx.tar.bz2 i2p.i2p Rename some files: mv i2pinstall.exe i2pinstall-0.x.xx.exe mv i2pupdate.zip i2pupdate-0.x.xx.zip Generate hashes: sha256sum i2p*0.x.xx.* sha256sum i2pupdate.sud sha256sum i2pupdate.su2 Generate PGP signatures: gpg -b i2pinstall-0.x xx.exe gpg -b i2psource-0.x.xx.tar.bz2 gpg -b i2pupdate-0.x.xx.zip gpg -b i2pupdate.sud gpg -b i2pupdate.su2 (end of tasks automated by 'ant release') ========================================= Now test. If all goes well: mtn tag h: i2p-0.x.xx mtn cert t:i2p-0.x.xx branch i2p.i2p.release mtn sync (with e.g. mtn.killyourtv.i2p) Add magnet links, change release dates and release number in to old-format news.xml, and distribute to news hosts In the i2p.newsxml branch, edit magnet links, release dates and release number in data/releases.json, and check in Add update torrents to tracker2.postman.i2p and start seeding (su2 and su3) Notify the following people: All in-network update hosts PPA maintainer news.xml maintainer backup news.xml maintainer website files maintainer Update Trac: Add milestone and version dates Increment milestone and version defaults Wait for website files to be updated Website files to change: Sync with mtn.i2p-projekt.i2p hosts.txt if it changed (copy from i2p.i2p mtn branch) i2p2www/__init__.py (release number) i2p2www/pages/downloads/list.html (checksums) i2p2www/static/news/news.xml New release announcement - see i2p2www/blog/README for instructions Sync with mtn.i2p-projekt.i2p Wait for a few update hosts to be ready Tell news hosts to flip the switch Wait for debian packages to be ready Announce on: #i2p, #i2p-dev (also on freenode side) forum.i2p twitter