Development: Add snapshot package test details

This commit is contained in:
Michael Friedrich 2019-04-09 14:08:03 +02:00
parent 94a5b8e8c1
commit b318c79fd0
1 changed files with 155 additions and 24 deletions

View File

@ -6,6 +6,8 @@ development, package builds and tests.
* [Debug Icinga 2](21-development.md#development-debug) * [Debug Icinga 2](21-development.md#development-debug)
* [GDB Backtrace](21-development.md#development-debug-gdb-backtrace) * [GDB Backtrace](21-development.md#development-debug-gdb-backtrace)
* [Core Dump](21-development.md#development-debug-core-dump) * [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) * [Develop Icinga 2](21-development.md#development-develop)
* [Linux Dev Environment](21-development.md#development-linux-dev-env) * [Linux Dev Environment](21-development.md#development-linux-dev-env)
* [macOS Dev Environment](21-development.md#development-macos-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) * [DEB](21-development.md#development-package-builds-deb)
* [Windows](21-development.md#development-package-builds-windows) * [Windows](21-development.md#development-package-builds-windows)
* [Advanced Tips](21-development.md#development-advanced) * [Advanced Tips](21-development.md#development-advanced)
* [Tests](21-development.md#development-tests)
## Debug Icinga 2 <a id="development-debug"></a> ## Debug Icinga 2 <a id="development-debug"></a>
@ -397,6 +398,157 @@ Up/down in stacktrace:
> down > down
``` ```
## Test Icinga 2 <a id="development-tests"></a>
### Snapshot Packages (Nightly Builds) <a id="development-tests-snapshot-packages"></a>
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 <a id="development-tests-snapshot-packages-rhel"></a>
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 <a id="development-tests-snapshot-packages-debian"></a>
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 <a id="development-tests-snapshot-packages-ubuntu"></a>
```
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 <a id="development-tests-snapshot-packages-sles"></a>
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 <a id="development-tests-unit"></a>
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 <a id="development-develop"></a> ## Develop Icinga 2 <a id="development-develop"></a>
@ -1139,7 +1291,7 @@ Icinga application using a dist tarball (including notes for distributions):
* pkg-config * pkg-config
* OpenSSL library and header files >= 1.0.1 * OpenSSL library and header files >= 1.0.1
* RHEL/Fedora: openssl-devel * RHEL/Fedora: openssl-devel
* SUSE: libopenssl-devel (for SLES 11: libopenssl1-devel) * SUSE: libopenssl-devel
* Debian/Ubuntu: libssl-dev * Debian/Ubuntu: libssl-dev
* Alpine: libressl-dev * Alpine: libressl-dev
* Boost library and header files >= 1.66.0 * 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) **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. with a version suffixed name.
### Runtime user environment <a id="development-package-builds-runtime-user-env"></a> ### Runtime user environment <a id="development-package-builds-runtime-user-env"></a>
@ -1431,11 +1583,6 @@ MACROS
If you prefer to build packages offline, a suitable Vagrant box is located If you prefer to build packages offline, a suitable Vagrant box is located
[here](https://atlas.hashicorp.com/mvbcoding/boxes/awslinux/). [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 <a id="development-package-builds-deb"></a> ### Build Debian/Ubuntu packages <a id="development-package-builds-deb"></a>
Setup your build environment on Debian/Ubuntu, copy the 'debian' directory from 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 RuntimeError: pretty-printer already registered: libstdc++-v6
``` ```
## Development Tests <a id="development-tests"></a>
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
```