source: installer/resources/checklist.md @ 9ab55ec

Last change on this file since 9ab55ec was 9ab55ec, checked in by zzz <zzz@…>, 3 years ago

checklist update

  • Property mode set to 100644
File size: 8.1 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  - `installer/resources/poupdate-man.sh` to generate new man page translations
58  - `mtn add` for any new po files
59  - `mtn ci` all changed po files, and .tx/config if changed
60
612. Sync with mtn.i2p2.i2p
62
633. Start with a clean checkout:
64
65    ```
66    mtn -d i2p.mtn co --branch=i2p.i2p /path/to/releasedir
67    ```
68
69  - You must build with Java 7 or higher.
70    If you build with Java 8 or higher, you must also have the Java 7 JRE installed for the bootclasspath.
71
724. Create override.properties with (adjust as necessary):
73
74    ```
75    release.privkey.su3=/path/to/su3keystore.ks
76    release.gpg.keyid=0xnnnnnnnn
77    release.signer.su3=xxx@mail.i2p
78    build.built-by=xxx
79    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
80    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
81    ```
82
835. Copy latest trust list _MTN/monotonerc from website or some other workspace
84
856. Change revision in:
86  - `history.txt`
87  - `installer/install.xml`
88  - `core/java/src/net/i2p/CoreVersion.java`
89  - `router/java/src/net/i2p/router/RouterVersion.java`
90    - (change to BUILD = 0 and EXTRA = "")
91
927. `mtn ci`
93
948. Review the complete diff from the last release:
95
96    ```
97    mtn diff -r t:i2p-0.9.(xx-1) > out.diff
98    vi out.diff
99    ```
100
1019. Verify that no untrusted revisions were inadvertently blessed by a trusted party:
102
103    ```
104    mtn log --brief --no-graph --to t:i2p-0.9.(xx-1) | cut -d ' ' -f 2 | sort | uniq -c
105    ```
106
107### Build and test
108
1091. `ant release`
110
111    > NOTE: These tasks are now automated by `ant release`
112    >
113    > Build and tag:
114    >
115    >     ant pkg
116    >
117    > Create signed update files with:
118    >
119    >     export I2P=~/i2p
120    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate.zip i2pupdate.sud /path/to/private.key 0.x.xx
121    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate200.zip i2pupdate.su2 /path/to/private.key 0.x.xx
122    >
123    > Verify signed update files with:
124    >
125    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate showversion i2pupdate.sud
126    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate verifysig i2pupdate.sud
127    >
128    > Make the source tarball:
129    >
130    >     Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p i2p-0.x.xx
131    >     Double-check trust list
132    >     tar cjf i2psource-0.x.xx.tar.bz2 --exclude i2p-0.x.xx/_MTN i2p-0.x.xx
133    >     mv i2p-0.x.xx.tar.bz2 i2p.i2p
134    >
135    > Rename some files:
136    >
137    >     mv i2pinstall.exe i2pinstall-0.x.xx.exe
138    >     mv i2pupdate.zip i2pupdate-0.x.xx.zip
139    >
140    > Generate hashes:
141    >
142    >     sha256sum i2p*0.x.xx.*
143    >     sha256sum i2pupdate.sud
144    >     sha256sum i2pupdate.su2
145    >
146    > Generate PGP signatures:
147    >
148    >     gpg -b i2pinstall-0.x xx.exe
149    >     gpg -b i2psource-0.x.xx.tar.bz2
150    >     gpg -b i2pupdate-0.x.xx.zip
151    >     gpg -b i2pupdate.sud
152    >     gpg -b i2pupdate.su2
153    >
154    > (end of tasks automated by 'ant release')
155
1562. Now test:
157  - Save the output about checksums, sizes, and torrents to a file
158    (traditionally `shasums.txt`)
159    - (edit timestamps to UTC if you care)
160  - Copy all the release files somewhere, make sure you have the same ones as last release
161  - Verify sha256sums for release files
162  - Check file sizes vs. previous release, shouldn't be smaller
163    - If the update includes GeoIP, it will be about 1MB bigger
164  - Unzip or list files from `i2pupdate.zip`, see if it looks right
165  - For either windows or linux installer: (probably should do both the first time)
166    - Rename any existing config dir (e.g. mv .i2p .i2p-save)
167    - Run installer, install to temp dir
168    - Look in temp dir, see if all the files are there
169    - Unplug ethernet / turn off wifi so RI doesn't leak
170    - `i2prouter start`
171    - Verify release number in console
172    - Verify welcome news
173    - Click through all the app, status, eepsite, and config pages, see if they look right
174    - Click through each of the translations, see if /console looks right
175    - Look for errors in /log (other than can't reseed errors)
176    - Look in config dir, see if all the files are there
177    - Shutdown
178    - Delete config dir
179    - Move saved config dir back
180    - Reconnect ethernet / turn wifi back on
181  - Load torrents in i2psnark on your production router, verify infohashes
182
1833. If all goes well, tag and push the release:
184
185    ```
186    mtn tag h: i2p-0.x.xx
187    mtn cert t:i2p-0.x.xx branch i2p.i2p.release
188    mtn push
189    ```
190
191### Distribute updates
192
1931. Update news with new version:
194  - Add magnet links, change release dates and release number in to old-format
195    news.xml, and distribute to news hosts (no longer necessary)
196  - In the i2p.newsxml branch, edit magnet links, release dates and release
197    number in data/releases.json, check in and push
198
1992. Add i2pupdate-0.9.xx.su3 torrent to tracker2.postman.i2p and start seeding
200
2013. Notify the following people:
202  - All in-network update hosts
203  - PPA maintainer
204  - news.xml maintainer
205  - backup news.xml maintainer
206  - website files maintainer
207
2084. Update Trac:
209  - Add milestone and version dates
210  - Increment milestone and version defaults
211
2125. Wait for a few update hosts to be ready
213
2146. Tell news hosts to flip the switch
215
2167. Monitor torrent for activity to verify that the new news is now live
217
218
219### Distribute libraries
220
2211. `ant mavenCentral`
222
2232. Upload the bundles to Maven Central via https://oss.sonatype.org
224
225
226### Notify release
227
2281. Upload files to launchpad release (download mirror)
229   (see debian-alt/doc/launchpad.txt for instructions)
230
2312. Wait for files to be updated on download server
232   Verify at http://download.i2p2.no/releases/
233
2343. Website files to change:
235  - Sync with mtn.i2p-projekt.i2p
236  - `i2p2www/static/hosts.txt` if it changed (copy from i2p.i2p mtn branch)
237  - `i2p2www/__init__.py` (release number)
238  - `i2p2www/pages/downloads/list.html` (release signer, if changed)
239  - `i2p2www/pages/downloads/macros` (checksums)
240  - `i2p2www/static/news/news.xml` (no longer necessary)
241  - Sync with mtn.i2p-projekt.i2p
242
2434. Announce on:
244  - #i2p, #i2p-dev (also on Freenode side)
245  - forum.i2p
246  - Twitter
247
2485. Launchpad builds
249   (see debian-alt/doc/launchpad.txt for instructions)
250
2516. Debian builds
252   (see debian-alt/doc/debian-build.txt for instructions)
253
2547. Announce Launchpad and Debian builds on Twitter
255
2568. Notify Tails that new Debian builds are available
Note: See TracBrowser for help on using the repository browser.