icingaweb2/RELEASE.md

7.0 KiB

Release Workflow

Table of Content

Preparations

Specify the release version.

VERSION=2.6.3

Add your signing key to your Git configuration file, if not already there.

vim $HOME/.gitconfig

[user]
        email = michael.friedrich@icinga.com
        name = Michael Friedrich
        signingkey = D14A1F16

Issues

Check issues at https://github.com/Icinga/icingaweb2

Backport Commits

For minor versions not branched off git master you need to manually backports any and all commits from the master branch which should be part of this release.

Authors

Update the .mailmap and AUTHORS files:

git log --use-mailmap | grep '^Author:' | cut -f2- -d' ' | sort | uniq > AUTHORS

Version

Update the version in the following files:

Commands:

echo "v$VERSION" > VERSION
sed -i '' "s/const VERSION = '.*'/const VERSION = '$VERSION'/g" library/Icinga/Application/Version.php
find . -type f -name '*.info' -exec sed -i '' "s/Version: .*/Version: $VERSION/g" {} \;

Changelog

Link to the milestone and closed=1 as filter.

Git Tag

git commit -v -a -m "Release version $VERSION"

Create a signed tag (tags/v) on the master branch (for major releases) or the support branch (for minor releases).

git tag -s -m "Version $VERSION" v$VERSION

Push the tag:

git push --tags

For major releases: Create a new support branch:

git checkout master
git checkout -b support/2.6
git push -u origin support/2.6

Package Builds

RPM Packages

git clone git@github.com:icinga/rpm-icingaweb2.git && cd rpm-icingaweb2

Branch Workflow

Major releases are branched off master.

git checkout master && git pull

Bugfix releases are created in the release branch and later merged to master.

git checkout release && git pull

Release Commit

Set the Version, Revision and changelog inside the spec file.

sed -i "s/Version: .*/Version: $VERSION/g" icingaweb2.spec

vim icingaweb2.spec

%changelog
* Wed Apr 24 2019 Johannes Meyer <johannes.meyer@icinga.com> 2.6.3-1
- Update to 2.6.3
git commit -av -m "Release 2.5.3-1"
git push

Note for major releases: Update release branch to latest. git checkout release && git pull && git merge master && git push

Note for minor releases: Cherry-pick the release commit into master. git checkout master && git pull && git cherry-pick release && git push

DEB Packages

git clone git@github.com:icinga/deb-icingaweb2.git && cd deb-icingaweb2

Branch Workflow

Major releases are branched off master.

git checkout master && git pull

Bugfix releases are created in the release branch and later merged to master.

git checkout release && git pull

Release Commit

Set the Version, Revision and changelog by using the dch helper.

VERSION=2.6.3

./dch $VERSION-1 "Update to $VERSION"
git commit -av -m "Release $VERSION-1"
git push

Note for major releases: Update release branch to latest.

git checkout release && git pull && git merge master && git push

Note for minor releases: Cherry-pick the release commit into master.

git checkout master && git pull && git cherry-pick release && git push

DEB with dch on macOS

docker run -v `pwd`:/mnt/packaging -ti ubuntu:bionic bash

apt-get update && apt-get install git ubuntu-dev-tools vim -y
cd /mnt/packaging

git config --global user.name "Eric Lippmann"
git config --global user.email "eric.lippmann@icinga.com"

VERSION=2.6.3

./dch $VERSION-1 "Update to $VERSION"

Build Server

  • Verify package build changes for this version.
  • Test the snapshot packages for all distributions beforehand.
  • Build the newly created Git tag for Debian/RHEL/SuSE.
    • Wait until all jobs have passed and then publish them one by one with allow_release

Release Tests

  • Provision the vagrant boxes and test the release packages.
    • Start a new docker container and install/run Icinga Web 2 & icingacli.

CentOS

docker run -ti centos:latest bash

yum -y install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm
yum -y install centos-release-scl
yum -y install icingaweb2 icingacli
icingacli

Debian

docker run -ti debian:stretch bash

apt-get update && apt-get install -y wget curl gnupg apt-transport-https

DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \
 echo "deb https://packages.icinga.com/debian icinga-${DIST} main" > \
 /etc/apt/sources.list.d/${DIST}-icinga.list
 echo "deb-src https://packages.icinga.com/debian icinga-${DIST} main" >> \
 /etc/apt/sources.list.d/${DIST}-icinga.list

curl https://packages.icinga.com/icinga.key | apt-key add -
apt-get -y install icingaweb2 icingacli
icingacli

GitHub Release

Create a new release for the newly created Git tag: https://github.com/Icinga/icingaweb2/releases

Hint: Choose tags, pick one to edit and make this a release. You can also create a draft release.

The release body should contain a short changelog, with links into the roadmap, changelog and blogpost.

Online Documentation

This is built with a daily cronjob.

Manual Updates

SSH into the webserver or ask @bobapple.

cd /usr/local/icinga-docs-tools && ./build-docs.rb -c /var/www/docs/config/icingaweb2-latest.yml

Announcement

Project Management

  • Add new minor version on GitHub.
  • Close the released version on GitHub.