diff --git a/doc/21-development.md b/doc/21-development.md index 3fb6b5fcc..a986a65c5 100644 --- a/doc/21-development.md +++ b/doc/21-development.md @@ -6,6 +6,8 @@ development, package builds and tests. * [Debug Icinga 2](21-development.md#development-debug) * [GDB Backtrace](21-development.md#development-debug-gdb-backtrace) * [Core Dump](21-development.md#development-debug-core-dump) +* [Test Icinga 2](21-development.md#development-tests) + * [Snapshot Packages (Nightly Builds)](21-development.md#development-tests-snapshot-packages) * [Develop Icinga 2](21-development.md#development-develop) * [Linux Dev Environment](21-development.md#development-linux-dev-env) * [macOS Dev Environment](21-development.md#development-macos-dev-env) @@ -15,7 +17,6 @@ development, package builds and tests. * [DEB](21-development.md#development-package-builds-deb) * [Windows](21-development.md#development-package-builds-windows) * [Advanced Tips](21-development.md#development-advanced) -* [Tests](21-development.md#development-tests) ## Debug Icinga 2 @@ -397,6 +398,157 @@ Up/down in stacktrace: > down ``` +## Test Icinga 2 + +### Snapshot Packages (Nightly Builds) + +Icinga provides snapshot packages as nightly builds from [Git master](https://github.com/icinga/icinga2). + +These packages contain development code which should be considered "work in progress". +While developers ensure that tests are running fine with CI actions on PRs, +things might break, or changes are not yet documented in the changelog. + +You can help the developers and test the snapshot packages, e.g. when larger +changes or rewrites are taking place for a new major version. Your feedback +is very much appreciated. + +Snapshot packages are available for all supported platforms including +Linux and Windows and can be obtained from [https://packages.icinga.com](https://packages.icinga.com). + +The [Vagrant boxes](https://github.com/Icinga/icinga-vagrant) also use +the Icinga snapshot packages to allow easier integration tests. It is also +possible to use Docker with base OS images and installing the snapshot +packages. + +If you encounter a problem, please [open a new issue](https://github.com/Icinga/icinga2/issues/new/choose) +on GitHub and mention that you're testing the snapshot packages. + +#### RHEL/CentOS + +2.11+ requires the [EPEL repository](02-getting-started.md#package-repositories-rhel-epel) for Boost 1.66+. + +In addition to that, the `icinga-rpm-release` package already provides the `icinga-snapshot-build` +repository but it is disabled by default. + +``` +yum -y install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm +yum -y install epel-release +yum makecache + +yum install --enablerepo=icinga-snapshot-build icinga2 +``` + +#### Debian + +2.11+ requires Boost 1.66+ which either is provided by the OS, backports or Icinga stable repositories. +It is advised to configure both Icinga repositories, stable and snapshot and selectively +choose the repository with the `-t` flag on `apt-get install`. + +``` +apt-get update +apt-get -y install apt-transport-https wget gnupg + +wget -O - https://packages.icinga.com/icinga.key | apt-key add - + +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 + +DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \ + echo "deb http://packages.icinga.com/debian icinga-${DIST}-snapshots main" > \ + /etc/apt/sources.list.d/${DIST}-icinga-snapshots.list + echo "deb-src http://packages.icinga.com/debian icinga-${DIST}-snapshots main" >> \ + /etc/apt/sources.list.d/${DIST}-icinga-snapshots.list + +apt-get update +``` + +On Debian Stretch, you'll also need to add Debian Backports. + +``` +DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \ + echo "deb https://deb.debian.org/debian ${DIST}-backports main" > \ + /etc/apt/sources.list.d/${DIST}-backports.list + +apt-get update +``` + +Then install the snapshot packages. + +``` +DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \ +apt-get install -t icinga-${DIST}-snapshots icinga2 +``` + +#### Ubuntu + +``` +apt-get update +apt-get -y install apt-transport-https wget gnupg + +wget -O - https://packages.icinga.com/icinga.key | apt-key add - + +. /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 https://packages.icinga.com/ubuntu icinga-${DIST} main" >> \ + /etc/apt/sources.list.d/${DIST}-icinga.list + +. /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}-snapshots main" > \ + /etc/apt/sources.list.d/${DIST}-icinga-snapshots.list + echo "deb-src https://packages.icinga.com/ubuntu icinga-${DIST}-snapshots main" >> \ + /etc/apt/sources.list.d/${DIST}-icinga-snapshots.list + +apt-get update +``` + +Then install the snapshot packages. + +``` +. /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; \ +apt-get install -t icinga-${DIST}-snapshots icinga2 +``` + +#### SLES + +The required Boost packages are provided with the stable release repository. + +``` +rpm --import https://packages.icinga.com/icinga.key + +zypper ar https://packages.icinga.com/SUSE/ICINGA-release.repo +zypper ref + +zypper ar https://packages.icinga.com/SUSE/ICINGA-snapshot.repo +zypper ref +``` + +Selectively install the snapshot packages using the `-r` parameter. + +``` +zypper in -r icinga-snapshot-builds icinga2 +``` + + +### Unit Tests + +Build the binaries and run the tests. + + +``` +make -j4 -C debug +make test -C debug +``` + +Run a specific boost test: + +``` +debug/Bin/Debug/boosttest-test-base --run_test=remote_url +``` + ## Develop Icinga 2 @@ -1139,7 +1291,7 @@ Icinga application using a dist tarball (including notes for distributions): * pkg-config * OpenSSL library and header files >= 1.0.1 * RHEL/Fedora: openssl-devel - * SUSE: libopenssl-devel (for SLES 11: libopenssl1-devel) + * SUSE: libopenssl-devel * Debian/Ubuntu: libssl-dev * Alpine: libressl-dev * Boost library and header files >= 1.66.0 @@ -1175,7 +1327,7 @@ Icinga application using a dist tarball (including notes for distributions): **FreeBSD**: libexecinfo (automatically used when Icinga 2 is installed via port or package) -**RHEL6** and **SLES11**: Requires a newer boost version which is available on packages.icinga.com +**RHEL6**: Requires a newer boost version which is available on packages.icinga.com with a version suffixed name. ### Runtime user environment @@ -1431,11 +1583,6 @@ MACROS If you prefer to build packages offline, a suitable Vagrant box is located [here](https://atlas.hashicorp.com/mvbcoding/boxes/awslinux/). -##### SLES 11 - -The Icinga repository provides the required boost package version and must be -added before building. - ### Build Debian/Ubuntu packages Setup your build environment on Debian/Ubuntu, copy the 'debian' directory from @@ -1704,19 +1851,3 @@ the duplicate import in your `~/.gdbinit` file. RuntimeError: pretty-printer already registered: libstdc++-v6 ``` -## Development Tests - -Build the binaries and run the tests. - - -``` -make -j4 -C debug -make test -C debug -``` - -Run a specific boost test: - -``` -debug/Bin/Debug/boosttest-test-base --run_test=remote_url -``` -