source: installer/resources/checklist.md @ 03bd3e2

Last change on this file since 03bd3e2 was 03bd3e2, checked in by zzz <zzz@…>, 13 months ago

checklist/doc updates

  • Property mode set to 100644
File size: 8.5 KB
Line 
1# Release checklist and process
2
3## Two weeks before
4
5- Review Google Play crash reports, fix any related issues
6
7
8## One week before
9
10- Announce string freeze on #i2p-dev
11- Update local English po files: `ant poupdate-source`
12- Review changes in English po files, fix up any necessary tagged strings in Java source
13- Revert English po files with no actual changes (i.e. with line number changes only)
14- Check in remaining English po files (and any files with changed strings)
15- Push to Transifex: `tx push -s`
16- Make announcement on Transifex with checkin deadline
17
18- GeoIP: Maxmind update is usually first Tuesday of the month, time accordingly
19- installer/resources/makegeoip.sh
20- mtn ci installer/resources/GeoLite2-Country.mmdb.gz
21
22- BuildTime: Don't have to do this every release, but update the
23  EARLIEST and EARLIEST_LONG values in core/java/src/net/i2p/time/BuildTime.java
24  to the current date, more or less.
25
26- Tickets: Check if any blocker or critical tickets for this release remain open;
27  get them fixed and closed, or reclassified.
28
29- Initial review: Review the complete diff from the last release, fix any issues
30
31- Trial Debian build: Build and test a preliminary Debian build
32  with 'ant debian' and fix any issues
33
34- Javadoc test: 'ant javadoc' with an Oracle JDK, fix any issues
35  Oracle JDK will error on things that OpenJDK does not!
36
37
38## A day or two before
39
401. Write the release announcement and push to Transifex:
41
42  - Checkout i2p.newsxml branch
43    - See README for setup
44  - `./create_new_entry.sh`
45    - Entry href should be the in-net link to the release blog post
46  - `tx push -s`
47  - `mtn ci`
48
492. Write the draft blog post and push to Transifex:
50
51  - Checkout i2p.www branch
52  - Write draft release announcement - see i2p2www/blog/README for instructions
53    - Top content should be the same as the news entry
54  - `tx push -s`
55  - `mtn ci`
56
573. Make announcement on Transifex asking for news translation
58
594. Tickets: Check if any blocker or critical tickets for this release remain open;
60   get them fixed and closed, or reclassified.
61
62
63## On release day
64
65### Preparation
66
671. Ensure all translation updates are imported from Transifex
68
69  - Look for newly translated languages and resources on Transifex
70  - Add any new ones to .tx/config (use your own judgement on which to include
71    based on minimum translated percentage)
72  - `tx pull`
73  - `ant testcripts` to verify that all updated translations are valid
74  - For any invalid that break the test, fix up the po file manually, or fix on
75    tx and pull again, or (if new) comment out in .tx/config (add a comment why)
76    and delete the po file.
77    See instructions in .tx/config for fixing up getopt properties files.
78  - `installer/resources/poupdate-man.sh` to generate new man page translations
79    (requires po4a package)
80  - `mtn add` for any new po files
81  - `mtn ci` all changed po files, and .tx/config if changed
82
832. Sync with mtn.i2p2.i2p
84
853. Start with a clean checkout:
86
87    ```
88    mtn -d i2p.mtn co --branch=i2p.i2p /path/to/releasedir
89    ```
90
91  - You must build with Java 7 or higher.
92    If you build with Java 8 or higher, you must also have the Java 7 JRE installed for the bootclasspath.
93
944. Create override.properties with (adjust as necessary):
95
96    ```
97    release.privkey.su3=/path/to/su3keystore.ks
98    release.gpg.keyid=0xnnnnnnnn
99    release.signer.su3=xxx@mail.i2p
100    build.built-by=xxx
101    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
102    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
103    ```
104
1055. Copy latest trust list _MTN/monotonerc from website or some other workspace
106
1076. Change revision in:
108  - `history.txt`
109  - `installer/install.xml`
110  - `installer/install5.xml`
111  - `core/java/src/net/i2p/CoreVersion.java`
112  - `router/java/src/net/i2p/router/RouterVersion.java`
113    - (change to BUILD = 0 and EXTRA = "")
114
1157. `mtn ci`
116
1178. Review the complete diff from the last release:
118
119    ```
120    mtn diff -r t:i2p-0.9.(xx-1) > out.diff
121    vi out.diff
122    ```
123
1249. Verify that no untrusted revisions were inadvertently blessed by a trusted party:
125
126    ```
127    ant revisions
128    ```
129
130### Build and test
131
1321. `ant release`
133
134  - Copy i2pinstall_${release.number}_windows.exe,
135    console.ico, ../lib/izpack/rh.bat, and ../lib/izpack/VersionInfo_template.rc
136    to Windows machine
137  - Edit rh.bat to set the correct version number
138  - Run rh.bat to edit the resources
139  - Sign the windows installer:
140    Open Visual Studio developer prompt
141    signtool sign /debug i2pinstall_${release.number}_windows.exe
142  - GPG sign the signed windows installer: gpg -u keyid -b i2pinstall_${release.number}_windows.exe
143  - sha256sum i2pinstall_${release.number}_windows.exe
144
1452. Now test:
146  - Save the output about checksums, sizes, and torrents to a file
147    (traditionally `shasums.txt`)
148    - (edit timestamps to UTC if you care)
149  - Copy all the release files somewhere, make sure you have the same ones as last release
150  - Verify sha256sums for release files
151  - Check file sizes vs. previous release, shouldn't be smaller
152    - If the update includes GeoIP, it will be about 1MB bigger
153  - Unzip or list files from `i2pupdate.zip`, see if it looks right
154  - For either windows or linux installer: (probably should do both the first time)
155    - Rename any existing config dir (e.g. mv .i2p .i2p-save)
156    - Run installer, install to temp dir
157    - Look in temp dir, see if all the files are there
158    - Unplug ethernet / turn off wifi so RI doesn't leak
159    - `i2prouter start`
160    - Verify release number in console
161    - Verify welcome news
162    - Click through all the app, status, eepsite, and config pages, see if they look right
163    - Click through each of the translations, see if /console looks right
164    - Look for errors in /log (other than can't reseed errors)
165    - Look in config dir, see if all the files are there
166    - Shutdown
167    - Delete config dir
168    - Move saved config dir back
169    - Reconnect ethernet / turn wifi back on
170  - Load torrents in i2psnark on your production router, verify infohashes
171
1723. If all goes well, tag and push the release:
173
174    ```
175    mtn tag h: i2p-0.x.xx
176    mtn cert t:i2p-0.x.xx branch i2p.i2p.release
177    mtn push
178    ```
179
180### Distribute updates
181
1821. Update news with new version:
183  - Add magnet links, change release dates and release number in to old-format
184    news.xml, and distribute to news hosts (no longer necessary)
185  - In the i2p.newsxml branch, edit magnet links, release dates and release
186    number in data/releases.json, check in and push
187
1882. Add i2pupdate-0.9.xx.su3 torrent to tracker2.postman.i2p and start seeding
189
1903. Notify the following people:
191  - All in-network update hosts
192  - PPA maintainer
193  - news.xml maintainer
194  - backup news.xml maintainer
195  - OSX launcher maintainer
196  - website files maintainer
197
1984. Update Trac:
199  - Add milestone and version dates
200  - Increment milestone and version defaults
201
2025. Wait for a few update hosts to be ready
203
2046. Tell news hosts to flip the switch
205
2067. Monitor torrent for activity to verify that the new news is now live
207
208
209### Distribute libraries
210
2111. `ant mavenCentral`
212
2132. Upload the bundles to Maven Central via https://oss.sonatype.org
214
215
216### Android build
217
2181. See branch i2p.android.base for build instructions
219
2202. Upload to Google Play, f-droid.i2p.io, f-droid.org, and website
221
2223. Announce on Twitter
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   including new OSX launcher version.
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/pages/site/get-involved/roadmap.html` (release date, actual release contents)
241  - `i2p2www/static/news/news.xml` (no longer necessary)
242  - Sync with mtn.i2p-projekt.i2p
243
2444. Announce on:
245  - #i2p, #i2p-dev (also on Freenode side)
246  - IRC
247  - Twitter
248
2495. Launchpad builds
250   (see debian-alt/doc/launchpad.txt for instructions)
251
2526. Copy launchpad files to our Debian repo,
253   or build Debian packages and upload them
254   (see debian-alt/doc/debian-build.txt for instructions)
255
2567. Announce Launchpad and Debian builds on Twitter
257
2588. Notify downstream Debian maintainer
259
2609. (if we get back into Tails) Notify Tails that new Debian builds are available
Note: See TracBrowser for help on using the repository browser.