[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor-messenger-build/master] Start documenting some of the rebase procedure
commit 2f3b77d2e397b9b839ac9d414c5bd4fa943281b1
Author: Arlo Breault <arlolra@xxxxxxxxx>
Date: Thu Mar 9 08:37:04 2017 -0800
Start documenting some of the rebase procedure
---
README | 77 ---------------
README.RELEASE | 274 -----------------------------------------------------
README.md | 81 ++++++++++++++++
docs/rebasing.md | 102 ++++++++++++++++++++
docs/release.md | 284 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 467 insertions(+), 351 deletions(-)
diff --git a/README b/README
deleted file mode 100644
index 7af597b..0000000
--- a/README
+++ /dev/null
@@ -1,77 +0,0 @@
-Tor Messenger Build
-===================
-
-Installing build dependencies
------------------------------
-
-To build Tor Messenger, you need a Linux distribution that has support
-for Docker (such as Debian jessie, Ubuntu 14.04, Fedora 20, etc ...).
-The Docker package is usually named docker.io or docker-io.
-On Debian jessie, the docker.io package is available in backports.
-
-Your user account should have access to the docker command without using
-sudo, so it should be in the docker group. The docker daemon should
-also be running.
-
-The sources are downloaded using git and mercurial which need to be
-installed.
-
-You also need a few perl modules installed:
-- YAML::XS
-- File::Basename
-- Getopt::Long
-- Template
-- IO::Handle
-- IO::CaptureOutput
-- File::Temp
-- File::Slurp
-- File::Path
-- String::ShellQuote
-- Sort::Versions
-- Digest::SHA
-- Data::UUID
-- Data::Dump
-
-If you are running Debian or Ubuntu, you can install them with:
-
-# apt-get install libyaml-libyaml-perl libtemplate-perl \
- libio-handle-util-perl libio-all-perl \
- libio-captureoutput-perl libfile-slurp-perl \
- libstring-shellquote-perl libsort-versions-perl \
- libdigest-sha-perl libdata-uuid-perl libdata-dump-perl \
- git mercurial
-
-
-Starting a build
-----------------
-
-To start a build, simply run "make all" in the directory to build all
-currently supported architectures.
-
-If you want to build only one architecture, you can run something like
-"make tor-messenger-linux-x86_64".
-
-The resulting builds are stored in the out/tor-messenger directory.
-
-You can also run "make tor-messenger-release" to build it for all
-architectures, rename files to their final name and generate an
-sha256sums.txt file in the directory release/$version.
-
-
-Updating git and hg sources
----------------------------
-
-You can run "make fetch" to fetch the latest sources from git and
-mercurial for all components included in Tor Messenger.
-
-
-Cleaning obsolete files and containers images
----------------------------------------------
-
-To clean obsolete files and containers images, you can run "make clean-old".
-
-This command will remove any intermediate build files and containers
-that are no longer used in the current builds. Because it needs to
-compute the filename of all current files, this command takes a lot of
-time to run.
-
diff --git a/README.RELEASE b/README.RELEASE
deleted file mode 100644
index 1170207..0000000
--- a/README.RELEASE
+++ /dev/null
@@ -1,274 +0,0 @@
-Release Process for Tor Messenger
-=================================
-
-You are ready to release Tor Messenger when you have performed a substantial
-development effort, or you have to patch a security issue.
-
-The release process is divided into two parts: building Tor Messenger, and
-then signing the MAR files for secure automatic updates; follow this guide
-step by step to complete both the steps.
-
-Building
-========
-
-- If not already done, bump the version number in `ChangeLog', `rbm.conf',
- `tools/update-responses/config.yml'
-
-- Ensure `HEAD' on the build machines matches the `master' of
- `tor-messenger-build.git' repository.
-
-- Run `make fetch' before the next step.
-
-- Run `make tor-messenger-release'. The builds will be in the
- `release/$VERSION' directory, along with the MAR files. This will also
- output the `sha256sum' of the files.
-
-- Compare the Linux builds with at least one other person -- preferably
- building on another machine -- to check if they are reproducible.
-
-- Test the builds on all platforms:
-
- - Create an XMPP account and IRC account
-
- - Ensure that the corresponding OTR keys have been generated (Tools >
- OTR Preferences > Private Keys)
-
- - Initiate an OTR conversation with another instance. Verify the
- various authentication mechanisms.
-
-- If everything is fine, send the Windows and macOS builds (EXE and DMG) to
- the Tor Browser team for code signing.
-
-! Wait to get the signed EXE and DMG back before proceeding to the next step !
-
-Making Update MARs
-==================
-
-This step only works if you want to do an update build and have a base version
-to diff against. So if you are upgrading from A to B, follow these steps; this
-assumes that A is the older version and B is the newer one.
-
- ! These steps are not required if you are doing a build for just A or B !
-
-- Navigate to the build directory on the build machine
-
-- `cd tor-messenger-build/release/ && mkdir -p tor-messenger/signed/$VERSION'
- (where $VERSION is the version of the release, same as in rbm.conf).
-
-- You are now in the tor-messenger/signed/$VERSION/ directory
-
-- Copy all the release files from tor-messenger-release into this directory
-
- cp -r ../../../$VERSION/* .
-
- ! If this is the first time you are doing an update, make sure the older
- version is also present in the signed/ directory. For example if you are
- building B for the first time, you should have A/ in the signed/ directory.
- Repeat the above steps for A (if not already done):
- mkdir -p tor-messenger/signed/A
- cd A/
- cp -r ../../../A/* .
- The `gen_incrementals' script will complain about this.
-
-- Now copy the SIGNED Windows and macOS EXE and DMG files which the Tor
- Browser team has uploaded.
- - Check this step again to ensure you have the signed binaries. Compare
- the checksums!
-
-- At this stage, you have the code signed binaries and the unsigned complete
- MARs.
-
-- Now go to `tor-messenger-build/tools/update-responses'.
-
-- Edit `config.yml':
- - Check and update the version in the `channel' section
- - In `version', add a new section (see existing sections for help)
- corresponding to the release version
- - Assume you are updating from A to B. Your `config.yml' should look like:
-
- channels:
- release: B
- B:
- platformVersion: 45.6.0
- detailsURL: https://blog.torproject.org/blog/tor-messenger-B-released
- incremental_from:
- - A
-
- ! Increment platformVersion if it has changed
- ! Update detailsURL which will point to the blog post detailing the release
-
-- Now run `./gen_incrementals'. In the `signed/$VERSION' directory, you should
- see incremental MARs from A->B along with the existing complete MARs.
-
-- This completes the MAR generation step. The next step is signing, which
- takes place offline.
-
-Signing Update MARs
-===================
-
-This step has to be performed offline and assumes you have the MAR signing
-certificates and the private keys.
-
- ! DO NOT copy the certificate directory to ANY remote machine !
-
-! This step works only on a Linux machine (32-bit or 64-bit)
-
-# Offline Steps Start #
-
-- Create a new local directory
-
-- Copy `signmars.py' from the build repository (`tor-messenger/tools/update-responses/')
-
-- Copy the following files from the signed/ directory in the previous section
- to the current local directory:
-
- mar-tools-linux*.zip
- *.mar
-
- scp tor-messenger-build/release/tor-messenger/signed/$VERSION/{*.mar,mar-tools-linux*.zip} .
-
-- Set `NSS_DB_DIR' to point to the directory with the certificate files. You
- should point to the directory with the `cert8.db' file.
-
-- Run `signmars.py' and follow the steps. The signed MARs will be in the
- signed/ directory.
-
-- cd signed/
-
-- Upload the signed MARs back to the directory you copied them from.
-
- scp *.mar tor-messenger-build/release/tor-messenger/signed/$VERSION/
-
-# Offline Steps End #
-
-- Back to the build machine: navigate to tools/update-responses/. Run
- `./update_responses' to generate the update manifest.
-
-- Generate the checksums for the builds:
-
- sha256sum `ls -I "*.zip" -I "*.txt"` > sha256sums-signed-build.txt
-
-- GPG sign the sha256sums-signed-build.txt file:
-
- - Copy the sha256sums-signed-build.txt to a local machine
-
- gpg -abs sha256sums-signed-build.txt
-
- - Upload the signature (*.asc) back to build machine signed/ directory.
-
-- At this stage, you have the code signed DMG and EXE, Linux builds, signed
- MAR files, the update information, and the signed sha256sum of all files.
-
-Testing Updates
-===============
-
-Before we push the update to users, we should test them first to make sure
-that incremental (or complete updates) are working as intended. We do this by
-pushing the updates to the `update_2.test' directory instead of `update_2'.
-
-- Copy the `htdocs/release' directory from the last section to `aus2.torproject.org'
- staticiforme.torproject.org:/srv/aus2-master.torproject.org/htdocs/tormessenger/update_2.test/release
-
- ! Make sure the .htaccess file is copied as well.
-
-- ssh to `staticiforme.torproject.org:/srv/dist-master.torproject.org/htdocs/tormessenger'
- `mkdir $VERSION` to create the directory for the new version.
-
-- Copy the contents* of the signed/ directory (MAR files) to dist.tormessenger.org/tormessenger/$VERSION
- staticiforme.torproject.org:/srv/dist-master.torproject.org/htdocs/tormessenger/$VERSION
-
- * - You can skip sha256sums-unsigned-build.txt since we don't use it.
-
-- ssh to `staticiforme.torproject.org:/srv/dist-master.torproject.org/htdocs/tormessenger'
- - Run `ln -sfn $VERSION current'
- This helps us ensure that the `current' directory always refers to the
- latest release of Tor Messenger
- - Exit
-
-- We need to finalize the changes. Run:
- ssh staticiforme.torproject.org static-update-component dist.torproject.org && ssh staticiforme.torproject.org static-update-component aus2.torproject.org
-
-- Now test the updates on ALL platforms as it is possbile that updates may
- work on one but fail on the other.
-
- - Start Tor Messenger
-
- - Open the preferences editor and copy the value for preference `app.update.url'
-
- - Create a new string preference (Right click -> New -> String) and set
- the name to `app.update.url.override'. Set the value copied from the
- previous step REPLACING `update_2' with `update_2.test'. Your string
- should be:
-
- https://aus2.torproject.org/tormessenger/update_2.test/%CHANNEL%/%BUILD_TARGET%/%VERSION%/%LOCALE%
-
- - Create a new boolean preference `app.update.log' and set it to `true'
-
- - Force an update by going to the about screen
-
- - Tor Messenger should update (incrementally) and then restart
-
- - The update should be applied on restart. If not, it should complain and
- that means something is broken. Since we set `app.update.log' to `true',
- it's a good time to look at the error console
-
-If everything went on fine with the testing, move on to the next step.
-
-Finalizing Updates and Releasing
-================================
-
-- Publish the blog post on blog.torproject.org. The URL should follow the same
- format as described in the `config.yml' file for $VERSION
-
-- ssh to `staticiforme.torproject.org:/srv/aus2-master.torproject.org/htdocs/tormessenger/update_2/release`
-
-- Delete the existing files and then copy the changes from the `test' directory:
-
- cp -R ../../update_2.test/release/. .
-
-- The update is still not live. To finalize it, exit, and then run:
-
- ssh staticiforme.torproject.org static-update-component aus2.torproject.org
-
-- The update is now live. Now is a good time to again test if the updates are
- being properly pushed to the users! It may be a good idea to repeat the Tor
- Messenger tests in the previous section. (Install older version, force
- update, check.)
-
-- Finalize the release process by tagging the version in
- `tor-messenger-build.git' (run the code below). Make sure that HEAD is the
- commit which adds the release date to the ChangeLog.
-
- VERSION=`awk '/tormessenger_version/ {print $2}' rbm.conf | cut -d "'" -f2`
- git tag -s v$VERSION -m "version $VERSION"
- git push --tags
-
-- This completes the release process.
-
-After a Release
-===============
-
-- Bump up the version number in ChangeLog, rbm.conf,
- tools/update-responses/config.yml for the next release
-
-- Increment the version number and update the links on
- https://trac.torproject.org/projects/tor/wiki/doc/TorMessenger
-
-- Administer the comments on the blog and reply to them. Open relevant tickets
- wherever necessary.
-
-Troubleshooting
-===============
-
-- If you want to update add-ons like ctypes-otr or tor-launcher, make sure to
- bump the version number in their `install.rdf' file. Add-ons are only
- updated if the version number is incremented.
-
-- Any changes you make on staticiforme.torproject.org have to be finalized
- with the `static-update-component $DIR' command. So if you have made changes
- to `dist.torproject.org', you have to run:
-
- ssh staticiforme.torproject.org static-update-component dist.torproject.org
-
-- Make sure `app.update.log' is set to `true' before testing updates since you
- will get logging information as the update is applied, and if it fails.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a45ef70
--- /dev/null
+++ b/README.md
@@ -0,0 +1,81 @@
+Tor Messenger Build
+===================
+
+Installing build dependencies
+-----------------------------
+
+To build Tor Messenger, you need a Linux distribution that has support
+for Docker (such as Debian jessie, Ubuntu 14.04, Fedora 20, etc ...).
+The Docker package is usually named docker.io or docker-io.
+On Debian jessie, the docker.io package is available in backports.
+
+Your user account should have access to the docker command without using
+sudo, so it should be in the docker group. The docker daemon should
+also be running.
+
+The sources are downloaded using git and mercurial which need to be
+installed.
+
+You also need a few perl modules installed:
+
+```
+- YAML::XS
+- File::Basename
+- Getopt::Long
+- Template
+- IO::Handle
+- IO::CaptureOutput
+- File::Temp
+- File::Slurp
+- File::Path
+- String::ShellQuote
+- Sort::Versions
+- Digest::SHA
+- Data::UUID
+- Data::Dump
+```
+
+If you are running Debian or Ubuntu, you can install them with:
+
+```
+# apt-get install libyaml-libyaml-perl libtemplate-perl \
+ libio-handle-util-perl libio-all-perl \
+ libio-captureoutput-perl libfile-slurp-perl \
+ libstring-shellquote-perl libsort-versions-perl \
+ libdigest-sha-perl libdata-uuid-perl libdata-dump-perl \
+ git mercurial
+```
+
+Starting a build
+----------------
+
+To start a build, simply run `make all` in the directory to build all
+currently supported architectures.
+
+If you want to build only one architecture, you can run something like
+`make tor-messenger-linux-x86_64`.
+
+The resulting builds are stored in the out/tor-messenger directory.
+
+You can also run `make tor-messenger-release` to build it for all
+architectures, rename files to their final name and generate an
+sha256sums.txt file in the directory release/$version.
+
+
+Updating git and hg sources
+---------------------------
+
+You can run `make fetch` to fetch the latest sources from git and
+mercurial for all components included in Tor Messenger.
+
+
+Cleaning obsolete files and containers images
+---------------------------------------------
+
+To clean obsolete files and containers images, you can run `make clean-old`.
+
+This command will remove any intermediate build files and containers
+that are no longer used in the current builds. Because it needs to
+compute the filename of all current files, this command takes a lot of
+time to run.
+
diff --git a/docs/rebasing.md b/docs/rebasing.md
new file mode 100644
index 0000000..98101f2
--- /dev/null
+++ b/docs/rebasing.md
@@ -0,0 +1,102 @@
+Rebasing
+========
+
+When a new version of Tor Browser or Thunderbird is tagged, we need to
+rebase our patchsets. This doc will help the unacquainted.
+
+Maintaining a fork
+------------------
+
+This might be another approach. We're kind of waiting on,
+https://bugzilla.mozilla.org/show_bug.cgi?id=1309045
+
+so we can sync that here,
+https://gitweb.torproject.org/tor-messenger.git/
+
+Sync'ing mercurial to git
+-------------------------
+
+This isn't strictly necessary but the author of this document prefers working
+in git. You'll need to install [fast-export](https://github.com/frej/fast-export)
+
+```
+hg clone https://hg.mozilla.org/releases/comm-esr45/
+mkdir tor-messenger
+cd tor-messenger
+git init
+hg-fast-export -r ../comm-esr45
+```
+
+Note, this is going to complain about detached heads in mercurial.
+Just `--force` it.
+
+Now you have a git repo sync'd w/ hg
+
+You can rerun that as new commits come in (`hg pull && hg update`),
+but ignore that for now.
+
+Applying the Tor Messenger patches to a tag
+-------------------------------------------
+
+Let's checkout the right Thunderbird tag in git. The specific tag below is
+from the time this document was originally written. Obviously, update it as
+necessary.
+
+```
+export TAG=THUNDERBIRD_45_8_0_RELEASE
+
+# We're still in "tor-messenger" from above
+git checkout -b tm-base $TAG
+git checkout -b tm
+```
+
+We created `tm-base` to ease rebasing and formatting patches below. Now go
+over to the `tor-messenger-build` repo and get our patches,
+
+```
+cd projects/instantbird
+cp 00* ~/tor-messenger # Assuming the above repo you created was in ~
+```
+
+And apply them,
+
+```
+cd ~/tor-messenger
+git branch # Should say "tm" from above
+git am 00*.patch
+rm 00*
+```
+
+Now you have a nice `tm` branch based on `$TAG` with all our patches.
+
+Adding or updating a patch
+--------------------------
+
+Generally, you'll want just want to do some work and `git commit` it on top.
+Occasionally though, you'll need to make some changes to the patches we're
+already maintaining. A good example of that is when Tor Browser updates,
+you'll want to sync the preferences from `browser/app/profile/000-tor-browser.js`
+
+```
+git rebase -i tm-base
+# Pick the first commit for editing, "Set Tor Messenger preferences"
+```
+
+Now copy the contents from the new `000-tor-browser.js` to `im/app/profile/all-instantbird.js`
+being sure to lineup sections to produce a nice diff. Mark any new changes
+where we deviate with `// TM`. (Note: This description is a little opaque
+and can use some clarifying statements.)
+
+```
+git rebase --continue
+```
+
+Now, we're ready to export those changes and copy them back over to the
+`tor-messenger-build` repo.
+
+```
+git format-patch tm-base
+mv 00* ~/tor-messenger-build/projects/instantbird/
+```
+
+Be sure to add / update any modified `-filename:` in the `config`.
diff --git a/docs/release.md b/docs/release.md
new file mode 100644
index 0000000..7f07fc1
--- /dev/null
+++ b/docs/release.md
@@ -0,0 +1,284 @@
+Release Process for Tor Messenger
+=================================
+
+You are ready to release Tor Messenger when you have performed a substantial
+development effort, or you have to patch a security issue.
+
+The release process is divided into two parts: building Tor Messenger, and
+then signing the MAR files for secure automatic updates; follow this guide
+step by step to complete both the steps.
+
+Building
+========
+
+- If not already done, bump the version number in `ChangeLog`, `rbm.conf`,
+ `tools/update-responses/config.yml`
+
+- Ensure `HEAD` on the build machines matches the `master` of
+ `tor-messenger-build.git` repository.
+
+- Run `make fetch` before the next step.
+
+- Run `make tor-messenger-release`. The builds will be in the
+ `release/$VERSION` directory, along with the MAR files. This will also
+ output the `sha256sum` of the files.
+
+- Compare the Linux builds with at least one other person -- preferably
+ building on another machine -- to check if they are reproducible.
+
+- Test the builds on all platforms:
+
+ - Create an XMPP account and IRC account
+
+ - Ensure that the corresponding OTR keys have been generated (Tools >
+ OTR Preferences > Private Keys)
+
+ - Initiate an OTR conversation with another instance. Verify the
+ various authentication mechanisms.
+
+- If everything is fine, send the Windows and macOS builds (EXE and DMG) to
+ the Tor Browser team for code signing.
+
+**Wait to get the signed EXE and DMG back before proceeding to the next step**
+
+Making Update MARs
+==================
+
+This step only works if you want to do an update build and have a base version
+to diff against. So if you are upgrading from A to B, follow these steps; this
+assumes that A is the older version and B is the newer one.
+
+**These steps are not required if you are doing a build for just A or B**
+
+- Navigate to the build directory on the build machine
+
+- `cd tor-messenger-build/release/ && mkdir -p tor-messenger/signed/$VERSION`
+ (where $VERSION is the version of the release, same as in rbm.conf).
+
+- You are now in the tor-messenger/signed/$VERSION/ directory
+
+- Copy all the release files from tor-messenger-release into this directory
+
+ cp -r ../../../$VERSION/* .
+
+ **If this is the first time you are doing an update, make sure the older
+ version is also present in the signed/ directory. For example if you are
+ building B for the first time, you should have A/ in the signed/ directory.
+ Repeat the above steps for A (if not already done):**
+
+ mkdir -p tor-messenger/signed/A
+ cd A/
+ cp -r ../../../A/* .
+
+ **The `gen_incrementals' script will complain about this.**
+
+- Now copy the SIGNED Windows and macOS EXE and DMG files which the Tor
+ Browser team has uploaded.
+
+ - Check this step again to ensure you have the signed binaries. Compare
+ the checksums!
+
+- At this stage, you have the code signed binaries and the unsigned complete
+ MARs.
+
+- Now go to `tor-messenger-build/tools/update-responses`.
+
+- Edit `config.yml`:
+ - Check and update the version in the `channel` section
+ - In `version`, add a new section (see existing sections for help)
+ corresponding to the release version
+ - Assume you are updating from A to B. Your `config.yml` should look like:
+
+ channels:
+ release: B
+ B:
+ platformVersion: 45.6.0
+ detailsURL: https://blog.torproject.org/blog/tor-messenger-B-released
+ incremental_from:
+ - A
+
+ **Increment platformVersion if it has changed
+ Update detailsURL which will point to the blog post detailing the release**
+
+- Now run `./gen_incrementals`. In the `signed/$VERSION` directory, you should
+ see incremental MARs from A->B along with the existing complete MARs.
+
+- This completes the MAR generation step. The next step is signing, which
+ takes place offline.
+
+Signing Update MARs
+===================
+
+This step has to be performed offline and assumes you have the MAR signing
+certificates and the private keys.
+
+**DO NOT copy the certificate directory to ANY remote machine**
+
+**This step works only on a Linux machine (32-bit or 64-bit)**
+
+Offline Steps Start
+-------------------
+
+- Create a new local directory
+
+- Copy `signmars.py` from the build repository (`tor-messenger/tools/update-responses/`)
+
+- Copy the following files from the signed/ directory in the previous section
+ to the current local directory:
+
+ mar-tools-linux*.zip
+ *.mar
+
+ scp tor-messenger-build/release/tor-messenger/signed/$VERSION/{*.mar,mar-tools-linux*.zip} .
+
+- Set `NSS_DB_DIR` to point to the directory with the certificate files. You
+ should point to the directory with the `cert8.db` file.
+
+- Run `signmars.py` and follow the steps. The signed MARs will be in the
+ signed/ directory.
+
+- `cd signed/`
+
+- Upload the signed MARs back to the directory you copied them from.
+
+ scp *.mar tor-messenger-build/release/tor-messenger/signed/$VERSION/
+
+Offline Steps End
+-----------------
+
+- Back to the build machine: navigate to tools/update-responses/. Run
+ `./update_responses` to generate the update manifest.
+
+- Generate the checksums for the builds:
+
+ sha256sum `ls -I "*.zip" -I "*.txt"` > sha256sums-signed-build.txt
+
+- GPG sign the sha256sums-signed-build.txt file:
+
+ - Copy the sha256sums-signed-build.txt to a local machine
+
+ gpg -abs sha256sums-signed-build.txt
+
+ - Upload the signature (*.asc) back to build machine signed/ directory.
+
+- At this stage, you have the code signed DMG and EXE, Linux builds, signed
+ MAR files, the update information, and the signed sha256sum of all files.
+
+Testing Updates
+===============
+
+Before we push the update to users, we should test them first to make sure
+that incremental (or complete updates) are working as intended. We do this by
+pushing the updates to the `update_2.test` directory instead of `update_2`.
+
+- Copy the `htdocs/release` directory from the last section to `aus2.torproject.org`
+
+ staticiforme.torproject.org:/srv/aus2-master.torproject.org/htdocs/tormessenger/update_2.test/release
+
+**Make sure the .htaccess file is copied as well.**
+
+- ssh to `staticiforme.torproject.org:/srv/dist-master.torproject.org/htdocs/tormessenger`
+ `mkdir $VERSION` to create the directory for the new version.
+
+- Copy the contents* of the signed/ directory (MAR files) to dist.tormessenger.org/tormessenger/$VERSION
+
+ staticiforme.torproject.org:/srv/dist-master.torproject.org/htdocs/tormessenger/$VERSION
+
+ * - You can skip sha256sums-unsigned-build.txt since we don't use it.
+
+- ssh to `staticiforme.torproject.org:/srv/dist-master.torproject.org/htdocs/tormessenger`
+
+ - Run `ln -sfn $VERSION current`
+ This helps us ensure that the `current` directory always refers to the
+ latest release of Tor Messenger
+
+ - Exit
+
+- We need to finalize the changes. Run:
+
+ ssh staticiforme.torproject.org static-update-component dist.torproject.org && ssh staticiforme.torproject.org static-update-component aus2.torproject.org
+
+- Now test the updates on ALL platforms as it is possible that updates may
+ work on one but fail on the other.
+
+ - Start Tor Messenger
+
+ - Open the preferences editor and copy the value for preference `app.update.url`
+
+ - Create a new string preference (Right click -> New -> String) and set
+ the name to `app.update.url.override`. Set the value copied from the
+ previous step REPLACING `update_2` with `update_2.test`. Your string
+ should be:
+
+ https://aus2.torproject.org/tormessenger/update_2.test/%CHANNEL%/%BUILD_TARGET%/%VERSION%/%LOCALE%
+
+ - Create a new boolean preference `app.update.log` and set it to `true`
+
+ - Force an update by going to the about screen
+
+ - Tor Messenger should update (incrementally) and then restart
+
+ - The update should be applied on restart. If not, it should complain and
+ that means something is broken. Since we set `app.update.log` to `true`,
+ it's a good time to look at the error console
+
+If everything went on fine with the testing, move on to the next step.
+
+Finalizing Updates and Releasing
+================================
+
+- Publish the blog post on blog.torproject.org. The URL should follow the same
+ format as described in the `config.yml` file for $VERSION
+
+- ssh to `staticiforme.torproject.org:/srv/aus2-master.torproject.org/htdocs/tormessenger/update_2/release`
+
+- Delete the existing files and then copy the changes from the `test` directory:
+
+ cp -R ../../update_2.test/release/. .
+
+- The update is still not live. To finalize it, exit, and then run:
+
+ ssh staticiforme.torproject.org static-update-component aus2.torproject.org
+
+- The update is now live. Now is a good time to again test if the updates are
+ being properly pushed to the users! It may be a good idea to repeat the Tor
+ Messenger tests in the previous section. (Install older version, force
+ update, check.)
+
+- Finalize the release process by tagging the version in
+ `tor-messenger-build.git` (run the code below). Make sure that HEAD is the
+ commit which adds the release date to the ChangeLog.
+
+ VERSION=`awk '/tormessenger_version/ {print $2}' rbm.conf | cut -d "'" -f2`
+ git tag -s v$VERSION -m "version $VERSION"
+ git push --tags
+
+- This completes the release process.
+
+After a Release
+===============
+
+- Bump up the version number in ChangeLog, rbm.conf,
+ tools/update-responses/config.yml for the next release
+
+- Increment the version number and update the links on
+ https://trac.torproject.org/projects/tor/wiki/doc/TorMessenger
+
+- Administer the comments on the blog and reply to them. Open relevant tickets
+ wherever necessary.
+
+Troubleshooting
+===============
+
+- If you want to update add-ons like ctypes-otr or tor-launcher, make sure to
+ bump the version number in their `install.rdf` file. Add-ons are only
+ updated if the version number is incremented.
+
+- Any changes you make on staticiforme.torproject.org have to be finalized
+ with the `static-update-component $DIR` command. So if you have made changes
+ to `dist.torproject.org`, you have to run:
+
+ ssh staticiforme.torproject.org static-update-component dist.torproject.org
+
+- Make sure `app.update.log` is set to `true` before testing updates since you
+ will get logging information as the update is applied, and if it fails.
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits