source: installer/resources/checklist.md @ f9bd495

Last change on this file since f9bd495 was f9bd495, checked in by zzz <zzz@…>, 4 years ago

release checklist more info on translations

  • Property mode set to 100644
File size: 6.9 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
36  - Look for newly translated languages and resources on Transifex
37  - Add any new ones to .tx/config (use your own judgement on which to include
38    based on minimum translated percentage)
39  - `tx pull`
40  - `ant testcripts` to verify that all updated translations are valid
41  - For any invalid that break the test, fix up the po file manually, or fix on
42    tx and pull again, or (if new) comment out in .tx/config (add a comment why)
43    and delete the po file
44  - `mtn add` for any new po files
45  - `mtn ci` all changed po files, and .tx/config if changed
46
472. Sync with mtn.i2p2.i2p
48
493. Start with a clean checkout:
50
51    ```
52    mtn -d i2p.mtn co --branch=i2p.i2p /path/to/releasedir
53    ```
54
55  - You may build with Java 7 or higher, but ensure you have the Java 6 JRE installed for the bootclasspath
56
574. Create override.properties with (adjust as necessary):
58
59    ```
60    release.privkey.su3=/path/to/su3keystore.ks
61    release.gpg.keyid=0xnnnnnnnn
62    release.signer.su3=xxx@mail.i2p
63    build.built-by=xxx
64    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
65    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
66    ```
67
685. Copy latest trust list _MTN/monotonerc from website or some other workspace
69
706. Change revision in:
71  - `history.txt`
72  - `installer/install.xml`
73  - `core/java/src/net/i2p/CoreVersion.java`
74  - `router/java/src/net/i2p/router/RouterVersion.java`
75    - (change to BUILD = 0 and EXTRA = "")
76
777. `mtn ci`
78
798. Review the complete diff from the last release:
80
81    ```
82    mtn diff -r t:i2p-0.9.(xx-1) > out.diff
83    vi out.diff
84    ```
85
869. Verify that no untrusted revisions were inadvertently blessed by a trusted party:
87
88    ```
89    mtn log --brief --no-graph --to t:i2p-0.9.(xx-1) | cut -d ' ' -f 2 | sort | uniq -c
90    ```
91
92### Build and test
93
941. `ant release`
95
96    > NOTE: These tasks are now automated by `ant release`
97    >
98    > Build and tag:
99    >
100    >     ant pkg
101    >
102    > Create signed update files with:
103    >
104    >     export I2P=~/i2p
105    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate.zip i2pupdate.sud /path/to/private.key 0.x.xx
106    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate sign i2pupdate200.zip i2pupdate.su2 /path/to/private.key 0.x.xx
107    >
108    > Verify signed update files with:
109    >
110    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate showversion i2pupdate.sud
111    >     java -cp $I2P/lib/i2p.jar net.i2p.crypto.TrustedUpdate verifysig i2pupdate.sud
112    >
113    > Make the source tarball:
114    >
115    >     Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p i2p-0.x.xx
116    >     Double-check trust list
117    >     tar cjf i2psource-0.x.xx.tar.bz2 --exclude i2p-0.x.xx/_MTN i2p-0.x.xx
118    >     mv i2p-0.x.xx.tar.bz2 i2p.i2p
119    >
120    > Rename some files:
121    >
122    >     mv i2pinstall.exe i2pinstall-0.x.xx.exe
123    >     mv i2pupdate.zip i2pupdate-0.x.xx.zip
124    >
125    > Generate hashes:
126    >
127    >     sha256sum i2p*0.x.xx.*
128    >     sha256sum i2pupdate.sud
129    >     sha256sum i2pupdate.su2
130    >
131    > Generate PGP signatures:
132    >
133    >     gpg -b i2pinstall-0.x xx.exe
134    >     gpg -b i2psource-0.x.xx.tar.bz2
135    >     gpg -b i2pupdate-0.x.xx.zip
136    >     gpg -b i2pupdate.sud
137    >     gpg -b i2pupdate.su2
138    >
139    > (end of tasks automated by 'ant release')
140
1412. Now test:
142  - Save the output about checksums, sizes, and torrents to a file
143    (traditionally `shasums.txt`)
144    - (edit timestamps to UTC if you care)
145  - Copy all the release files somewhere, make sure you have the same ones as last release
146  - Verify sha256sums for release files
147  - Check file sizes vs. previous release, shouldn't be smaller
148    - If the update includes GeoIP, it will be about 1MB bigger
149  - Unzip or list files from `i2pupdate.zip`, see if it looks right
150  - For either windows or linux installer: (probably should do both the first time)
151    - Rename any existing config dir (e.g. mv .i2p .i2p-save)
152    - Run installer, install to temp dir
153    - Look in temp dir, see if all the files are there
154    - Unplug ethernet / turn off wifi so RI doesn't leak
155    - `i2prouter start`
156    - Verify release number in console
157    - Verify welcome news
158    - Click through all the app, status, eepsite, and config pages, see if they look right
159    - Click through each of the translations, see if /console looks right
160    - Look for errors in /log (other than can't reseed errors)
161    - Look in config dir, see if all the files are there
162    - Shutdown
163    - Delete config dir
164    - Move saved config dir back
165    - Reconnect ethernet / turn wifi back on
166  - Load torrents in i2psnark on your production router, verify infohashes
167
1683. If all goes well, tag and sync the release:
169
170    ```
171    mtn tag h: i2p-0.x.xx
172    mtn cert t:i2p-0.x.xx branch i2p.i2p.release
173    mtn sync (with e.g. mtn.killyourtv.i2p)
174    ```
175
176### Distribute updates
177
1781. Update news with new version:
179  - Add magnet links, change release dates and release number in to old-format
180    news.xml, and distribute to news hosts
181  - In the i2p.newsxml branch, edit magnet links, release dates and release
182    number in data/releases.json, and check in
183
1842. Add i2pupdate-0.9.xx.su3 torrent to tracker2.postman.i2p and start seeding
185
1863. Notify the following people:
187  - All in-network update hosts
188  - PPA maintainer
189  - news.xml maintainer
190  - backup news.xml maintainer
191  - website files maintainer
192
1934. Update Trac:
194  - Add milestone and version dates
195  - Increment milestone and version defaults
196
1975. Wait for a few update hosts to be ready
198
1996. Tell news hosts to flip the switch
200
201### Notify release
202
2031. Wait for files to be updated on download server
204
2052. Website files to change:
206  - Sync with mtn.i2p-projekt.i2p
207  - `i2p2www/static/hosts.txt` if it changed (copy from i2p.i2p mtn branch)
208  - `i2p2www/__init__.py` (release number)
209  - `i2p2www/pages/downloads/list.html` (release signer)
210  - `i2p2www/pages/downloads/macros` (checksums)
211  - `i2p2www/static/news/news.xml`
212  - Sync with mtn.i2p-projekt.i2p
213
2143. Wait for debian packages to be ready
215
2164. Announce on:
217  - #i2p, #i2p-dev (also on Freenode side)
218  - forum.i2p
219  - Twitter
Note: See TracBrowser for help on using the repository browser.