source: installer/resources/checklist.md @ 41e8b6d

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

0.9.40 debian files

  • Property mode set to 100644
File size: 8.4 KB
Line 
1# Release checklist and process
2
3## One week before
4
5- Announce string freeze on #i2p-dev
6- Update local English po files: `ant poupdate-source`
7- Review changes in English po files, fix up any necessary tagged strings in Java source
8- Revert English po files with no actual changes (i.e. with line number changes only)
9- Check in remaining English po files (and any files with changed strings)
10- Push to Transifex: `tx push -s`
11- Make announcement on Transifex with checkin deadline
12
13- GeoIP: Maxmind update is usually first Tuesday of the month, time accordingly
14- installer/resources/makegeoip.sh
15- mtn ci installer/resources/GeoLite2-Country.mmdb.gz
16
17- BuildTime: Don't have to do this every release, but update the
18  EARLIEST and EARLIEST_LONG values in core/java/src/net/i2p/time/BuildTime.java
19  to the current date, more or less.
20
21- Tickets: Check if any blocker or critical tickets for this release remain open;
22  get them fixed and closed, or reclassified.
23
24- Review Google Play crash reports, fix any related issues
25
26- Initial review: Review the complete diff from the last release, fix any issues
27
28- Trial Debian build: Build and test a preliminary Debian build
29  with 'ant debian' and fix any issues
30
31
32## A day or two before
33
341. Write the release announcement and push to Transifex:
35
36  - Checkout i2p.newsxml branch
37    - See README for setup
38  - `./create_new_entry.sh`
39    - Entry href should be the in-net link to the release blog post
40  - `tx push -s`
41  - `mtn ci`
42
432. Write the draft blog post and push to Transifex:
44
45  - Checkout i2p.www branch
46  - Write draft release announcement - see i2p2www/blog/README for instructions
47    - Top content should be the same as the news entry
48  - `tx push -s`
49  - `mtn ci`
50
513. Make announcement on Transifex asking for news translation
52
534. Tickets: Check if any blocker or critical tickets for this release remain open;
54   get them fixed and closed, or reclassified.
55
56
57## On release day
58
59### Preparation
60
611. Ensure all translation updates are imported from Transifex
62
63  - Look for newly translated languages and resources on Transifex
64  - Add any new ones to .tx/config (use your own judgement on which to include
65    based on minimum translated percentage)
66  - `tx pull`
67  - `ant testcripts` to verify that all updated translations are valid
68  - For any invalid that break the test, fix up the po file manually, or fix on
69    tx and pull again, or (if new) comment out in .tx/config (add a comment why)
70    and delete the po file.
71    See instructions in .tx/config for fixing up getopt properties files.
72  - `installer/resources/poupdate-man.sh` to generate new man page translations
73    (requires po4a package)
74  - `mtn add` for any new po files
75  - `mtn ci` all changed po files, and .tx/config if changed
76
772. Sync with mtn.i2p2.i2p
78
793. Start with a clean checkout:
80
81    ```
82    mtn -d i2p.mtn co --branch=i2p.i2p /path/to/releasedir
83    ```
84
85  - You must build with Java 7 or higher.
86    If you build with Java 8 or higher, you must also have the Java 7 JRE installed for the bootclasspath.
87
884. Create override.properties with (adjust as necessary):
89
90    ```
91    release.privkey.su3=/path/to/su3keystore.ks
92    release.gpg.keyid=0xnnnnnnnn
93    release.signer.su3=xxx@mail.i2p
94    build.built-by=xxx
95    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
96    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
97    ```
98
995. Copy latest trust list _MTN/monotonerc from website or some other workspace
100
1016. Change revision in:
102  - `history.txt`
103  - `installer/install.xml`
104  - `installer/install5.xml`
105  - `core/java/src/net/i2p/CoreVersion.java`
106  - `router/java/src/net/i2p/router/RouterVersion.java`
107    - (change to BUILD = 0 and EXTRA = "")
108
1097. `mtn ci`
110
1118. Review the complete diff from the last release:
112
113    ```
114    mtn diff -r t:i2p-0.9.(xx-1) > out.diff
115    vi out.diff
116    ```
117
1189. Verify that no untrusted revisions were inadvertently blessed by a trusted party:
119
120    ```
121    ant revisions
122    ```
123
124### Build and test
125
1261. `ant release`
127
128  - Copy i2pinstall_${release.number}_windows.exe,
129    console.ico, ../lib/izpack/rh.bat, and ../lib/izpack/VersionInfo_template.rc
130    to Windows machine
131  - Edit rh.bat to set the correct version number
132  - Run rh.bat to edit the resources
133  - Sign the windows installer:
134    Open Visual Studio developer prompt
135    signtool sign /debug i2pinstall_${release.number}_windows.exe
136  - GPG sign the signed windows installer: gpg -u keyid -b i2pinstall_${release.number}_windows.exe
137  - sha256sum i2pinstall_${release.number}_windows.exe
138
1392. Now test:
140  - Save the output about checksums, sizes, and torrents to a file
141    (traditionally `shasums.txt`)
142    - (edit timestamps to UTC if you care)
143  - Copy all the release files somewhere, make sure you have the same ones as last release
144  - Verify sha256sums for release files
145  - Check file sizes vs. previous release, shouldn't be smaller
146    - If the update includes GeoIP, it will be about 1MB bigger
147  - Unzip or list files from `i2pupdate.zip`, see if it looks right
148  - For either windows or linux installer: (probably should do both the first time)
149    - Rename any existing config dir (e.g. mv .i2p .i2p-save)
150    - Run installer, install to temp dir
151    - Look in temp dir, see if all the files are there
152    - Unplug ethernet / turn off wifi so RI doesn't leak
153    - `i2prouter start`
154    - Verify release number in console
155    - Verify welcome news
156    - Click through all the app, status, eepsite, and config pages, see if they look right
157    - Click through each of the translations, see if /console looks right
158    - Look for errors in /log (other than can't reseed errors)
159    - Look in config dir, see if all the files are there
160    - Shutdown
161    - Delete config dir
162    - Move saved config dir back
163    - Reconnect ethernet / turn wifi back on
164  - Load torrents in i2psnark on your production router, verify infohashes
165
1663. If all goes well, tag and push the release:
167
168    ```
169    mtn tag h: i2p-0.x.xx
170    mtn cert t:i2p-0.x.xx branch i2p.i2p.release
171    mtn push
172    ```
173
174### Distribute updates
175
1761. Update news with new version:
177  - Add magnet links, change release dates and release number in to old-format
178    news.xml, and distribute to news hosts (no longer necessary)
179  - In the i2p.newsxml branch, edit magnet links, release dates and release
180    number in data/releases.json, check in and push
181
1822. Add i2pupdate-0.9.xx.su3 torrent to tracker2.postman.i2p and start seeding
183
1843. Notify the following people:
185  - All in-network update hosts
186  - PPA maintainer
187  - news.xml maintainer
188  - backup news.xml maintainer
189  - OSX launcher maintainer
190  - website files maintainer
191
1924. Update Trac:
193  - Add milestone and version dates
194  - Increment milestone and version defaults
195
1965. Wait for a few update hosts to be ready
197
1986. Tell news hosts to flip the switch
199
2007. Monitor torrent for activity to verify that the new news is now live
201
202
203### Distribute libraries
204
2051. `ant mavenCentral`
206
2072. Upload the bundles to Maven Central via https://oss.sonatype.org
208
209
210### Android build
211
2121. See branch i2p.android.base for build instructions
213
2142. Upload to Google Play, f-droid.i2p.io, f-droid.org, and website
215
2163. Announce on Twitter
217
218
219### Notify release
220
2211. Upload files to launchpad release (download mirror)
222   (see debian-alt/doc/launchpad.txt for instructions)
223
2242. Wait for files to be updated on download server,
225   including new OSX launcher version.
226   Verify at http://download.i2p2.no/releases/
227
2283. Website files to change:
229  - Sync with mtn.i2p-projekt.i2p
230  - `i2p2www/static/hosts.txt` if it changed (copy from i2p.i2p mtn branch)
231  - `i2p2www/__init__.py` (release number)
232  - `i2p2www/pages/downloads/list.html` (release signer, if changed)
233  - `i2p2www/pages/downloads/macros` (checksums)
234  - `i2p2www/pages/site/get-involved/roadmap.html` (release date, actual release contents)
235  - `i2p2www/static/news/news.xml` (no longer necessary)
236  - Sync with mtn.i2p-projekt.i2p
237
2384. Announce on:
239  - #i2p, #i2p-dev (also on Freenode side)
240  - IRC
241  - Twitter
242
2435. Launchpad builds
244   (see debian-alt/doc/launchpad.txt for instructions)
245
2466. Copy launchpad files to our Debian repo,
247   or build Debian packages and upload them
248   (see debian-alt/doc/debian-build.txt for instructions)
249
2507. Announce Launchpad and Debian builds on Twitter
251
2528. Notify downstream Debian maintainer
253
2549. (if we get back into Tails) Notify Tails that new Debian builds are available
Note: See TracBrowser for help on using the repository browser.