Skip to content
Commits on Source (29)
<!--- Provide a general summary of the issue in the Title above -->
<!-- If you are reporting a problem or a bug, please ensure to read https://github.com/Icinga/icinga2/blob/master/doc/15-troubleshooting.md first. -->
<!-- Formatting tips:
GitHub supports Markdown: https://guides.github.com/features/mastering-markdown/
Multi-line code blocks either with three back ticks, or four space indent.
```
object Host "myhost" {
...
}
```
-->
<!-- If you are reporting a problem or a bug, please ensure to read https://github.com/Icinga/icinga2/blob/master/doc/15-troubleshooting.md first. Formatting tips: GitHub supports Markdown: https://guides.github.com/features/mastering-markdown/ -->
## Expected Behavior
<!--- If you're describing a bug, tell us what should happen -->
......
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
## Describe the bug
A clear and concise description of what the bug is.
Please ensure to read https://github.com/Icinga/icinga2/blob/master/doc/15-troubleshooting.md first. Formatting tips: GitHub supports Markdown: https://guides.github.com/features/mastering-markdown/
## To Reproduce
Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include configuration, logs, etc. to reproduce, if relevant.
1.
2.
3.
4.
## Expected behavior
A clear and concise description of what you expected to happen.
## Screenshots
If applicable, add screenshots to help explain your problem.
## Your Environment
Include as many relevant details about the environment you experienced the problem in
* Version used (`icinga2 --version`):
* Operating System and version:
* Enabled features (`icinga2 feature list`):
* Icinga Web 2 version and modules (System - About):
* Config validation (`icinga2 daemon -C`):
* If you run multiple Icinga 2 instances, the `zones.conf` file (or `icinga2 object list --type Endpoint` and `icinga2 object list --type Zone`) from all affected nodes.
## Additional context
Add any other context about the problem here.
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
## Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always using this feature but am missing [...]
## Describe the solution you'd like
A clear and concise description of what you want to happen.
## Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
## Additional context
Add any other context or screenshots about the feature request here.
## Editors
.idea/
*.komodoproject
.*.sw[op]
*~
# Exclude all hidden files
.*
# Except those related to git and vagrant
!.git*
!.puppet*
!.travis.yml
!.mailmap
## C++ and Tools
*.patch
*.playground
.vagrant
## Tools
*~
tickets.pickle
## Build artifacts
......
......@@ -6,9 +6,10 @@ Gunnar Beutner <gunnar.beutner@icinga.com> <icinga@net-icinga2.adm.netways.de>
<michael.friedrich@icinga.com> <Michael.Friedrich@netways.de>
Michael Insel <mcktr55@gmail.com> <mcktr55@gmail.com>
<tobias.vonderkrone@profitbricks.com> <tobias@vonderkrone.info>
Jean Flach <jean-marcel.flach@icinga.com> <jean-marcel.flach@netways.de>
Jean Flach <jean-marcel.flach@icinga.com> <Crunsher@users.noreply.github.com>
Jean Flach <jean-marcel.flach@icinga.com> Jean Flach <jean-marcel.flach@icinga.com>
Diana Flach <diana.flach@icinga.com> <jean-marcel.flach@netways.de>
Diana Flach <diana.flach@icinga.com> <Crunsher@users.noreply.github.com>
Diana Flach <diana.flach@icinga.com> Jean Flach <jean-marcel.flach@icinga.com>
Diana Flach <diana.flach@icinga.com> <crunsher@bamberg.ccc.de>
Dolf Schimmel <dolf@transip.nl> <dolf@dolfschimmel.nl>
Markus Waldmüller <markus.waldmueller@netways.de>
Claudio Kuenzler <ck@claudiokuenzler.com>
......@@ -36,4 +37,7 @@ Michael Insel <mcktr55@gmail.com> <michael@insel.email>
Marianne Spiller <github@spiller.me>
Robin O'Brien <robin@labs.epiuse.com> <robinjohnobrien@gmail.com>
<noah.hilverling@icinga.com> <noah@hilverling.com>
<pe-git@hindenburgring.com> <pe-icinga2@hindenburgring.com>
Jens Schanz <jens.schanz@mueller.de> <mail@jensschanz.de>
Jens Schanz <jens.schanz@mueller.de> Schanz, Jens <jens.schanz@mueller.de>
Henrik Triem <Henrik.Triem@icinga.com> Henrik Triem <43344334+htriem@users.noreply.github.com>
nemtrif <ntrifunovic@hotmail.com> <nemtrif@users.noreply.github.com>
dist: trusty
dist: xenial
sudo: false
language: cpp
cache: ccache
env:
global:
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
# via the "travis encrypt" command using the project repo's public key
- secure: "eOnFdiRhB7VUZY7Of4Ff0px93HRWGcD4fXCPiy8V2OC2ER98CYCVw7PKt2Is6i/yTveFTps1kObOo0T03aUT8y/xeBy/wMuJYk1d6mVgmSXOjxcxjQVTUh4J+xB+k/R6FoP2dirNDbvSayCj9Fi9toN9hQHMM8oAZOZfiKmYTJc="
before_install:
- echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
addons:
apt_packages:
- libboost-all-dev
apt:
sources:
- sourceline: 'deb http://packages.icinga.com/ubuntu icinga-xenial main'
key_url: 'https://packages.icinga.com/icinga.key'
packages:
- libboost1.67-icinga-all-dev
- flex
- bison
- libssl-dev
- libpq-dev
- libmysqlclient-dev
- libedit-dev
- libyajl-dev
- libwxbase3.0-dev
- libwxgtk3.0-dev
coverity_scan:
project:
name: "Icinga/icinga2"
notification_email: icinga2@icinga.com
build_command_prepend: "cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/tmp/icinga2 -DICINGA2_PLUGINDIR=/tmp/icinga2/sbin -DICINGA2_UNITY_BUILD=ON"
build_command: "make -j 2"
branch_pattern: coverity_scan
before_script:
- if [ "$COVERITY_SCAN_BRANCH" != 1 ]; then
mkdir build &&
cd build &&
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/tmp/icinga2 -DICINGA2_PLUGINDIR=/tmp/icinga2/sbin;
fi
- arch=$(uname -m)
- mkdir build
- cd build
- >
cmake ..
-DCMAKE_BUILD_TYPE=Debug
-DICINGA2_UNITY_BUILD=Off
-DCMAKE_INSTALL_PREFIX=/tmp/icinga2
-DICINGA2_PLUGINDIR=/tmp/icinga2/sbin
-DBoost_NO_BOOST_CMAKE=TRUE
-DBoost_NO_SYSTEM_PATHS=TRUE
-DBOOST_LIBRARYDIR=/usr/lib/${arch}-linux-gnu/icinga-boost
-DBOOST_INCLUDEDIR=/usr/include/icinga-boost
-DCMAKE_INSTALL_RPATH=/usr/lib/${arch}-linux-gnu/icinga-boost
script:
- if [ "$COVERITY_SCAN_BRANCH" != 1 ]; then
make &&
make test &&
make install &&
/tmp/icinga2/sbin/icinga2 --version &&
/tmp/icinga2/sbin/icinga2 daemon -C -DRunAsUser=$(id -u -n) -DRunAsGroup=$(id -g -n);
fi
- make
- make test
- make install
- /tmp/icinga2/sbin/icinga2 --version
- /tmp/icinga2/sbin/icinga2 daemon -C -DRunAsUser=$(id -u -n) -DRunAsGroup=$(id -g -n)
Aaron Bishop <erroneous@gmail.com>
Adam Bolte <abolte@systemsaviour.com>
Adam James <adam.james@transitiv.co.uk>
Alan Jenkins <alan.christopher.jenkins@gmail.com>
Alan Litster <alan.litster@twentyci.co.uk>
Alex <alexp710@hotmail.com>
Alex Merry <alexander.merry@nanoporetech.com>
Alexander A. Klimov <alexander.klimov@icinga.com>
Alexander Fuhr <alexander.fuhr@netways.de>
Alexander Schomburg <script.acc@alex.schomb.org>
Alexander Stoll <astoll@netways.de>
Alexander Wirt <formorer@debian.org>
Andrea Kao <eirinikos@gmail.com>
Andreas Scherbaum <andreas@scherbaum.biz>
Andres Ivanov <andres@andres.wtf>
Andrew Jaffie <ajaffie@gmail.com>
Andrew Meyer <ameyer+secure@nodnetwork.org>
Andy Grunwald <andygrunwald@gmail.com>
Arnd Hannemann <arnd@arndnet.de>
Assaf Flatto <assaf@aikilinux.com>
BarbUk <julien.virey@gmail.com>
Bas Couwenberg <sebastic@xs4all.nl>
Bastian Guse <bguse@nocopy.de>
Bauerheim, Marcus <mbauerheim@spirit21.com>
Benedikt Heine <bebe@bebehei.de>
Bernd Erk <bernd.erk@icinga.com>
Berthold Cogel <cogel@uni-koeln.de>
......@@ -43,6 +50,8 @@ Daniil Yaroslavtsev <dyaroslavtsev@confyrm.com>
David Beck <techiscool@gmail.com>
David Lublink <github.com@spam.lublink.net>
Denis <zaharden@gmail.com>
Dennis Lichtenthäler <dennis.lichtenthaeler@stiftung-tannenhof.de>
Diana Flach <diana.flach@icinga.com>
Dinesh Majrekar <dinesh.majrekar@serverchoice.com>
Dirk Goetz <dirk.goetz@icinga.com>
Dirk Melchers <dirk@dirk-melchers.de>
......@@ -65,12 +74,14 @@ Georg Haas <hax404foogit@hax404.de>
Gerd von Egidy <gerd@egidy.de>
Gerhardt Roman <roman.gerhardt@cbc-x.com>
Glauco Vinicius <gl4uc0@gmail.com>
Greg Hewgill <greg@hewgill.com>
Gunnar Beutner <gunnar.beutner@icinga.com>
Hannes Happle <info@h2-it.de>
Hannes Van de Vel <h@nnes.be>
Harald Laabs <github@dasr.de>
Heike Jurzik <icinga@huhnix.org>
Hendrik Röder <hendrik.biz@gmail.com>
Henrik Triem <Henrik.Triem@icinga.com>
Ian Kelling <ian@iankelling.org>
Ildar Hizbulin <hizel@vyborg.ru>
Irina Kaprizkina <ikapriz@gmail.com>
......@@ -79,11 +90,11 @@ James Pharaoh <james@pharaoh.uk>
Jan Andres <jan.andres@berenberg.de>
Jan Beich <jbeich@FreeBSD.org>
Jan Wagner <waja@cyconet.org>
Janne Heß <janne@hess.ooo>
Jason Young <jason.young@velaspan.com>
Jean Flach <jean-marcel.flach@icinga.com>
Jean-Louis Dupond <jean-louis@dupond.be>
Jens Link <jenslink@quux.de>
Jens Schanz <mail@jensschanz.de>
Jens Schanz <jens.schanz@mueller.de>
Jeon Sang Wan <maxswjeon@naver.com>
Jeremy Armstrong <lepubel@gmail.com>
Jesse Morgan <morgajel@gmail.com>
......@@ -94,9 +105,11 @@ Jordi van Scheijen <jordi.vanscheijen@solvinity.com>
Joseph L. Casale <jcasale@activenetwerx.com>
Julian Brost <julian@0x4a42.net>
Jérôme Drouet <jerome.drouet@gmail.com>
K0nne <34264690+K0nne@users.noreply.github.com>
Kai Goller <kai.goller@netways.de>
Konstantin Kelemen <konstantin@kel.mn>
Kálmán Szalai - KAMI <kami911@gmail.com>
Kálmán „KAMI” Szalai <kami911@gmail.com>
Lars Engels <lars.engels@0x20.net>
Lars Krüger <krueger-lars@web.de>
Leah Oswald <mail@leahoswald.de>
......@@ -106,6 +119,7 @@ Lennart Betz <lennart.betz@icinga.com>
Leon Stringer <leon@priorsvle.com>
Louis Sautier <sautier.louis@gmail.com>
Luca Lesinigo <luca@lm-net.it>
Lucas Bremgartner <breml@users.noreply.github.com>
Lucas Fairchild-Madar <lucas.madar@gmail.com>
Luiz Amaral <luiz.amaral@innogames.com>
Magnus Bäck <magnus@noun.se>
......@@ -116,16 +130,21 @@ MarcusCaepio <MarcusCaepio@users.noreply.github.com>
Marianne Spiller <github@spiller.me>
Marius Bergmann <marius@yeai.de>
Marius Sturm <marius@graylog.com>
Mark Leary <mleary@mit.edu>
Markus Frosch <markus.frosch@icinga.com>
Markus Waldmüller <markus.waldmueller@netways.de>
Martijn van Duren <m.vanduren@itisit.nl>
Martin Neubert <martin.neubert@t-systems.com>
Martin Stiborsky <martin.stiborsky@gmail.com>
Mathieu Arnold <mat@mat.cc>
Mathieu Lutfy <mathieu@bidon.ca>
Matthaus Owens <matthaus@puppetlabs.com>
Matthias Schales <black-dragon131@web.de>
Maurice Meyer <morre@mor.re>
Max Deparade <max.deparade@netways.de>
Max Rosin <git@hackrid.de>
Max Zhang <zhenzhan@tibco.com>
Maximilian Falkenstein <maxf@njsm.de>
Mhd Sulhan <ms@kilabit.info>
Micha Ahrweiler <me@schnitzi.net>
Michael Friedrich <michael.friedrich@icinga.com>
......@@ -137,18 +156,24 @@ Michal Petko <michal.petko@jumpshot.com>
Mikesch-mp <mikesch-mp@koebbes.de>
Mirco Bauer <meebey@meebey.net>
Mirko Nardin <mirko.nardin@gmx.net>
Muhammad Mominul Huque <nahidbinbaten1995@gmail.com>
Nemanja Trifunovic <ntrifunovic@hotmail.com>
Nicolai <nbuchwitz@users.noreply.github.com>
Nicolas Limage <github@xephon.org>
Nicole Lang <nicole.lang@icinga.com>
Niflou <dubuscyr@gmail.com>
Noah Hilverling <noah.hilverling@icinga.com>
Obihörnchen <obihoernchende@gmail.com>
Oleg Artenii <oleg@artenii.email>
Pall Sigurdsson <palli-github@minor.is>
Paolo Schiro <paolo.schiro@kpnqwest.it>
Patrick <patrick.ihle@patteswelt.de>
Patrick Huy <frz@frz.cc>
Paul Richards <paul@minimoo.org>
Pawel Szafer <pszafer@gmail.com>
Per von Zweigbergk <pvz@itassistans.se>
Peter Eckel <pe-git@hindenburgring.com>
Peter Eckel <pe-icinga2@hindenburgring.com>
Petr Ruzicka <petr.ruzicka@gmail.com>
Phil Hutchinson <phil@volumedia.co.uk>
Philipp Dallig <philipp.dallig@gmail.com>
......@@ -156,12 +181,14 @@ Ralph Breier <ralph.breier@roedl.com>
Reto Zeder <reto.zeder@arcade.ch>
Ricardo Bartels <ricardo@bitchbrothers.com>
Robert Lindgren <robert.lindgren@gmail.com>
Robert Scheck <robert@fedoraproject.org>
Robin O'Brien <robin@labs.epiuse.com>
Roland Hopferwieser <rhopfer@ica.jku.at>
Roman Gerhardt <roman.gerhardt@cbc-x.com>
Rudy Gevaert <rudy.gevaert@ugent.be>
Rune Darrud <theflyingcorpse@gmail.com>
Sam Kottler <shk@linux.com>
Sascha Westermann <sascha.westermann@hl-services.de>
Sebastian Brückner <mail@invlid.com>
Sebastian Chrostek <sebastian@chrostek.net>
Sebastian Eikenberg <eikese@mail.uni-paderborn.de>
......@@ -194,6 +221,7 @@ Uwe Ebel <kobmaki@aol.com>
Valentin Hoebel <valentin@xenuser.org>
Vytenis Darulis <vytenis@uber.com>
Wenger Florian <wenger@unifox.at>
Will Frey <will.frey@digitalreasoning.com>
Winfried Angele <winfried.angele@gmail.com>
Wolfgang Nieder <wnd@gmx.net>
Yannick Charton <tontonitch-pro@yahoo.fr>
......@@ -210,11 +238,13 @@ dominik-r-s <43005480+dominik-r-s@users.noreply.github.com>
fbachmann <bachmann.f@gmail.com>
fluxX04 <alexp710@hotmail.com>
gitmopp <mopp@gmx.net>
htriem <henrik.triem@netways.de>
jre3brg <jorge.rebelo@pt.bosch.com>
krishna <gskrishna44@gmail.com>
lihan <tclh123@gmail.com>
marxin <mliska@suse.cz>
mocruz <mocruz@theworkshop.com>
nemtrif <ntrifunovic@hotmail.com>
noobahoi <20069422+noobahoi@users.noreply.github.com>
pv2b <pvz@pvz.pp.se>
ryanohnemus <ryan.ohnemus@tradingtechnologies.com>
......
# Icinga 2 CHANGELOG
Please make sure to always read our [Upgrading](https://icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/)
documentation before switching to a new version.
**The latest release announcements are available on [https://icinga.com/blog/](https://icinga.com/blog/).**
Released closed milestones can be found [here](https://github.com/Icinga/icinga2/milestones?state=closed).
Please read the [upgrading](https://icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/)
documentation before upgrading to a new release.
Released closed milestones can be found on [GitHub](https://github.com/Icinga/icinga2/milestones?state=closed).
## 2.10.6 (2019-07-30)
## 2.11.1 (2019-10-17)
[Issue and PRs](https://github.com/Icinga/icinga2/issues?utf8=%E2%9C%93&q=milestone%3A2.10.6)
This release fixes a hidden long lasting bug unveiled with 2.11 and distributed setups.
If you are affected by agents/satellites not accepting configuration
anymore, or not reloading, please upgrade.
### Bugfixes
* Fix el7 not loading ECDHE cipher suites #7247
* Cluster Config Sync
* Never accept authoritative config markers from other instances #7552
* This affects setups where agent/satellites are newer than the config master, e.g. satellite/agent=2.11.0, master=2.10.
* Configuration
* Error message for `command_endpoint` should hint that zone is not set #7514
* Global variable 'ActiveStageOverride' has been set implicitly via 'ActiveStageOverride ... #7521
### Documentation
* Docs: Add upgrading/troubleshooting details for repos, config sync, agents #7526
* Explain repository requirements for 2.11: https://icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/#added-boost-166
* `command_endpoint` objects require a zone: https://icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/#agent-hosts-with-command-endpoint-require-a-zone
* Zones declared in zones.d are not loaded anymore: https://icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/#config-sync-zones-in-zones
## 2.11.0 (2019-09-19)
[Issue and PRs](https://github.com/Icinga/icinga2/issues?utf8=%E2%9C%93&q=milestone%3A2.11.0)
### Notes
Upgrading docs: https://icinga.com/docs/icinga2/snapshot/doc/16-upgrading-icinga-2/
Thanks to all contributors: [Obihoernchen](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3AObihoernchen), [dasJ](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3AdasJ), [sebastic](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Asebastic), [waja](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Awaja), [BarbUk](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3ABarbUk), [alanlitster](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aalanlitster), [mcktr](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Amcktr), [KAMI911](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3AKAMI911), [peteeckel](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Apeteeckel), [breml](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Abreml), [episodeiv](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aepisodeiv), [Crited](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3ACrited), [robert-scheck](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Arobert-scheck), [west0rmann](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Awest0rmann), [Napsty](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3ANapsty), [Elias481](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3AElias481), [uubk](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Auubk), [miso231](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Amiso231), [neubi4](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aneubi4), [atj](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aatj), [mvanduren-itisit](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Amvanduren-itisit), [jschanz](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Ajschanz), [MaBauMeBad](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3AMaBauMeBad), [markleary](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Amarkleary), [leeclemens](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aleeclemens), [m4k5ym](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Am4k5ym)
### Enhancements
* Core
* Rewrite Network Stack (cluster, REST API) based on Boost Asio, Beast, Coroutines
* Technical concept: #7041
* Requires package updates: Boost >1.66 (either from packages.icinga.com, EPEL or backports). SLES11 & Ubuntu 14 are EOL.
* Require TLS 1.2 and harden default cipher list
* Improved Reload Handling (umbrella process, now 3 processes at runtime)
* Support running Icinga 2 in (Docker) containers natively in foreground
* Quality: Use Modern JSON for C++ library instead of YAJL (dead project)
* Quality: Improve handling of invalid UTF8 strings
* API
* Fix crashes on Linux, Unix and Windows from Nessus scans #7431
* Locks and stalled waits are fixed with the core rewrite in #7071
* schedule-downtime action supports `all_services` for host downtimes
* Improve storage handling for runtime created objects in the `_api` package
* Cluster
* HA aware features & improvements for failover handling #2941 #7062
* Improve cluster config sync with staging #6716
* Fixed that same downtime/comment objects would be synced again in a cluster loop #7198
* Checks & Notifications
* Ensure that notifications during a restart are sent
* Immediately notify about a problem after leaving a downtime and still NOT-OK
* Improve reload handling and wait for features/metrics
* Store notification command results and sync them in HA enabled zones #6722
* DSL/Configuration
* Add getenv() function
* Fix TimePeriod range support over midnight
* `concurrent_checks` in the Checker feature has no effect, use the global MaxConcurrentChecks constant instead
* CLI
* Permissions: node wizard/setup, feature, api setup now run in the Icinga user context, not root
* `ca list` shows pending CSRs by default, `ca remove/restore` allow to delete signing requests
* ITL
* Add new commands and missing attributes
* Windows
* Update bundled NSClient++ to 0.5.2.39
* Refine agent setup wizard & update requirements to .NET 4.6
* Documentation
* Service Monitoring: How to create plugins by example, check commands and a modern version of the supported plugin API with best practices
* Features: Better structure on metrics, and supported features
* Technical Concepts: TLS Network IO, Cluster Feature HA, Cluster Config Sync
* Development: Rewritten for better debugging and development experience for contributors including a style guide. Add nightly build setup instructions.
* Packaging: INSTALL.md was integrated into the Development chapter, being available at https://icinga.com/docs too.
## 2.11.0 RC1 (2019-07-25)
[Issue and PRs](https://github.com/Icinga/icinga2/issues?utf8=%E2%9C%93&q=milestone%3A2.11.0)
### Notes
**This is the first release candidate for 2.11.**
Upgrading docs: https://icinga.com/docs/icinga2/snapshot/doc/16-upgrading-icinga-2/
Thanks to all contributors: [BarbUk](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3ABarbUk), [alanlitster](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aalanlitster), [mcktr](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Amcktr), [KAMI911](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3AKAMI911), [peteeckel](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Apeteeckel), [breml](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Abreml), [episodeiv](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aepisodeiv), [Crited](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3ACrited), [robert-scheck](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Arobert-scheck), [west0rmann](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Awest0rmann), [Napsty](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3ANapsty), [Elias481](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3AElias481), [uubk](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Auubk), [miso231](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Amiso231), [neubi4](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aneubi4), [atj](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aatj), [mvanduren-itisit](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Amvanduren-itisit), [jschanz](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Ajschanz), [MaBauMeBad](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3AMaBauMeBad), [markleary](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Amarkleary), [leeclemens](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Aleeclemens), [m4k5ym](https://github.com/Icinga/icinga2/pulls?q=is%3Apr+author%3Am4k5ym)
### Enhancements
* Core
* Rewrite Network Stack (cluster, REST API) based on Boost Asio, Beast, Coroutines
* Technical concept: #7041
* Requires package updates: Boost >1.66 (either from packages.icinga.com, EPEL or backports). SLES11 & Ubuntu 14 are EOL.
* Require TLS 1.2 and harden default cipher list
* Improved Reload Handling (umbrella process, now 3 processes at runtime)
* Support running Icinga 2 in (Docker) containers natively in foreground
* Quality: Use Modern JSON for C++ library instead of YAJL (dead project)
* Quality: Improve handling of invalid UTF8 strings
* API
* Fix crashes and problems with permission filters from recent Namespace introduction #6785 (thanks Elias Ohm) #6874 (backported to 2.10.5)
* Locks and stalled waits are fixed with the core rewrite in #7071
* schedule-downtime action supports `all_services` for host downtimes
* Improve storage handling for runtime created objects in the `_api` package
* Cluster
* HA aware features & improvements for failover handling #2941 #7062
* Improve cluster config sync with staging #6716
* Checks & Notifications
* Ensure that notifications during a restart are sent
* Immediately notify about a problem after leaving a downtime and still NOT-OK
* Improve reload handling and wait for features/metrics
* Store notification command results and sync them in HA enabled zones #6722
* DSL/Configuration
* Add getenv() function
* Fix TimePeriod range support over midnight
* `concurrent_checks` in the Checker feature has no effect, use the global MaxConcurrentChecks constant instead
* CLI
* Permissions: node wizard/setup, feature, api setup now run in the Icinga user context, not root
* `ca list` shows pending CSRs by default, `ca remove/restore` allow to delete signing requests
* ITL
* Add new commands and missing attributes - thanks to all contributors!
* Windows
* Update bundled NSClient++ to 0.5.2.39
* Update agent installer and OpenSSL
* Documentation
* Service Monitoring: How to create plugins by example, check commands and a modern version of the supported plugin API with best practices.
* Features: Better structure on metrics, and supported features.
* Basics: Rename `Custom Attributes` to `Custom Variables`.
* Basics: Refine explanation of command arguments.
* Distributed: Reword `Icinga client` into `Icinga agent` and add new images for scenarios and modes.
* Security: Add TLS v1.2+ requirement, hardened cipher lists
* Technical Concepts: TLS Network IO, Cluster Feature HA, Cluster Config Sync, Core Reload Handling.
* Development: Rewritten for better debugging and development experience for contributors including a style guide. Add nightly build setup instructions.
* Packaging: INSTALL.md was integrated into the Development chapter available at https://icinga.com/docs too.
## 2.10.5 (2019-05-23)
......
# Icinga 2
# Copyright (C) 2012-2018 Icinga Development Team (https://icinga.com/)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
# Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+
cmake_minimum_required(VERSION 2.8.8)
set(BOOST_MIN_VERSION "1.48.0")
set(BOOST_MIN_VERSION "1.66.0")
project(icinga2)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
......@@ -42,9 +27,6 @@ option (USE_SYSTEMD
set(HAVE_SYSTEMD ${USE_SYSTEMD})
file(STRINGS VERSION VERSION_LINE REGEX "^Version: ")
string(REPLACE "Version: " "" ICINGA2_VERSION ${VERSION_LINE})
include(GNUInstallDirs)
include(InstallConfig)
include(SetFullDir)
......@@ -119,15 +101,38 @@ else()
string(SUBSTRING ${SPEC_REVISION} 10 ${SPEC_REVISION_LENGTH} SPEC_REVISION)
set(GIT_VERSION "r${SPEC_VERSION}-${SPEC_REVISION}")
set(ICINGA2_VERSION "${SPEC_VERSION}")
else()
# use GIT version as ICINGA2_VERSION
string(REGEX REPLACE "^[rv]" "" ICINGA2_VERSION "${GIT_VERSION}")
endif()
configure_file(icinga-version.h.cmake icinga-version.h)
endif()
# NuGet on Windows requires a semantic versioning, example: 2.10.4.123 (only 4 element, only numeric)
string(REGEX REPLACE "-([0-9]+).*$" ".\\1" ICINGA2_VERSION_SAFE "${ICINGA2_VERSION}")
string(REGEX REPLACE "-[^\\.]*(.*)$" "\\1" ICINGA2_VERSION_SAFE "${ICINGA2_VERSION_SAFE}")
message(STATUS "ICINGA2_VERSION_SAFE=${ICINGA2_VERSION_SAFE}")
if(WIN32)
set(Boost_USE_STATIC_LIBS ON)
add_definitions(-DBOOST_ALL_NO_LIB)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
# Disabled for linking issues for newer Boost versions, they link against Windows SDKs
#add_definitions(-DBOOST_ALL_NO_LIB)
# Disable optimization for Boost::context
# https://www.boost.org/doc/libs/1_69_0/libs/context/doc/html/context/overview.html
# https://docs.microsoft.com/en-us/cpp/build/reference/gl-whole-program-optimization?view=vs-2017
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj /GL- /EHs")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /GL- /EHs")
# detect if 32-bit target
if(CMAKE_VS_PLATFORM_NAME STREQUAL "Win32")
# SAFESEH is not supported in Boost on Windows x86
# maybe it is when Boost is compiled with it...
# https://lists.boost.org/Archives/boost/2013/10/206720.php
# https://docs.microsoft.com/en-us/cpp/build/reference/safeseh-image-has-safe-exception-handlers?view=vs-2017
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
endif()
endif()
if(NOT DEFINED LOGROTATE_HAS_SU)
......@@ -145,9 +150,18 @@ if(NOT DEFINED LOGROTATE_HAS_SU)
endif()
if(LOGROTATE_HAS_SU)
set(LOGROTATE_USE_SU "\n\tsu ${ICINGA2_USER} ${ICINGA2_GROUP}")
else()
set(LOGROTATE_CREATE "\n\tcreate 644 ${ICINGA2_USER} ${ICINGA2_GROUP}")
endif()
find_package(Boost ${BOOST_MIN_VERSION} COMPONENTS thread system program_options regex REQUIRED)
find_package(Boost ${BOOST_MIN_VERSION} COMPONENTS context coroutine date_time filesystem thread system program_options regex REQUIRED)
# Boost.Coroutine2 (the successor of Boost.Coroutine)
# (1) doesn't even exist in old Boost versions and
# (2) isn't supported by ASIO, yet.
add_definitions(-DBOOST_COROUTINES_NO_DEPRECATION_WARNING)
add_definitions(-DBOOST_FILESYSTEM_NO_DEPRECATED)
link_directories(${Boost_LIBRARY_DIRS})
include_directories(${Boost_INCLUDE_DIRS})
......@@ -158,15 +172,13 @@ include_directories(${OPENSSL_INCLUDE_DIR})
set(base_DEPS ${CMAKE_DL_LIBS} ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES})
set(base_OBJS $<TARGET_OBJECTS:mmatch> $<TARGET_OBJECTS:socketpair> $<TARGET_OBJECTS:base>)
find_package(YAJL)
# JSON
find_package(JSON)
include_directories(${JSON_INCLUDE})
if(NOT YAJL_FOUND)
include_directories(${icinga2_BINARY_DIR}/third-party/yajl/include)
link_directories(${icinga2_BINARY_DIR}/third-party/yajl)
list(APPEND base_OBJS $<TARGET_OBJECTS:yajl>)
else()
list(APPEND base_DEPS ${YAJL_LIBRARIES})
endif()
# UTF8CPP
find_package(UTF8CPP)
include_directories(${UTF8CPP_INCLUDE})
find_package(Editline)
set(HAVE_EDITLINE "${EDITLINE_FOUND}")
......@@ -207,6 +219,7 @@ if(WIN32)
endif()
set(CMAKE_MACOSX_RPATH 1)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${CMAKE_INSTALL_FULL_LIBDIR}/icinga2")
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments -fcolor-diagnostics")
......@@ -227,7 +240,7 @@ endif()
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
if(CMAKE_SYSTEM_NAME MATCHES AIX)
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -g -lpthread")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -lpthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -lpthread")
elseif(CMAKE_SYSTEM_NAME MATCHES "kOpenBSD.*|OpenBSD.*")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -pthread")
......@@ -301,7 +314,7 @@ if(ICINGA2_LTO_BUILD)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9.0) AND NOT OPENBSD)
set(CMAKE_AR "gcc-ar")
......@@ -364,6 +377,54 @@ if(NOT MSVC)
endif()
endif()
# Architecture specifics
# - Log the target architecture
# - ARM needs to link against atomic
if(NOT MSVC)
# inspired by https://github.com/civetweb/civetweb/blob/master/cmake/DetermineTargetArchitecture.cmake
execute_process(
COMMAND ${CMAKE_C_COMPILER} -dumpmachine
RESULT_VARIABLE RESULT
OUTPUT_VARIABLE ARCH
ERROR_QUIET
)
if (RESULT)
message(STATUS "Failed to detect target architecture with compiler ${CMAKE_C_COMPILER}: ${RESULT}")
endif()
string(REGEX MATCH "([^-]+).*" ARCH_MATCH "${ARCH}")
if (NOT CMAKE_MATCH_1 OR NOT ARCH_MATCH)
message(STATUS "Failed to match the target architecture: ${ARCH}")
endif()
set(ARCH ${CMAKE_MATCH_1})
message(STATUS "Target architecture - ${ARCH}")
# ARM settings
if("${ARCH}" STREQUAL "arm")
check_cxx_source_compiles( "include <atomic>; int main(){ std::atomic<uint_fast64_t> x; x.fetch_add(1); x.sub_add(1); }" CXX_ATOMIC)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -latomic")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -latomic")
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} -latomic")
endif()
else()
if("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "X86")
set(ARCH "i686")
elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "x64")
set(ARCH "x86_64")
elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "ARM")
set(ARCH "arm")
else()
message(FATAL_ERROR "Failed to determine the MSVC target architecture: ${MSVC_C_ARCHITECTURE_ID}")
endif()
message(STATUS "Target architecture - ${ARCH}")
endif()
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ESCAPE_QUOTES)
install(
......@@ -396,8 +457,8 @@ if(ICINGA2_WITH_TESTS)
endif()
set(CPACK_PACKAGE_NAME "Icinga 2")
set(CPACK_PACKAGE_VENDOR "Icinga Development Team")
set(CPACK_PACKAGE_VERSION ${ICINGA2_VERSION})
set(CPACK_PACKAGE_VENDOR "Icinga GmbH")
set(CPACK_PACKAGE_VERSION ${ICINGA2_VERSION_SAFE})
set(CPACK_PACKAGE_INSTALL_DIRECTORY "ICINGA2")
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icinga-app\\\\icinga.ico")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.txt")
......@@ -405,11 +466,11 @@ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.txt")
set(CPACK_PACKAGE_EXECUTABLES "Icinga2SetupAgent;Icinga 2 Agent Wizard")
set(CPACK_WIX_PRODUCT_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icinga-app\\\\icinga.ico")
set(CPACK_WIX_UPGRADE_GUID "52F2BEAA-4DF0-4C3E-ABDC-C0F61DE4DF8A")
set(CPACK_WIX_EXTENSIONS "WixUtilExtension")
set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/icinga-installer/bannrbmp.bmp")
set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/icinga-installer/dlgbmp.bmp")
set(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_BINARY_DIR}/icinga-installer/icinga2.wixpatch.Debug")
set(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_BINARY_DIR}/icinga-installer/icinga2.wixpatch")
set(CPACK_WIX_EXTENSIONS "WixUtilExtension" "WixNetFxExtension")
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION "sbin")
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
......@@ -417,11 +478,11 @@ include(InstallRequiredSystemLibraries)
if(WIN32)
if(CMAKE_VS_PLATFORM_NAME STREQUAL "x64")
set(NSCP_URL "https://github.com/mickem/nscp/releases/download/0.5.0.62/NSCP-0.5.0.62-x64.msi")
set(NSCP_SHA256 "1854de86ad4fda3391f273de0f9985b702c014bdec01b26ad28a1343177f537f")
set(NSCP_URL "https://github.com/mickem/nscp/releases/download/0.5.2.39/NSCP-0.5.2.39-x64.msi")
set(NSCP_SHA256 "dfe93c293f30586b02510d8b7884e4e177b93a5fead8b5dc6de8103532e6e159")
else()
set(NSCP_URL "https://github.com/mickem/nscp/releases/download/0.5.0.62/NSCP-0.5.0.62-Win32.msi")
set(NSCP_SHA256 "2186b60d588fa0811344ce709332f9c63670019c62ae92eae49698bf76205a95")
set(NSCP_URL "https://github.com/mickem/nscp/releases/download/0.5.2.39/NSCP-0.5.2.39-Win32.msi")
set(NSCP_SHA256 "ca6a67fb01c1468f2b510fd2f9eb0750887db3fb49a0302732c1421c85c6627c")
endif()
set(NSCP_SHA256SUM "")
......
......@@ -246,11 +246,8 @@ git push -f origin bugfix/notifications
## <a id="contributing-testing"></a> Testing
Basic unit test coverage is provided by running `make test` during package builds.
Read the [INSTALL.md](INSTALL.md) file for more information about development builds.
Snapshot packages from the latest development branch are available inside the
[package repository](https://packages.icinga.com).
Please follow the [documentation](https://icinga.com/docs/icinga2/snapshot/doc/21-development/#test-icinga-2)
for build and test instructions.
You can help test-drive the latest Icinga 2 snapshot packages inside the
[Icinga 2 Vagrant boxes](https://github.com/icinga/icinga-vagrant).
......@@ -258,17 +255,11 @@ You can help test-drive the latest Icinga 2 snapshot packages inside the
## <a id="contributing-patches-source-code"></a> Source Code Patches
Icinga 2 is written in C++ and uses the Boost libraries. We are also using the C++11 standard where applicable (please
note the minimum required compiler versions in the [INSTALL.md](INSTALL.md) file.
Icinga 2 can be built on Linux/Unix nodes and Windows clients. In order to develop patches for Icinga 2,
you should prepare your own local build environment and know how to work with C++.
More tips:
* Requirements and source code installation for Linux/Unix is explained inside the [INSTALL.md](INSTALL.md) file.
* Debug requirements and GDB instructions can be found in the [documentation](https://github.com/Icinga/icinga2/blob/master/doc/20-development.md).
* If you are planning to develop and debug the Windows client, setup a Windows environment with [Visual Studio](https://www.visualstudio.com/vs/community/). An example can be found in [this blogpost](https://blog.netways.de/2015/08/24/developing-icinga-2-on-windows-10-using-visual-studio-2015/).
Please follow the [development documentation](https://icinga.com/docs/icinga2/latest/doc/21-development/)
for development environments, the style guide and more advanced insights.
## <a id="contributing-patches-documentation"></a> Documentation Patches
......
......@@ -16,25 +16,33 @@
## About
[Icinga 2](https://icinga.com/products/icinga-2/) is a monitoring system which checks
[Icinga](https://icinga.com/products/) is a monitoring system which checks
the availability of your network resources, notifies users of outages, and generates
performance data for reporting.
Scalable and extensible, Icinga 2 can monitor large, complex environments across
Scalable and extensible, Icinga can monitor large, complex environments across
multiple locations.
Icinga 2 as core requires [Icinga Web 2](https://icinga.com/products/icinga-web-2/)
on top in your Icinga Stack.
Icinga 2 is the monitoring server and requires [Icinga Web 2](https://icinga.com/products/)
on top in your Icinga Stack. The [configuration](https://icinga.com/products/configuration/)
can be easily managed with either the [Icinga Director](https://icinga.com/docs/director/latest/),
config management tools or plain text within the [Icinga DSL](https://icinga.com/docs/icinga2/latest/doc/17-language-reference/).
![Icinga Dashboard](https://icinga.com/wp-content/uploads/2017/12/icingaweb2-2.5.0-dashboard.png)
## Installation
For installing Icinga please check the [installation chapter](https://icinga.com/docs/icinga2/latest/doc/02-getting-started/)
in the documentation.
* [Installation](https://icinga.com/docs/icinga2/latest/doc/02-installation/)
* [Monitoring Basics](https://icinga.com/docs/icinga2/latest/doc/03-monitoring-basics/)
* [Configuration](https://icinga.com/docs/icinga2/latest/doc/04-configuration/)
* [Distributed Monitoring](https://icinga.com/docs/icinga2/latest/doc/06-distributed-monitoring/)
* [Addons, Integrations and Features](https://icinga.com/docs/icinga2/latest/doc/13-addons/)
* [Troubleshooting](https://icinga.com/docs/icinga2/latest/doc/15-troubleshooting/)
* [Upgrading](https://icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/)
If you are a packager, please read the [development chapter](https://icinga.com/docs/icinga2/latest/doc/21-development/)
for more details.
Once Icinga Server and Web are running in your distributed environment,
make sure to check out the many [Icinga modules](https://icinga.com/docs/)
for even better monitoring.
## Documentation
......@@ -74,6 +82,13 @@ contribution is appreciated!
Please continue reading in the [contributing chapter](CONTRIBUTING.md).
If you are a packager, please read the [development chapter](https://icinga.com/docs/icinga2/latest/doc/21-development/)
for more details.
### Security Issues
For reporting security issues please visit [this page](https://icinga.com/contact/security/).
<!-- TOC URLs -->
[About]: #about
[License]: #license
......
......@@ -12,7 +12,7 @@
- [5. Package Builds](#package-builds)
- [5.1. RPM Packages](#rpm-packages)
- [5.2. DEB Packages](#deb-packages)
- [6. Build Server](#build-server)
- [6. Build Server](#build-infrastructure)
- [7. Release Tests](#release-tests)
- [8. GitHub Release](#github-release)
- [9. Chocolatey](#chocolatey)
......@@ -26,7 +26,7 @@
Specify the release version.
```
VERSION=2.10.4
VERSION=2.11.0
```
Add your signing key to your Git configuration file, if not already there.
......@@ -68,35 +68,12 @@ sed -i "s/Version: .*/Version: $VERSION/g" VERSION
## Changelog <a id="changelog"></a>
Update the [CHANGELOG.md](CHANGELOG.md) file.
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.
### Requirements
Export these environment variables:
```
export ICINGA_GITHUB_AUTH_USERNAME='user'
export ICINGA_GITHUB_AUTH_TOKEN='token'
export ICINGA_GITHUB_PROJECT='icinga/icinga2'
```
### Generation
**Close the version on [GitHub](https://github.com/Icinga/icinga2/milestones).**
Run the script which updates the [CHANGELOG.md](CHANGELOG.md) file.
```
./changelog.py
git diff
```
## Git Tag <a id="git-tag"></a>
> **Major Releases**: Commit these changes to the `master` branch.
>
> **Minor Releases**: Commit changes to the `support` branch.
```
git commit -v -a -m "Release version $VERSION"
```
......@@ -120,149 +97,146 @@ git push --tags
git checkout master
git push
git checkout -b support/2.11
git push -u origin support/2.11
git checkout -b support/2.12
git push -u origin support/2.12
```
**For minor releases:** Push the support branch, cherry-pick the release commit
into master and merge the support branch:
## Package Builds <a id="package-builds"></a>
```
git push -u origin support/2.10
git checkout master
git cherry-pick support/2.10
git merge --strategy=ours support/2.10
git push origin master
mkdir $HOME/dev/icinga/packaging
cd $HOME/dev/icinga/packaging
```
## Package Builds <a id="package-builds"></a>
### RPM Packages <a id="rpm-packages"></a>
```
git clone git@github.com:icinga/rpm-icinga2.git && cd rpm-icinga2
git clone git@git.icinga.com:icinga/rpm-icinga2.git && cd rpm-icinga2
```
#### Branch Workflow
**Major releases** are branched off `master`.
### DEB Packages <a id="deb-packages"></a>
```
git checkout master && git pull
git clone git@git.icinga.com:packaging/deb-icinga2.git && cd deb-icinga2
```
**Bugfix releases** are created in the `release` branch and later merged to master.
#### Raspbian Packages
```
git checkout release && git pull
git clone git@git.icinga.com:icinga/raspbian-icinga2.git && cd raspbian-icinga2
```
#### Release Commit
Set the `Version`, `Revision` and `changelog` inside the spec file.
### Windows Packages
```
VERSION=2.10.4
git clone git@git.icinga.com:icinga/windows-icinga2.git && cd windows-icinga2
```
sed -i "s/Version: .*/Version: $VERSION/g" icinga2.spec
vim icinga2.spec
### Branch Workflow
%changelog
* Tue Mar 19 2019 Michael Friedrich <michael.friedrich@icinga.com> 2.10.4-1
- Update to 2.10.4
```
Checkout `master` and create a new branch.
```
git commit -av -m "Release $VERSION-1"
git push
```
* For releases use x.x[.x] as branch name (e.g. 2.11 or 2.11.1)
* For releases with revision use x.x.x-n (e.g. 2.11.0-2)
**Note for major releases**: Update release branch to latest.
```
git checkout release && git pull && git merge master && git push
```
### Switch Build Type
**Note for minor releases**: Cherry-pick the release commit into master.
Edit file `.gitlab-ci.yml` and comment variable `ICINGA_BUILD_TYPE` out.
```yaml
variables:
...
#ICINGA_BUILD_TYPE: snapshot
...
```
git checkout master && git pull && git cherry-pick release && git push
```
### DEB Packages <a id="deb-packages"></a>
Commit the change.
```
git clone git@github.com:icinga/deb-icinga2.git && cd deb-icinga2
git commit -av -m "Switch build type for $VERSION-1"
```
#### Branch Workflow
#### RPM Release Preparations
**Major releases** are branched off `master`.
Set the `Version`, `revision` and `%changelog` inside the spec file:
```
git checkout master && git pull
```
sed -i "s/Version:.*/Version: $VERSION/g" icinga2.spec
**Bugfix releases** are created in the `release` branch and later merged to master.
vim icinga2.spec
```
git checkout release && git pull
%changelog
* Thu Sep 19 2019 Michael Friedrich <michael.friedrich@icinga.com> 2.11.0-1
- Update to 2.11.0
```
#### Release Commit
#### DEB and Raspbian Release Preparations
Set the `Version`, `Revision` and `changelog` by using the `dch` helper.
Update file `debian/changelog` and add at the beginning:
```
VERSION=2.10.4
icinga2 (2.11.0-1) icinga; urgency=medium
./dch $VERSION-1 "Update to $VERSION"
```
* Release 2.11.0
```
git commit -av -m "Release $VERSION-1"
git push
-- Michael Friedrich <michael.friedrich@icinga.com> Thu, 19 Sep 2019 10:50:31 +0200
```
**Note for major releases**: Update release branch to latest.
### Release Commit
Commit the changes and push the branch.
```
git checkout release && git pull && git merge master && git push
git commit -av -m "Release $VERSION-1"
git push origin 2.11
```
**Note for minor releases**: Cherry-pick the release commit into master.
GitLab will now build snapshot packages based on the tag `v2.11.0` of Icinga 2.
```
git checkout master && git pull && git cherry-pick release && git push
```
### Package Tests
#### DEB with dch on macOS
In order to test the created packages you can download a job's artifacts:
```
docker run -v `pwd`:/mnt/packaging -ti ubuntu:bionic bash
Visit [git.icinga.com](https://git.icinga.com/packaging/rpm-icinga2)
and navigate to the respective pipeline under `CI / CD -> Pipelines`.
There click on the job you want to download packages from.
apt-get update && apt-get install git ubuntu-dev-tools vim -y
cd /mnt/packaging
The job's output appears. On the right-hand sidebar you can browse its artifacts.
git config --global user.name "Michael Friedrich"
git config --global user.email "michael.friedrich@icinga.com"
Once there, navigate to `build/RPMS/noarch` where you'll find the packages.
VERSION=2.10.4
### Release Packages
./dch $VERSION-1 "Update to $VERSION"
To build release packages and upload them to [packages.icinga.com](https://packages.icinga.com)
tag the release commit and push it.
```
git tag -s 2.11.0-1
git push origin 2.11.0-1
```
Now cherry pick the release commit to `master` so that the changes are transferred back to it.
## Build Server <a id="build-server"></a>
**Attention**: Only the release commit. *NOT* the one switching the build type!
## Build Infrastructure <a id="build-infrastructure"></a>
https://git.icinga.com/packaging/rpm-icinga2/pipelines
https://git.icinga.com/packaging/deb-icinga2/pipelines
https://git.icinga.com/packaging/windows-icinga2/pipelines
https://git.icinga.com/packaging/raspbian-icinga2/pipelines
* 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`
* Build the newly created Git tag for Windows: `refs/tags/v2.10.0` as source and `v2.10.0` as package name.
Once the release repository tags are pushed, release builds
are triggered and automatically published to packages.icinga.com
## Release Tests <a id="release-tests"></a>
......@@ -277,32 +251,45 @@ VERSION=2.10.4
docker run -ti centos:latest bash
yum -y install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm
yum -y install epel-release
yum -y install icinga2
icinga2 daemon -C
```
### Debian
### Ubuntu
```
docker run -ti debian:stretch bash
docker run -ti ubuntu:bionic bash
apt-get update
apt-get -y install apt-transport-https wget gnupg
apt-get update && apt-get install -y wget curl gnupg apt-transport-https
wget -O - https://packages.icinga.com/icinga.key | apt-key add -
DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \
echo "deb http://packages.icinga.com/debian icinga-${DIST} main" > \
. /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; \
echo "deb https://packages.icinga.com/ubuntu icinga-${DIST} main" > \
/etc/apt/sources.list.d/${DIST}-icinga.list
echo "deb-src http://packages.icinga.com/debian icinga-${DIST} main" >> \
echo "deb-src https://packages.icinga.com/ubuntu icinga-${DIST} main" >> \
/etc/apt/sources.list.d/${DIST}-icinga.list
curl https://packages.icinga.com/icinga.key | apt-key add -
apt-get update
apt-get -y install icinga2
icinga2 daemon
icinga2 daemon -C
```
## GitHub Release <a id="github-release"></a>
Create a new release for the newly created Git tag: https://github.com/Icinga/icinga2/releases
> Hint: Choose [tags](https://github.com/Icinga/icinga2/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.
## Chocolatey <a id="chocolatey"></a>
Navigate to the git repository on your Windows box which
......@@ -320,7 +307,7 @@ command line.
```
choco apikey --key xxx --source https://push.chocolatey.org/
choco push Icinga2-v2.10.0.nupkg --source https://push.chocolatey.org/
choco push Icinga2-v2.11.0.nupkg --source https://push.chocolatey.org/
```
......@@ -328,6 +315,8 @@ choco push Icinga2-v2.10.0.nupkg --source https://push.chocolatey.org/
### Online Documentation <a id="online-documentation"></a>
> Only required for major releases.
Navigate to `puppet-customer/icinga.git` and do the following steps:
#### Testing
......@@ -336,12 +325,12 @@ Navigate to `puppet-customer/icinga.git` and do the following steps:
git checkout testing && git pull
vim files/var/www/docs/config/icinga2-latest.yml
git commit -av -m "icinga-web1: Update docs for Icinga 2"
git commit -av -m "icinga-web: Update docs for Icinga 2"
git push
```
SSH into icinga-web1 and do a manual Puppet dry run with the testing environment.
SSH into the webserver and do a manual Puppet dry run with the testing environment.
```
puppet agent -t --environment testing --noop
......@@ -357,17 +346,25 @@ git merge testing
git push
```
SSH into icinga-web2 and do a manual Puppet run from the production environment (default).
SSH into the webserver and do a manual Puppet run from the production environment (default).
```
puppet agent -t
```
#### Manual Generation
SSH into the webserver or ask @bobapple.
```
cd /usr/local/icinga-docs-tools && ./build-docs.rb -c /var/www/docs/config/icinga2-latest.yml
```
### Announcement <a id="announcement"></a>
* Create a new blog post on [icinga.com/blog](https://icinga.com/blog) including a featured image
* Create a release topic on [community.icinga.com](https://community.icinga.com)
* Release email to team
* Release email to net-tech & team
### Project Management <a id="project-management"></a>
......
Version: 2.10.6
Version: 2.11.1
Revision: 1
# Icinga 2
# Copyright (C) 2012-2018 Icinga Development Team (https://icinga.com/)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
# Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+
if(MSVC)
include_external_msproject(
icinga2setupagent
${CMAKE_CURRENT_SOURCE_DIR}/windows-setup-agent/Icinga2SetupAgent.csproj
TYPE FAE04EC0-301F-11D3-BF4B-00C04F79EFBC
PLATFORM Win32
)
install(
......
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
</startup>
</configuration>
\ No newline at end of file
......@@ -3,13 +3,13 @@
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
<ProjectGuid>{A86F1159-66E8-4BDB-BF28-A2BDAF76517C}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Icinga</RootNamespace>
<AssemblyName>Icinga2SetupAgent</AssemblyName>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
......@@ -37,6 +37,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
......@@ -46,6 +47,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'RelWithDebInfo|x86' ">
<PlatformTarget>x86</PlatformTarget>
......@@ -55,6 +57,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MinSizeRel|x86' ">
<PlatformTarget>x86</PlatformTarget>
......@@ -64,6 +67,48 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Win32' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Win32' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'RelWithDebInfo|Win32' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\RelWithDebInfo\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MinSizeRel|Win32' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\MinSizeRel\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<PlatformTarget>x64</PlatformTarget>
......@@ -74,6 +119,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<PlatformTarget>x64</PlatformTarget>
......@@ -83,6 +129,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'RelWithDebInfo|x64' ">
<PlatformTarget>x64</PlatformTarget>
......@@ -92,6 +139,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MinSizeRel|x64' ">
<PlatformTarget>x64</PlatformTarget>
......@@ -101,6 +149,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>icinga.ico</ApplicationIcon>
......
......@@ -8,9 +8,9 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTitle("Icinga 2 Agent Wizard")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Icinga Development Team")]
[assembly: AssemblyCompany("Icinga GmbH")]
[assembly: AssemblyProduct("Icinga 2")]
[assembly: AssemblyCopyright("Copyright © 2014-2018 Icinga Development Team")]
[assembly: AssemblyCopyright("Copyright © 2019 Icinga GmbH")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
......
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34011
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
......@@ -19,7 +19,7 @@ namespace Icinga.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
......@@ -65,7 +65,7 @@ namespace Icinga.Properties {
/// </summary>
internal static System.Drawing.Bitmap icinga_banner {
get {
object obj = ResourceManager.GetObject("icinga-banner", resourceCulture);
object obj = ResourceManager.GetObject("icinga_banner", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
......
......@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="icinga-banner" type="System.Resources.ResXFileRef, System.Windows.Forms">
<data name="icinga_banner" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\icinga-banner.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
\ No newline at end of file
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34011
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
......@@ -12,7 +12,7 @@ namespace Icinga.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
......