source: installer/resources/checklist.md @ 1a7bf2a

Last change on this file since 1a7bf2a was 1a7bf2a, checked in by str4d <str4d@…>, 5 years ago

Rewrite release checklist in Markdown

  • Property mode set to 100644
File size: 6.1 KB
Line 
1# Release checklist
2
3## One week before
4
5- Make announcement on Transifex with checkin deadline
6
7
8## A day or two before
9
101. Write the release announcement and push to Transifex:
11
12  - Checkout i2p.newsxml branch
13    - See README for setup
14  - `./create_new_entry.sh`
15    - Entry href should be the in-net link to the release blog post
16  - `tx push -s`
17  - `mtn ci`
18
192. Write the draft blog post and push to Transifex:
20
21  - Checkout i2p.www branch
22  - Write draft release announcement - see i2p2www/blog/README for instructions
23    - Top content should be the same as the news entry
24  - `tx push -s`
25  - `mtn ci`
26
273. Make announcement on Transifex asking for news translation
28
29
30## On release day
31
32### Preparation
33
341. Ensure all translation updates are imported from Transifex
35
362. Sync with mtn.i2p2.i2p
37
383. Start with a clean checkout:
39
40    ```
41    mtn -d i2p.mtn co --branch=i2p.i2p /path/to/releasedir
42    ```
43
44  - You may build with Java 7 or higher, but ensure you have the Java 6 JRE installed for the bootclasspath
45
464. Create override.properties with (adjust as necessary):
47
48    ```
49    release.privkey.su3=/path/to/su3keystore.ks
50    release.gpg.keyid=0xnnnnnnnn
51    release.signer.su3=xxx@mail.i2p
52    build.built-by=xxx
53    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
54    ```
55
565. Copy latest trust list _MTN/monotonerc from website or some other workspace
57
586. Change revision in:
59  - `history.txt`
60  - `installer/install.xml`
61  - `core/java/src/net/i2p/CoreVersion.java`
62  - `router/java/src/net/i2p/router/RouterVersion.java`
63    - (change to BUILD = 0 and EXTRA = "")
64
657. `mtn ci`
66
678. Review the complete diff from the last release:
68
69    ```
70    mtn diff -r t:i2p-0.9.(xx-1) > out.diff
71    vi out.diff
72    ```
73
749. Verify that no untrusted revisions were inadvertently blessed by a trusted party:
75
76    ```
77    mtn log --brief --no-graph --to t:i2p-0.9.(xx-1) | cut -d ' ' -f 2 | sort | uniq -c
78    ```
79
80### Build and test
81
821. `ant release`
83
84    =========================================
85    NOTE: These tasks are now automated by 'ant release'
86
87    Build and tag:
88        ant pkg
89
90    Create signed update files with:
91        export I2P=~/i2p
92        java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate.zip i2pupdate.sud /path/to/private.key 0.x.xx
93        java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate200.zip i2pupdate.su2 /path/to/private.key 0.x.xx
94
95    Verify signed update files with:
96        java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate showversion i2pupdate.sud
97        java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate verifysig i2pupdate.sud
98
99    Make the source tarball:
100        Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p i2p-0.x.xx
101        Double-check trust list
102        tar cjf i2psource-0.x.xx.tar.bz2 --exclude i2p-0.x.xx/_MTN i2p-0.x.xx
103        mv i2p-0.x.xx.tar.bz2 i2p.i2p
104
105    Rename some files:
106        mv i2pinstall.exe i2pinstall-0.x.xx.exe
107        mv i2pupdate.zip i2pupdate-0.x.xx.zip
108
109    Generate hashes:
110        sha256sum i2p*0.x.xx.*
111        sha256sum i2pupdate.sud
112        sha256sum i2pupdate.su2
113
114    Generate PGP signatures:
115        gpg -b i2pinstall-0.x xx.exe
116        gpg -b i2psource-0.x.xx.tar.bz2
117        gpg -b i2pupdate-0.x.xx.zip
118        gpg -b i2pupdate.sud
119        gpg -b i2pupdate.su2
120
121    (end of tasks automated by 'ant release')
122    =========================================
123
1242. Now test:
125  - Save the output about checksums, sizes, and torrents to a file
126    (traditionally `shasums.txt`)
127    - (edit timestamps to UTC if you care)
128  - Copy all the release files somewhere, make sure you have the same ones as last release
129  - Verify sha256sums for release files
130  - Check file sizes vs. previous release, shouldn't be smaller
131    - If the update includes GeoIP, it will be about 1MB bigger
132  - Unzip or list files from `i2pupdate.zip`, see if it looks right
133  - For either windows or linux installer: (probably should do both the first time)
134    - Rename any existing config dir (e.g. mv .i2p .i2p-save)
135    - Run installer, install to temp dir
136    - Look in temp dir, see if all the files are there
137    - Unplug ethernet / turn off wifi so RI doesn't leak
138    - `i2prouter start`
139    - Verify release number in console
140    - Verify welcome news
141    - Click through all the app, status, eepsite, and config pages, see if they look right
142    - Click through each of the translations, see if /console looks right
143    - Look for errors in /log (other than can't reseed errors)
144    - Look in config dir, see if all the files are there
145    - Shutdown
146    - Delete config dir
147    - Move saved config dir back
148    - Reconnect ethernet / turn wifi back on
149  - Load torrents in i2psnark on your production router, verify infohashes
150
1513. If all goes well, tag and sync the release:
152
153    ```
154    mtn tag h: i2p-0.x.xx
155    mtn cert t:i2p-0.x.xx branch i2p.i2p.release
156    mtn sync (with e.g. mtn.killyourtv.i2p)
157    ```
158
159### Distribute updates
160
1611. Update news with new version:
162  - Add magnet links, change release dates and release number in to old-format
163    news.xml, and distribute to news hosts
164  - In the i2p.newsxml branch, edit magnet links, release dates and release
165    number in data/releases.json, and check in
166
1672. Add update torrents to tracker2.postman.i2p and start seeding (su2 and su3)
168
1693. Notify the following people:
170  - All in-network update hosts
171  - PPA maintainer
172  - news.xml maintainer
173  - backup news.xml maintainer
174  - website files maintainer
175
1764. Update Trac:
177  - Add milestone and version dates
178  - Increment milestone and version defaults
179
1805. Wait for a few update hosts to be ready
181
1826. Tell news hosts to flip the switch
183
184### Notify release
185
1861. Wait for files to be updated on download server
187
1882. Website files to change:
189  - Sync with mtn.i2p-projekt.i2p
190  - `i2p2www/static/hosts.txt` if it changed (copy from i2p.i2p mtn branch)
191  - `i2p2www/__init__.py` (release number)
192  - `i2p2www/pages/downloads/macros` (checksums)
193  - `i2p2www/static/news/news.xml`
194  - Sync with mtn.i2p-projekt.i2p
195
1963. Wait for debian packages to be ready
197
1984. Announce on:
199  - #i2p, #i2p-dev (also on Freenode side)
200  - forum.i2p
201  - Twitter
Note: See TracBrowser for help on using the repository browser.