7.0 KiB
Release Workflow
Table of Content
- 1. Preparations
- 2. Version
- 3. Changelog
- 4. Git Tag
- 5. Package Builds
- 6. Build Server
- 7. Release Tests
- 8. GitHub Release
- 9. Post Release
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 backport 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:
- VERSION
- Application Version: library/Icinga/Application/Version.php
- Module Versions in
modules/*/module.info
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 $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 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
- Wait until all jobs have passed and then publish them one by one with
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
- Create a new blog post on icinga.com/blog including a featured image
- Create a release topic on community.icinga.com
- Release email to net-tech & team