
reSIProcate release process
===========================

This document explains the process for building a release of the
reSIProcate software.

Deliverables
------------

The only official deliverable is the tarball, for example,

    resiprocate-1.8.0.tar.gz

As a courtesy to users, a contrib tarball is also produced,
containing some third party code:

    resiprocate-contrib-1.8.0.tar.gz

Building of binary packages (e.g. for Debian, RPM, OpenCSW) is
done after the tarball release.  That is not covered here.

Workspace
---------

Obtain a release branch from the Git repository.

  git clone -b release/1.8 https://github.com/resiprocate/resiprocate resip-1.8
  cd resip-1.8

If this is the beginning of a release branch, manually copy the ChangeLog
file from the previous release branch and then add the new entries.

Version/tag
-----------

Here we give an example for building the release v1.8.5:

Update version information and tag it:

  vi configure.ac         (update the version and ABIVERSION numbers)

  git add configure.ac
  git commit -m 'release: Update for 1.8.5'
  git tag -s -m 'release: Tag 1.8.5' resiprocate-1.8.5

  git push                (send changes back to Git)

Bootstrap
---------

The bootstrap must always be done on the same version of CMake
for consistency.  The currently endorsed version is the CMake
distributed in Debian 11.0 (bullseye).  If another version is to be used,
it should be discussed on the mailing list and noted in this document.

  cmake .

Make a tarball
--------------

  build/release-tarball.sh

  * this script will call cmake . && make dist
  * it uses a temporary clone from the current working directory
    to avoid picking up files that are not committed

Make the contrib tarball
------------------------

  build/contrib-tarball.sh

Sanity check on tarball
-----------------------

  Extract the tarball to /tmp/some-folder/resiprocate-1.8.5

  cd /tmp/some-folder/resiprocate-1.8.5
  ./build/debian.sh && make -j 70 check

Distribute the tarball
----------------------

  sha256sum resiprocate-1.8.5.tar.gz

  Upload the tarball to the pre-release section of the web site

  cadaver https://www.resiprocate.org/files/pub/reSIProcate/releases/
  mput resiprocate-1.8.5.tar.gz resiprocate-1.8.5.zip resiprocate-contrib-1.8.5.tar.gz resiprocate-contrib-1.8.5.zip

  Send a PGP signed email to the developers list announcing that
  a release candidate has been built.  Other developers may test the tarball.

  Include the SHA-256 checksum of each file in the PGP signed email.

Confirm the release
-------------------

  Upload the tarball to the official download page

  Send a PGP signed email to the resip-announce and users lists
  announcing that the release candidate is now an official release.

  Include the SHA-256 checksum in the PGP signed email.


