Specify the release version.
VERSION=2.7.0
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" {} \;
Choose the most important issues and summarize them in multiple groups/paragraphs. Provide links to the mentioned issues/PRs. At the start include a link to the milestone's closed issues.
Make sure to check for issues/PRs with the label affects-upgrades
and include them in
the upgrading documentation.
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 v$VERSION
For major releases: Create a new support
branch:
git checkout master
git checkout -b support/2.7
git push -u origin support/2.7
Caution!
Don't forget the subscription packages!
git clone [email protected]:packaging/rpm-icingaweb2.git && cd rpm-icingaweb2
git clone [email protected]:packaging/subscription-rpm-icingaweb2.git && cd subscription-rpm-icingaweb2
git clone [email protected]:packaging/deb-icingaweb2.git && cd deb-icingaweb2
Checkout master
and create a new branch.
- For releases use x.x[.x] as branch name (e.g. 2.7 or 2.7.1)
git checkout -b $VERSION
- For releases with revision use x.x.x-n (e.g. 2.7.0-2)
git checkout -b $VERSION-1
Edit file .gitlab-ci.yml
and comment variable ICINGA_BUILD_TYPE
out.
variables:
...
#ICINGA_BUILD_TYPE: snapshot
...
Commit the change.
git commit -av -m "Switch build type for $VERSION-1"
Set the Version
, revision
and %changelog
inside the spec file:
sed -i "s/Version:.*/Version: $VERSION/g" icingaweb2.spec
vim icingaweb2.spec
%changelog
* Tue Jul 30 2019 Johannes Meyer <[email protected]> 2.7.0-1
- Update to 2.7.0
Update file debian/changelog
and add at the beginning:
icingaweb2 (2.7.0-1) icinga; urgency=medium
* Release 2.7.0-1
-- Eric Lippmann <[email protected]> Tue, 30 Jul 2019 09:28:52 +0000
Commit the changes and push the branch.
git commit -av -m "Release $VERSION-1"
git push origin $VERSION
Gitlab will now build snapshot packages based on the tag v2.7.0
of Icinga Web 2.
In order to test the created packages you can download a job's artifacts:
Visit git.icinga.com
and navigate to the respective pipeline under CI / CD -> Pipelines
.
There click on the job you want to download packages from:
The job's output appears. On the right-hand sidebar you can browse its artifacts:
Once there, navigate to build/RPMS/noarch
where you'll find the packages.
To build release packages and upload them to packages.icinga.com tag the release commit and push it.
git tag -s $VERSION-1 -m "Version $VERSION-1"
git push origin $VERSION-1
Now cherry pick the release commit to master
so that the changes are transferred back to it.
Attention: Only the release commit. NOT the one switching the build type!
- 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.
Use the changelog for the release body.
Only for final versions (not for RCs).
Once the release has been published on GitHub, wait for its GitHub actions to complete.
VERSION=2.9.1
TAGS=(2.9)
#TAGS=(2.9 2 latest)
docker pull icinga/icingaweb2:$VERSION
for t in "${TAGS[@]}"; do
docker tag icinga/icingaweb2:$VERSION icinga/icingaweb2:$t
done
for t in "${TAGS[@]}"; do
docker push icinga/icingaweb2:$t
done
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