|
1
|
|
-# ๐ง
Release Prep Tor Browser Legacy
|
|
2
|
|
-
|
|
3
|
|
-- **NOTE** It is assumed the `tor-browser` release rebase and security backport tasks have been completed
|
|
4
|
|
-
|
|
5
|
|
-<details>
|
|
6
|
|
- <summary>Explanation of variables</summary>
|
|
7
|
|
-
|
|
8
|
|
-- `${BUILD_SERVER}`: the server the main builder is using to build a browser release
|
|
9
|
|
-- `${BUILDER}`: whomever is building the release on the ${BUILD_SERVER}
|
|
10
|
|
- - **example**: `pierov`
|
|
11
|
|
-- `${STAGING_SERVER}`: the server the signer is using to run the signing process
|
|
12
|
|
-- `${ESR_VERSION}`: the Mozilla defined ESR version, used in various places for building browser tags, labels, etc
|
|
13
|
|
- - **example**: `91.6.0`
|
|
14
|
|
-- `${TOR_BROWSER_MAJOR}`: the Tor Browser major version
|
|
15
|
|
- - **example**: `11`
|
|
16
|
|
-- `${TOR_BROWSER_MINOR}`: the Tor Browser minor version
|
|
17
|
|
- - **example**: either `0` or `5`; Alpha's is always `(Stable + 5) % 10`
|
|
18
|
|
-- `${TOR_BROWSER_VERSION}`: the Tor Browser version in the format
|
|
19
|
|
- - **example**: `12.5a3`, `12.0.3`
|
|
20
|
|
-- `${BUILD_N}`: a project's build revision within a its branch; this is separate from the `${TOR_BROWSER_BUILD_N}` value; many of the Firefox-related projects have a `${BUILD_N}` suffix and may differ between projects even when they contribute to the same build.
|
|
21
|
|
- - **example**: `build1`
|
|
22
|
|
-- `${TOR_BROWSER_BUILD_N}`: the tor-browser build revision for a given Tor Browser release; used in tagging git commits
|
|
23
|
|
- - **example**: `build2`
|
|
24
|
|
- - **โ ๏ธ WARNING**: A project's `${BUILD_N}` and `${TOR_BROWSER_BUILD_N}` may be the same, but it is possible for them to diverge. For example :
|
|
25
|
|
- - if we have multiple Tor Browser releases on a given ESR branch the two will become out of sync as the `${BUILD_N}` value will increase, while the `${TOR_BROWSER_BUILD_N}` value may stay at `build1` (but the `${TOR_BROWSER_VERSION}` will increase)
|
|
26
|
|
- - if we have build failures unrelated to `tor-browser`, the `${TOR_BROWSER_BUILD_N}` value will increase while the `${BUILD_N}` will stay the same.
|
|
27
|
|
-- `${TOR_BROWSER_VERSION}`: the published Tor Browser version
|
|
28
|
|
- - **example**: `11.5a6`, `11.0.7`
|
|
29
|
|
-- `${TBB_BUILD_TAG}`: the `tor-browser-build` build tag used to build a given Tor Browser version
|
|
30
|
|
- - **example**: `tbb-12.5a7-build1`
|
|
31
|
|
-- `${RELEASE_DATE}`: the intended release date of this browser release; for ESR schedule-driven releases, this should match the upstream Firefox release date
|
|
32
|
|
- - **example**: `2024-10-29`
|
|
33
|
|
-
|
|
34
|
|
-</details>
|
|
35
|
|
-
|
|
36
|
|
-<details>
|
|
37
|
|
- <summary>Build Configuration</summary>
|
|
38
|
|
-
|
|
39
|
|
-### tor-browser: https://gitlab.torproject.org/tpo/applications/tor-browser.git
|
|
40
|
|
-
|
|
41
|
|
-- [ ] Tag `tor-browser` in tor-browser.git
|
|
42
|
|
- - **example**: `tor-browser-115.17.0esr-13.5-1-build1`
|
|
43
|
|
- - Run:
|
|
44
|
|
- ```bash
|
|
45
|
|
- ./tools/browser/sign-tag.torbrowser legacy ${BUILD_N}
|
|
46
|
|
- ```
|
|
47
|
|
-
|
|
48
|
|
-### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
|
|
49
|
|
-Tor Browser Legacy is on the `maint-13.5` branch
|
|
50
|
|
-
|
|
51
|
|
-- [ ] Changelog bookkeeping:
|
|
52
|
|
- - Ensure all commits to `tor-browser` and `tor-browser-build` for this release have an associated issue linked to this release preparation issue
|
|
53
|
|
- - Ensure each issue has a platform (~Windows, ~MacOS, ~Desktop, ~"All Platforms") and potentially ~"Build System" labels
|
|
54
|
|
-- [ ] Create a release preparation branch from the `maint-13.5` branch
|
|
55
|
|
-- [ ] Run release preparation script:
|
|
56
|
|
- - **โ ๏ธ WARNING**: You may need to manually update the `firefox/config` file's `browser_build` field if `tor-browser.git` has not yet been tagged (e.g. if security backports have not yet been merged and tagged)
|
|
57
|
|
- ```bash
|
|
58
|
|
- ./tools/relprep.py --tor-browser --date ${RELEASE_DATE} ${TOR_BROWSER_VERSION}
|
|
59
|
|
- ```
|
|
60
|
|
-- [ ] Review build configuration changes:
|
|
61
|
|
- - [ ] `rbm.conf`
|
|
62
|
|
- - [ ] `var/torbrowser_version`: updated to next browser version
|
|
63
|
|
- - [ ] `var/torbrowser_build`: updated to `${TOR_BROWSER_BUILD_N}`
|
|
64
|
|
- - [ ] `var/browser_release_date`: updated to build date. For the build to be reproducible, the date should be in the past when building.
|
|
65
|
|
- - **โ ๏ธ WARNING**: If we have updated `var/torbrowser_build` without updating the `firefox`, then we can leave this unchanged to avoid forcing a firefox re-build (e.g. when bumping `var/torbrwoser_build` to build2, build3, etc due to non-firefox related build issues)
|
|
66
|
|
- - [ ] ***(Desktop Only)*** `var/torbrowser_incremental_from`: updated to previous Desktop version
|
|
67
|
|
- - **NOTE**: We try to build incrementals for the previous 3 desktop versions
|
|
68
|
|
- - **โ ๏ธ WARNING**: Really *actually* make sure this is the previous Desktop version or else the `make torbrowser-incrementals-*` step will fail
|
|
69
|
|
- - [ ] `projects/firefox/config`
|
|
70
|
|
- - [ ] `var/browser_build`: updated to match `tor-browser` tag
|
|
71
|
|
- - [ ] ***(Optional)*** `var/firefox_platform_version`: updated to latest `${ESR_VERSION}` if rebased
|
|
72
|
|
- - [ ] ***(Optional)*** `projects/translation/config`:
|
|
73
|
|
- - [ ] `steps/base-browser/git_hash`: updated with `HEAD` commit of project's `base-browser` branch
|
|
74
|
|
- - [ ] `steps/tor-browser/git_hash`: updated with `HEAD` commit of project's `tor-browser` branch
|
|
75
|
|
- - [ ] ***(Optional)*** `projects/browser/config`:
|
|
76
|
|
- - [ ] ***(Optional)*** NoScript: https://addons.mozilla.org/en-US/firefox/addon/noscript
|
|
77
|
|
- - [ ] `URL` updated
|
|
78
|
|
- - **โ ๏ธ WARNING**: If preparing the release manually, updating the version number in the url is not sufficient, as each version has a random unique id in the download url
|
|
79
|
|
- - [ ] `sha256sum` updated
|
|
80
|
|
- - [ ] ***(Optional)*** `projects/openssl/config`: https://www.openssl.org/source/
|
|
81
|
|
- - **NOTE**: Only if new LTS version (3.0.X currrently) available
|
|
82
|
|
- - [ ] `version`: updated to next LTS version
|
|
83
|
|
- - [ ] `input_files/sha256sum`: updated to sha256 sum of source tarball
|
|
84
|
|
- - [ ] **(Optional)** `projects/zlib/config`: https://github.com/madler/zlib/releases
|
|
85
|
|
- - **NOTE**: Only if new tag available
|
|
86
|
|
- - [ ] `version`: updated to next release tag
|
|
87
|
|
- - [ ] **(Optional)** `projects/zstd/config`: https://github.com/facebook/zstd/releases
|
|
88
|
|
- - **NOTE**: Only if new tag available
|
|
89
|
|
- - [ ] `version`: updated to next release tag
|
|
90
|
|
- - [ ] `git_hash`: updated to the commit corresponding to the tag (we don't check signatures for Zstandard)
|
|
91
|
|
- - [ ] **(Optional)** `projects/tor/config` https://gitlab.torproject.org/tpo/core/tor/-/tags
|
|
92
|
|
- - [ ] `version`: updated to latest non `-alpha` tag or release tag if newer (ping **dgoulet** or **ahf** if unsure)
|
|
93
|
|
- - [ ] **(Optional)** `projects/go/config` https://go.dev/dl
|
|
94
|
|
- - [ ] `go_1_22`: updated to latest 1.22 version
|
|
95
|
|
- - [ ] `input_files/sha256sum` for `go`: update sha256sum of archive (sha256 sums are displayed on the go download page)
|
|
96
|
|
- - [ ] **(Optional)** `projects/manual/config`
|
|
97
|
|
- - [ ] `version`: updated to latest pipeline id
|
|
98
|
|
- - [ ] `input_files/shasum` for `manual`: updated to manual hash
|
|
99
|
|
- - [ ] Upload the downloaded `manual_${PIPELINEID}.zip` file to `tb-build-02.torproject.org`
|
|
100
|
|
- - [ ] Deploy to `tb-builder`'s `public_html` directory:
|
|
101
|
|
- - Run:
|
|
102
|
|
- ```bash
|
|
103
|
|
- sudo -u tb-builder cp manual_${PIPELINEID}.zip ~tb-builder/public_html/.
|
|
104
|
|
- ```
|
|
105
|
|
- - `sudo` documentation for TPO machines: https://gitlab.torproject.org/tpo/tpa/team/-/wikis/doc/accounts#changingresetting-your-passwords
|
|
106
|
|
- - [ ] `ChangeLog-TBB.txt`: ensure correctness
|
|
107
|
|
- - Browser name correct
|
|
108
|
|
- - Release date correct
|
|
109
|
|
- - No Android updates
|
|
110
|
|
- - All issues added under correct platform
|
|
111
|
|
- - ESR updates correct
|
|
112
|
|
- - Component updates correct
|
|
113
|
|
-- [ ] Open MR with above changes, using the template for release preparations
|
|
114
|
|
- - **NOTE**: target the `maint-13.5` branch
|
|
115
|
|
-- [ ] Merge
|
|
116
|
|
-- [ ] Sign+Tag
|
|
117
|
|
- - **NOTE** this must be done by one of:
|
|
118
|
|
- - boklm
|
|
119
|
|
- - dan
|
|
120
|
|
- - ma1
|
|
121
|
|
- - morgan
|
|
122
|
|
- - pierov
|
|
123
|
|
- - Run:
|
|
124
|
|
- ```bash
|
|
125
|
|
- make torbrowser-signtag-release
|
|
126
|
|
- ```
|
|
127
|
|
-- [ ] Push tag to `upstream`
|
|
128
|
|
-- [ ] Build the tag:
|
|
129
|
|
- - Run:
|
|
130
|
|
- ```bash
|
|
131
|
|
- make torbrowser-release && make torbrowser-incrementals-release
|
|
132
|
|
- ```
|
|
133
|
|
- - [ ] Tor Project build machine
|
|
134
|
|
- - [ ] Local developer machine
|
|
135
|
|
- - [ ] Submit build request to Mullvad infrastructure:
|
|
136
|
|
- - **NOTE** this requires a github authentication token
|
|
137
|
|
- - Run:
|
|
138
|
|
- ```bash
|
|
139
|
|
- make torbrowser-kick-devmole-build
|
|
140
|
|
- ```
|
|
141
|
|
-
|
|
142
|
|
-</details>
|
|
143
|
|
-
|
|
144
|
|
-<details>
|
|
145
|
|
- <summary>Website</summary>
|
|
146
|
|
-
|
|
147
|
|
- ### blog: https://gitlab.torproject.org/tpo/web/blog.git
|
|
148
|
|
- - [ ] Generate release blog post
|
|
149
|
|
- - Run:
|
|
150
|
|
- ```bash
|
|
151
|
|
- ./tools/signing/create-blog-post.torbrowser
|
|
152
|
|
- ```
|
|
153
|
|
- - **NOTE** this script creates the new blog post from a template (edit `./tools/signing/set-config.blog` to set you local blog directory)
|
|
154
|
|
- - [ ] **(Optional)** Note any ESR update
|
|
155
|
|
- - [ ] **(Optional)** Thank any users which have contributed patches
|
|
156
|
|
- - [ ] **(Optional)** Draft any additional sections for new features which need testing, known issues, etc
|
|
157
|
|
- - [ ] Push to origin as new branch and open MR
|
|
158
|
|
- - [ ] Review
|
|
159
|
|
- - [ ] Merge
|
|
160
|
|
- - **โ ๏ธ WARNING**: Do not deploy yet!
|
|
161
|
|
-
|
|
162
|
|
-</details>
|
|
163
|
|
-
|
|
164
|
|
-<details>
|
|
165
|
|
- <summary>Signing</summary>
|
|
166
|
|
-
|
|
167
|
|
-### release signing
|
|
168
|
|
-- [ ] Assign this issue to the signer, one of:
|
|
169
|
|
- - boklm
|
|
170
|
|
- - ma1
|
|
171
|
|
- - morgan
|
|
172
|
|
- - pierov
|
|
173
|
|
-- [ ] Ensure all builders have matching builds
|
|
174
|
|
-- [ ] On `${STAGING_SERVER}`, ensure updated:
|
|
175
|
|
- - **NOTE** Having a local git branch with `maint-13.5` as the upstream branch with these values saved means you only need to periodically `git pull --rebase` and update the `set-config.tbb-version` file
|
|
176
|
|
- - [ ] `tor-browser-build` is on the right commit: `git tag -v tbb-${TOR_BROWSER_VERSION}-${TOR_BROWSER_BUILD_N} && git checkout tbb-${TOR_BROWSER_VERSION}-${TOR_BROWSER_BUILD_N}`
|
|
177
|
|
- - [ ] `tor-browser-build/tools/signing/set-config.hosts`
|
|
178
|
|
- - `ssh_host_builder`: ssh hostname of machine with unsigned builds
|
|
179
|
|
- - `ssh_host_linux_signer`: ssh hostname of linux signing machine
|
|
180
|
|
- - `builder_tor_browser_build_dir`: path on `ssh_host_builder` to root of builder's `tor-browser-build` clone containing unsigned builds
|
|
181
|
|
- - [ ] `tor-browser-build/tools/signing/set-config.rcodesign-appstoreconnect`
|
|
182
|
|
- - `appstoreconnect_api_key_path`: path to json file containing appstoreconnect api key infos
|
|
183
|
|
- - [ ] `tor-browser-build/tools/signing/set-config.tbb-version`
|
|
184
|
|
- - `tbb_version`: tor browser version string, same as `var/torbrowser_version` in `rbm.conf` (examples: `11.5a12`, `11.0.13`)
|
|
185
|
|
- - `tbb_version_build`: the tor-browser-build build number (if `var/torbrowser_build` in `rbm.conf` is `buildN` then this value is `N`)
|
|
186
|
|
- - `tbb_version_type`: either `alpha` for alpha releases or `release` for stable releases
|
|
187
|
|
-- [ ] On `${STAGING_SERVER}` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
|
|
188
|
|
-- [ ] On `${STAGING_SERVER}` in a separate `screen` session, run do-all-signing script:
|
|
189
|
|
- - Run:
|
|
190
|
|
- ```bash
|
|
191
|
|
- cd tor-browser-build/tools/signing/ && ./do-all-signing.torbrowser
|
|
192
|
|
- ```
|
|
193
|
|
- - **NOTE**: on successful execution, the signed binaries and mars should have been copied to `staticiforme` and update responses pushed
|
|
194
|
|
-
|
|
195
|
|
-</details>
|
|
196
|
|
-
|
|
197
|
|
-<details>
|
|
198
|
|
- <summary>Signature verification</summary>
|
|
199
|
|
-
|
|
200
|
|
- <details>
|
|
201
|
|
- <summary>Check whether the .exe files got properly signed and timestamped</summary>
|
|
202
|
|
-
|
|
203
|
|
-```bash
|
|
204
|
|
-# Point OSSLSIGNCODE to your osslsigncode binary
|
|
205
|
|
-pushd tor-browser-build/torbrowser/${channel}/signed/$TORBROWSER_VERSION
|
|
206
|
|
-OSSLSIGNCODE=/path/to/osslsigncode
|
|
207
|
|
-../../../../tools/authenticode_check.sh
|
|
208
|
|
-popd
|
|
209
|
|
-```
|
|
210
|
|
-
|
|
211
|
|
- </details>
|
|
212
|
|
- <details>
|
|
213
|
|
- <summary>Check whether the MAR files got properly signed</summary>
|
|
214
|
|
-
|
|
215
|
|
-```bash
|
|
216
|
|
-# Point NSSDB to your nssdb containing the mar signing certificate
|
|
217
|
|
-# Point SIGNMAR to your signmar binary
|
|
218
|
|
-# Point LD_LIBRARY_PATH to your mar-tools directory
|
|
219
|
|
-pushd tor-browser-build/torbrowser/${channel}/signed/$TORBROWSER_VERSION
|
|
220
|
|
-NSSDB=/path/to/nssdb
|
|
221
|
|
-SIGNMAR=/path/to/mar-tools/signmar
|
|
222
|
|
-LD_LIBRARY_PATH=/path/to/mar-tools/
|
|
223
|
|
-../../../../tools/marsigning_check.sh
|
|
224
|
|
-popd
|
|
225
|
|
-```
|
|
226
|
|
-
|
|
227
|
|
- </details>
|
|
228
|
|
-</details>
|
|
229
|
|
-
|
|
230
|
|
-<details>
|
|
231
|
|
- <summary>Publishing</summary>
|
|
232
|
|
-
|
|
233
|
|
-### website
|
|
234
|
|
-- [ ] On `staticiforme.torproject.org`, static update components:
|
|
235
|
|
- - Run:
|
|
236
|
|
- ```bash
|
|
237
|
|
- static-update-component cdn.torproject.org && static-update-component dist.torproject.org
|
|
238
|
|
- ```
|
|
239
|
|
-- [ ] Deploy `tor-blog` MR
|
|
240
|
|
-- [ ] On `staticiforme.torproject.org`, remove old release:
|
|
241
|
|
- - **NOTE**: Skip this step if we need to hold on to older versions for some reason (for example, this is an Andoid or Desktop-only release, or if we need to hold back installers in favor of build-to-build updates if there are signing issues, etc)
|
|
242
|
|
- - [ ] `/srv/cdn-master.torproject.org/htdocs/aus1/torbrowser`
|
|
243
|
|
- - [ ] `/srv/dist-master.torproject.org/htdocs/torbrowser`
|
|
244
|
|
- - Run:
|
|
245
|
|
- ```bash
|
|
246
|
|
- static-update-component cdn.torproject.org && static-update-component dist.torproject.org
|
|
247
|
|
- ```
|
|
248
|
|
-- [ ] **(Optional)** Generate and deploy new update responses
|
|
249
|
|
- - **NOTE**: This is only required if there will be no corresponding 15.0 release (i.e. this is an emergency legacy-only 13.5 release). Normally, legacy update responses are generated and deployed as part of the 15.0 release.
|
|
250
|
|
- - **โ ๏ธ WARNING**: This is a little bit off the beaten track, ping boklm or morgan if you have any doubts
|
|
251
|
|
- - From the `maint-15.0` branch:
|
|
252
|
|
- - [ ] Update `rbm.conf`
|
|
253
|
|
- - [ ] `var/torbrowser_legacy_version`: update to `${TOR_BROWSER_VERSION}`
|
|
254
|
|
- - **NOTE** this is the browser version for the legacy branch, not this stable branch we've switched to
|
|
255
|
|
- - [ ] `var/torbrowser_legacy_platform_version`: update to `${ESR_VERSION}`
|
|
256
|
|
- - **NOTE** this is ESR version for the legacy branch, not this stable branch we've switched to
|
|
257
|
|
- - [ ] Generate update responses and commit them to tor-browser-update-responses.git:
|
|
258
|
|
- - Run:
|
|
259
|
|
- ```bash
|
|
260
|
|
- cd tor-browser-build/tools/signing/ && ./deploy-legacy
|
|
261
|
|
- ```
|
|
262
|
|
- - On `staticiforme.torproject.org`, deploy new update responses:
|
|
263
|
|
- - [ ] Enable update responses, passing the commit hash as argument (replace $commit):
|
|
264
|
|
- ```bash
|
|
265
|
|
- sudo -u tb-release ./deploy_update_responses-release.sh $commit
|
|
266
|
|
- ```
|
|
267
|
|
-
|
|
268
|
|
-</details>
|
|
269
|
|
-
|
|
270
|
|
-<details>
|
|
271
|
|
- <summary>Communications</summary>
|
|
272
|
|
-
|
|
273
|
|
-### tor-announce mailing list
|
|
274
|
|
-- [ ] Email tor-announce mailing list
|
|
275
|
|
- - **Recipients**
|
|
276
|
|
- ```
|
|
277
|
|
- tor-announce@lists.torproject.org
|
|
278
|
|
- ```
|
|
279
|
|
- - **Subject**
|
|
280
|
|
- ```
|
|
281
|
|
- New Release: Tor Browser ${TOR_BROWSER_VERSION} (Windows, macOS)
|
|
282
|
|
- ```
|
|
283
|
|
- - **Body**
|
|
284
|
|
- ```
|
|
285
|
|
- Hi everyone,
|
|
286
|
|
-
|
|
287
|
|
- Tor Browser ${TOR_BROWSER_VERSION} has now been published for legacy Windows and macOS platforms. For details please see our blog post:
|
|
288
|
|
- - ${BLOG_POST_URL}
|
|
289
|
|
-
|
|
290
|
|
- Changelog:
|
|
291
|
|
- # paste changelog as quote here
|
|
292
|
|
- ```
|
|
293
|
|
-
|
|
294
|
|
-</details>
|
|
295
|
|
-
|
|
296
|
|
-/label ~"Apps::Type::ReleasePreparation"
|
|
297
|
|
-/label ~"Apps::Impact::High"
|
|
298
|
|
-/label ~"Priority::Blocker"
|
|
299
|
|
-/label ~"Apps::Product::TorBrowser" |