- 1. Preparations
- 2. Version
- 3. Changelog
- 4. Git Tag
- 5. Package Builds
- 6. Build Server
- 7. Release Tests
- 8. GitHub Release
- 9. Post Release
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 = [email protected]
name = Michael Friedrich
signingkey = D14A1F16
Check issues at https://github.com/Icinga/icingaweb2
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.
Update the .mailmap and AUTHORS files:
git log --use-mailmap | grep '^Author:' | cut -f2- -d' ' | sort | uniq > AUTHORS
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" {} \;
Link to the milestone and closed=1 as filter.
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
git clone [email protected]:icinga/rpm-icingaweb2.git && cd rpm-icingaweb2
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
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 <[email protected]> 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
git clone [email protected]:icinga/deb-icingaweb2.git && cd deb-icingaweb2
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
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
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 "[email protected]"
VERSION=2.6.3
./dch $VERSION-1 "Update to $VERSION"
- 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
- Provision the vagrant boxes and test the release packages.
-
- Start a new docker container and install/run Icinga Web 2 & icingacli.
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
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
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.
This is built with a daily cronjob.
SSH into the webserver or ask bobapple.
cd /usr/local/icinga-docs-tools && ./build-docs.rb -c /var/www/docs/config/icingaweb2-latest.yml
- 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