commit 2f3b77d2e397b9b839ac9d414c5bd4fa943281b1 Author: Arlo Breault arlolra@gmail.com 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_TARG... - - - 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_TARG... + + - 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@lists.torproject.org