Files
i2p.i2p/installer/resources/checklist.md

270 lines
8.8 KiB
Markdown
Raw Normal View History

# Release checklist and process
2015-11-19 10:21:07 +00:00
2019-05-18 14:43:13 +00:00
## Two weeks before
- Review Google Play crash reports, fix any related issues
2015-11-19 10:21:07 +00:00
## One week before
- Announce string freeze on #i2p-dev
2018-01-18 10:18:11 +00:00
- Update local English po files: `ant poupdate-source`
- Review changes in English po files, fix up any necessary tagged strings in Java source
- Revert English po files with no actual changes (i.e. with line number changes only)
- Check in remaining English po files (and any files with changed strings)
- Push to Transifex: `tx push -s`
2015-11-19 10:21:07 +00:00
- Make announcement on Transifex with checkin deadline
2020-02-25 14:39:48 +00:00
- GeoIP: db-ip.com update is usually first of the month, time accordingly
- installer/resources/makegeoip.sh
2019-03-15 11:34:41 +00:00
- mtn ci installer/resources/GeoLite2-Country.mmdb.gz
2017-04-04 14:03:09 +00:00
- BuildTime: Don't have to do this every release, but update the
2018-09-29 17:20:57 +00:00
EARLIEST and EARLIEST_LONG values in core/java/src/net/i2p/time/BuildTime.java
2017-04-04 14:03:09 +00:00
to the current date, more or less.
2017-10-11 16:21:46 +00:00
- Tickets: Check if any blocker or critical tickets for this release remain open;
get them fixed and closed, or reclassified.
- Initial review: Review the complete diff from the last release, fix any issues
- Trial Debian build: Build and test a preliminary Debian build
with 'ant debian' and fix any issues
- Javadoc test: 'ant javadoc' and 'ant mavenCentral.deps'
with a recent Oracle JDK (12+), and fix any issues.
2019-05-18 14:43:13 +00:00
Oracle JDK will error on things that OpenJDK does not!
2015-11-19 10:21:07 +00:00
## A day or two before
1. Write the release announcement and push to Transifex:
- Checkout i2p.newsxml branch
- See README for setup
- `./create_new_entry.sh`
- Entry href should be the in-net link to the release blog post
- `tx push -s`
- `mtn ci`
2. Write the draft blog post and push to Transifex:
- Checkout i2p.www branch
- Write draft release announcement - see i2p2www/blog/README for instructions
- Top content should be the same as the news entry
2019-12-24 13:39:52 +00:00
- `tx push -s -r I2P.website_blog`
2015-11-19 10:21:07 +00:00
- `mtn ci`
3. Make announcement on Transifex asking for news translation
2017-10-11 16:21:46 +00:00
4. Tickets: Check if any blocker or critical tickets for this release remain open;
get them fixed and closed, or reclassified.
2015-11-19 10:21:07 +00:00
## On release day
### Preparation
1. Ensure all translation updates are imported from Transifex
- Look for newly translated languages and resources on Transifex
- Add any new ones to .tx/config (use your own judgement on which to include
based on minimum translated percentage)
- `tx pull`
- `ant testcripts` to verify that all updated translations are valid
- For any invalid that break the test, fix up the po file manually, or fix on
tx and pull again, or (if new) comment out in .tx/config (add a comment why)
and delete the po file.
See instructions in .tx/config for fixing up getopt properties files.
2017-02-05 14:56:51 +00:00
- `installer/resources/poupdate-man.sh` to generate new man page translations
(requires po4a package)
- `mtn add` for any new po files
- `mtn ci` all changed po files, and .tx/config if changed
2015-11-19 10:21:07 +00:00
2. Sync with mtn.i2p2.i2p
3. Start with a clean checkout:
```
mtn -d i2p.mtn co --branch=i2p.i2p /path/to/releasedir
```
- You must build with Java 7 or higher.
If you build with Java 8 or higher, you must also have the Java 7 JRE installed for the bootclasspath.
2015-11-19 10:21:07 +00:00
4. Create override.properties with (adjust as necessary):
```
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-7-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar
2016-01-27 13:39:25 +00:00
javac.compilerargs7=-bootclasspath /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar
2015-11-19 10:21:07 +00:00
```
5. Copy latest trust list _MTN/monotonerc from website or some other workspace
6. Verify that no untrusted revisions were inadvertently blessed by a trusted party:
2015-11-19 10:21:07 +00:00
```
ant revisions
```
2015-11-19 10:21:07 +00:00
7. Review the complete diff from the last release:
2015-11-19 10:21:07 +00:00
```
mtn diff -r t:i2p-0.9.(xx-1) > out.diff
vi out.diff
```
8. Change revision in:
- `history.txt`
- `installer/install.xml`
- `installer/install5.xml`
- `core/java/src/net/i2p/CoreVersion.java`
- `router/java/src/net/i2p/router/RouterVersion.java`
- (change to BUILD = 0 and EXTRA = "")
9. `mtn ci`
2015-11-19 10:21:07 +00:00
### Build and test
2020-02-25 14:39:48 +00:00
0. Make sure you're using the right JDK
`echo $JAVA_HOME` and `java -version`
1. `ant releaseRepack` or `ant releaseWithGeoIPRepack` or `ant releaseWithJbigiRepack`
2015-11-19 10:21:07 +00:00
- Copy i2pinstall_${release.number}_windows.exe,
console.ico, ../lib/izpack/rh.bat, and ../lib/izpack/VersionInfo_template.rc
to Windows machine
- Edit rh.bat to set the correct version number
- Run rh.bat to edit the resources
- Sign the windows installer:
Open Visual Studio developer prompt
signtool sign /debug i2pinstall_${release.number}_windows.exe
- GPG sign the signed windows installer: gpg -u keyid -b i2pinstall_${release.number}_windows.exe
- sha256sum i2pinstall_${release.number}_windows.exe
2015-11-19 10:21:07 +00:00
2. Now test:
- Save the output about checksums, sizes, and torrents to a file
(traditionally `shasums.txt`)
- (edit timestamps to UTC if you care)
- Copy all the release files somewhere, make sure you have the same ones as last release
- Verify sha256sums for release files
- Check file sizes vs. previous release, shouldn't be smaller
- If the update includes GeoIP, it will be about 1MB bigger
- Unzip or list files from `i2pupdate.zip`, see if it looks right
- For either windows or linux installer: (probably should do both the first time)
- Rename any existing config dir (e.g. mv .i2p .i2p-save)
- Run installer, install to temp dir
- Look in temp dir, see if all the files are there
- Unplug ethernet / turn off wifi so RI doesn't leak
- `i2prouter start`
- Verify release number in console
- Verify welcome news
- Click through all the app, status, eepsite, and config pages, see if they look right
- Click through each of the translations, see if /console looks right
- Look for errors in /log (other than can't reseed errors)
- Look in config dir, see if all the files are there
- Shutdown
- Delete config dir
- Move saved config dir back
- Reconnect ethernet / turn wifi back on
- Load torrents in i2psnark on your production router, verify infohashes
3. If all goes well, tag and push the release:
2015-11-19 10:21:07 +00:00
```
mtn tag h: i2p-0.x.xx
mtn cert t:i2p-0.x.xx branch i2p.i2p.release
mtn push
2015-11-19 10:21:07 +00:00
```
### Distribute updates
1. Update news with new version:
- Add magnet links, change release dates and release number in to old-format
news.xml, and distribute to news hosts (no longer necessary)
2015-11-19 10:21:07 +00:00
- In the i2p.newsxml branch, edit magnet links, release dates and release
number in data/releases.json, check in and push
2015-11-19 10:21:07 +00:00
2016-01-27 17:46:31 +00:00
2. Add i2pupdate-0.9.xx.su3 torrent to tracker2.postman.i2p and start seeding
2015-11-19 10:21:07 +00:00
3. Notify the following people:
- All in-network update hosts
- PPA maintainer
- news.xml maintainer
- backup news.xml maintainer
2019-05-08 12:10:00 +00:00
- OSX launcher maintainer
2015-11-19 10:21:07 +00:00
- website files maintainer
4. Update Trac:
- Add milestone and version dates
- Increment milestone and version defaults
5. Wait for a few update hosts to be ready
6. Tell news hosts to flip the switch
7. Monitor torrent for activity to verify that the new news is now live
### Distribute libraries
1. `ant mavenCentral`
2. Upload the bundles to Maven Central via https://oss.sonatype.org
### Android build
1. See branch i2p.android.base for build instructions
2018-03-04 16:40:46 +00:00
2. Upload to Google Play, f-droid.i2p.io, f-droid.org, and website
3. Announce on Twitter
2015-11-19 10:21:07 +00:00
### Notify release
1. Upload files to launchpad release (download mirror)
(see debian-alt/doc/launchpad.txt for instructions)
2015-11-19 10:21:07 +00:00
2019-05-08 12:10:00 +00:00
2. Wait for files to be updated on download server,
including new OSX launcher version.
Verify at http://download.i2p2.no/releases/
3. Website files to change:
2015-11-19 10:21:07 +00:00
- Sync with mtn.i2p-projekt.i2p
- `i2p2www/static/hosts.txt` if it changed (copy from i2p.i2p mtn branch)
- `i2p2www/__init__.py` (release number)
- `i2p2www/pages/downloads/list.html` (release signer, if changed)
2015-11-19 10:21:07 +00:00
- `i2p2www/pages/downloads/macros` (checksums)
2017-03-06 20:41:43 +00:00
- `i2p2www/pages/site/get-involved/roadmap.html` (release date, actual release contents)
- `i2p2www/static/news/news.xml` (no longer necessary)
2015-11-19 10:21:07 +00:00
- Sync with mtn.i2p-projekt.i2p
4. Announce on:
- #i2p, #i2p-dev (also on Freenode side)
- IRC
2015-11-19 10:21:07 +00:00
- Twitter
5. Launchpad builds
(see debian-alt/doc/launchpad.txt for instructions)
6. Copy launchpad files to our Debian repo,
or build Debian packages and upload them
(see debian-alt/doc/debian-build.txt for instructions)
7. Announce Launchpad and Debian builds on Twitter
8. Notify downstream Debian maintainer
2019-12-24 13:39:52 +00:00
9. Pull announcement translations:
- `tx pull -r I2P.website_blog`
Do NOT forget this step!
- `./update-existing-po.sh`
- `mtn ci i2p2www/translations/ -m "Updated translations"`