source: installer/resources/checklist.md @ 14ca463

Last change on this file since 14ca463 was 14ca463, checked in by str4d <str4d@…>, 4 years ago

Add Maven Central upload to release checklist

  • Property mode set to 100644
File size: 8.0 KB
Line 
1# Release checklist
2
3## One week before
4
5- Announce string freeze on #i2p-dev
6- Update local English po files: `ant poupdate`
7- Revert non-English changes if any
8- Push to Transifex: `tx push -s`
9- Make announcement on Transifex with checkin deadline
10
11- GeoIP: Maxmind update is usually first week of the month, time accordingly
12- wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
13- unzip GeoIPCountryCSV.zip
14- cut -d, -f3-5 < GeoIPCountryWhois.csv|sed 's/"//g' > geoip.txt
15- replace header
16- fix date in header (get date from HEAD)
17- ./makegeoipv6.sh
18- mtn ci geoip.txt geoipv5.dat.gz
19
20
21## A day or two before
22
231. Write the release announcement and push to Transifex:
24
25  - Checkout i2p.newsxml branch
26    - See README for setup
27  - `./create_new_entry.sh`
28    - Entry href should be the in-net link to the release blog post
29  - `tx push -s`
30  - `mtn ci`
31
322. Write the draft blog post and push to Transifex:
33
34  - Checkout i2p.www branch
35  - Write draft release announcement - see i2p2www/blog/README for instructions
36    - Top content should be the same as the news entry
37  - `tx push -s`
38  - `mtn ci`
39
403. Make announcement on Transifex asking for news translation
41
42
43## On release day
44
45### Preparation
46
471. Ensure all translation updates are imported from Transifex
48
49  - Look for newly translated languages and resources on Transifex
50  - Add any new ones to .tx/config (use your own judgement on which to include
51    based on minimum translated percentage)
52  - `tx pull`
53  - `ant testcripts` to verify that all updated translations are valid
54  - For any invalid that break the test, fix up the po file manually, or fix on
55    tx and pull again, or (if new) comment out in .tx/config (add a comment why)
56    and delete the po file
57  - `mtn add` for any new po files
58  - `mtn ci` all changed po files, and .tx/config if changed
59
602. Sync with mtn.i2p2.i2p
61
623. Start with a clean checkout:
63
64    ```
65    mtn -d i2p.mtn co --branch=i2p.i2p /path/to/releasedir
66    ```
67
68  - You must build with Java 7 or higher.
69    If you build with Java 8 or higher, you must also have the Java 7 JRE installed for the bootclasspath.
70
714. Create override.properties with (adjust as necessary):
72
73    ```
74    release.privkey.su3=/path/to/su3keystore.ks
75    release.gpg.keyid=0xnnnnnnnn
76    release.signer.su3=xxx@mail.i2p
77    build.built-by=xxx
78    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
79    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
80    ```
81
825. Copy latest trust list _MTN/monotonerc from website or some other workspace
83
846. Change revision in:
85  - `history.txt`
86  - `installer/install.xml`
87  - `core/java/src/net/i2p/CoreVersion.java`
88  - `router/java/src/net/i2p/router/RouterVersion.java`
89    - (change to BUILD = 0 and EXTRA = "")
90
917. `mtn ci`
92
938. Review the complete diff from the last release:
94
95    ```
96    mtn diff -r t:i2p-0.9.(xx-1) > out.diff
97    vi out.diff
98    ```
99
1009. Verify that no untrusted revisions were inadvertently blessed by a trusted party:
101
102    ```
103    mtn log --brief --no-graph --to t:i2p-0.9.(xx-1) | cut -d ' ' -f 2 | sort | uniq -c
104    ```
105
106### Build and test
107
1081. `ant release`
109
110    > NOTE: These tasks are now automated by `ant release`
111    >
112    > Build and tag:
113    >
114    >     ant pkg
115    >
116    > Create signed update files with:
117    >
118    >     export I2P=~/i2p
119    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate.zip i2pupdate.sud /path/to/private.key 0.x.xx
120    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate200.zip i2pupdate.su2 /path/to/private.key 0.x.xx
121    >
122    > Verify signed update files with:
123    >
124    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate showversion i2pupdate.sud
125    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate verifysig i2pupdate.sud
126    >
127    > Make the source tarball:
128    >
129    >     Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p i2p-0.x.xx
130    >     Double-check trust list
131    >     tar cjf i2psource-0.x.xx.tar.bz2 --exclude i2p-0.x.xx/_MTN i2p-0.x.xx
132    >     mv i2p-0.x.xx.tar.bz2 i2p.i2p
133    >
134    > Rename some files:
135    >
136    >     mv i2pinstall.exe i2pinstall-0.x.xx.exe
137    >     mv i2pupdate.zip i2pupdate-0.x.xx.zip
138    >
139    > Generate hashes:
140    >
141    >     sha256sum i2p*0.x.xx.*
142    >     sha256sum i2pupdate.sud
143    >     sha256sum i2pupdate.su2
144    >
145    > Generate PGP signatures:
146    >
147    >     gpg -b i2pinstall-0.x xx.exe
148    >     gpg -b i2psource-0.x.xx.tar.bz2
149    >     gpg -b i2pupdate-0.x.xx.zip
150    >     gpg -b i2pupdate.sud
151    >     gpg -b i2pupdate.su2
152    >
153    > (end of tasks automated by 'ant release')
154
1552. Now test:
156  - Save the output about checksums, sizes, and torrents to a file
157    (traditionally `shasums.txt`)
158    - (edit timestamps to UTC if you care)
159  - Copy all the release files somewhere, make sure you have the same ones as last release
160  - Verify sha256sums for release files
161  - Check file sizes vs. previous release, shouldn't be smaller
162    - If the update includes GeoIP, it will be about 1MB bigger
163  - Unzip or list files from `i2pupdate.zip`, see if it looks right
164  - For either windows or linux installer: (probably should do both the first time)
165    - Rename any existing config dir (e.g. mv .i2p .i2p-save)
166    - Run installer, install to temp dir
167    - Look in temp dir, see if all the files are there
168    - Unplug ethernet / turn off wifi so RI doesn't leak
169    - `i2prouter start`
170    - Verify release number in console
171    - Verify welcome news
172    - Click through all the app, status, eepsite, and config pages, see if they look right
173    - Click through each of the translations, see if /console looks right
174    - Look for errors in /log (other than can't reseed errors)
175    - Look in config dir, see if all the files are there
176    - Shutdown
177    - Delete config dir
178    - Move saved config dir back
179    - Reconnect ethernet / turn wifi back on
180  - Load torrents in i2psnark on your production router, verify infohashes
181
1823. If all goes well, tag and push the release:
183
184    ```
185    mtn tag h: i2p-0.x.xx
186    mtn cert t:i2p-0.x.xx branch i2p.i2p.release
187    mtn push
188    ```
189
190### Distribute updates
191
1921. Update news with new version:
193  - Add magnet links, change release dates and release number in to old-format
194    news.xml, and distribute to news hosts (no longer necessary)
195  - In the i2p.newsxml branch, edit magnet links, release dates and release
196    number in data/releases.json, check in and push
197
1982. Add i2pupdate-0.9.xx.su3 torrent to tracker2.postman.i2p and start seeding
199
2003. Notify the following people:
201  - All in-network update hosts
202  - PPA maintainer
203  - news.xml maintainer
204  - backup news.xml maintainer
205  - website files maintainer
206
2074. Update Trac:
208  - Add milestone and version dates
209  - Increment milestone and version defaults
210
2115. Wait for a few update hosts to be ready
212
2136. Tell news hosts to flip the switch
214
2157. Monitor torrent for activity to verify that the new news is now live
216
217
218### Distribute libraries
219
2201. `ant mavenCentral`
221
2222. Upload the bundles to Maven Central via https://oss.sonatype.org
223
224
225### Notify release
226
2271. Upload files to launchpad release (download mirror)
228   (see debian-alt/doc/launchpad.txt for instructions)
229
2302. Wait for files to be updated on download server
231   Verify at http://download.i2p2.no/releases/
232
2333. Website files to change:
234  - Sync with mtn.i2p-projekt.i2p
235  - `i2p2www/static/hosts.txt` if it changed (copy from i2p.i2p mtn branch)
236  - `i2p2www/__init__.py` (release number)
237  - `i2p2www/pages/downloads/list.html` (release signer, if changed)
238  - `i2p2www/pages/downloads/macros` (checksums)
239  - `i2p2www/static/news/news.xml` (no longer necessary)
240  - Sync with mtn.i2p-projekt.i2p
241
2424. Announce on:
243  - #i2p, #i2p-dev (also on Freenode side)
244  - forum.i2p
245  - Twitter
246
2475. Launchpad builds
248   (see debian-alt/doc/launchpad.txt for instructions)
249
2506. Debian builds
251   (see debian-alt/doc/debian-build.txt for instructions)
252
2537. Announce Launchpad and Debian builds on Twitter
254
2558. Notify Tails that new Debian builds are available
Note: See TracBrowser for help on using the repository browser.