Release Procedure - 2langnic/GlobaLeaks GitHub Wiki

Release procedure

This is the procedure to release a GlobaLeaks software version.

REQUIREMENTS - Setup Release Packaging Environment

On your local pc:

$ apt-get install dput

Hopefully, you already have GlobaLeaks' signing key (mail: [email protected]), and an user at deb.globaleaks.org in group dput. You are warmly suggested to configure ssh (i.e., your .ssh/config) to login with your assigned user, and with your associated identity file.

Configure dput for the upload to deb.globaleaks.org:

$ cat ~/.dput.cf

[globaleaks]
method = scp
fqdn = deb.globaleaks.org
incoming = /srv/packages/mini-dinstall/incoming
allowed_distributions = (jessie|wheezy|trusty|precise)

Step by Step Release Tagging

Update Translation

On your local PC:

$ git clone https://github.com/globaleaks/GlobaLeaks.git

You must first update the translation strings from transifex and commit them by running the following commands over the client source code directory:

 $ cd client
 $ grunt updateTranslations
 $ git commit -a -m "Update translatons"
 $ git push

Tag and Sign the Release

You must first create new tags in the GlobaLeaks tree. Every time either one of these is updated a new incremental tag version must be created. In this example we will use "0.1".

Update the client

First edit the client version described in package.json and in bower.json changing the release version:

$ emacs client/package.json

{
  ...
  "version": "0.1",
  ...
}


$ emacs bower.json

{
  ...
  "version": "0.1",
  ...
}

Than you have to commit, tag and rebuild it.

Update the backend

First edit the version described in globaleaks/__init__.py changing the release tag version:

    $ emacs backend/globaleaks/__init__.py
__version__ = '0.1'
Add a git tag

To complete you must commit and tag GlobaLeaks with:

$ git commit -a -m "commit before new tag message"
$ git push origin
$ git tag -s v0.1 -m 'GlobaLeaks version 0.1' -u $signing_user
$ git push origin --tags

Build GlobaLeaks for each supported platform

GlobaLeaks can be built just like any other debian package. Refer to Debian's New Maintainer Guide for any trouble.

For each distro/version you should checkout on the relevant branch and perform the following packaging steps.

$ git checkout packaging_branch
$ git merge master

to fetch all new code changes, and in particular the tagged commit containing version changes.

available branches are:

  • release/debian/jessie
  • release/debian/wheezy
  • release/ubuntu/precise
  • release/ubuntu/trusty

Update debian/changelog

Then you will need to update also debian/changelog:

$ export DEBFULLNAME="GlobaLeaks software signing key"
$ export DEBEMAIL="[email protected]"
$ dch -i

Commit the changelog

To complete you must commit the changelog with:

$ git commit -a -m "Apply changelog for $disto_codename release $gl_version"
$ git push origin

At this point, you are ready to build the package:

$ sudo mk-build-deps -i  # to install build dependencies
$ debuild  # to build the debian package

Note that dpkg is supposed to run also the unittests via python setup.py test. At any moment, you can exclude (or include, resp.) this by uncommenting (or commenting) the line

export PYBUILD_DISABLE=test

in your debian/rules file.

Upload to deb.globaleaks.org

Simply as

$ dput globaleaks ../globaleaks_${version}_all.changes

Generate GlobaLeaks images

After generating a GlobaLeaks package, you can build the new images. Don't forget to test it manually too!

$ cd appliance/platform-version/
$ /path/to/packer build -var deb=/path/to/globaleaks_*.deb template.json

GlobaLeaks Release Announcment Procedure

  • Prepare email message for announcement
  • Send an email to mailing lists
  • Send a Tweet (and retweet trough other social accounts)
  • Send an irc message to relevant chat/channels and social networks groups
⚠️ **GitHub.com Fallback** ⚠️