diff --git a/.github/workflows/deb.yml b/.github/workflows/deb.yml
deleted file mode 100644
index f77bc3595..000000000
--- a/.github/workflows/deb.yml
+++ /dev/null
@@ -1,119 +0,0 @@
-name: .deb
-
-on:
- push:
- branches:
- - master
- - 'support/*'
- pull_request: {}
-
-jobs:
- deb:
- name: .deb
-
- strategy:
- fail-fast: false
- matrix:
- distro:
- - name: debian
- codename: bullseye
- has32bit: true
- - name: debian
- codename: buster
- has32bit: true
- - name: ubuntu
- codename: jammy
- has32bit: false
- - name: ubuntu
- codename: focal
- has32bit: false
-
- runs-on: ubuntu-latest
-
- steps:
- - name: Cancel previous jobs for the same PR
- if: "github.event_name == 'pull_request'"
- uses: styfle/cancel-workflow-action@89f242ee29e10c53a841bfe71cc0ce7b2f065abc
- with:
- workflow_id: deb.yml,docker.yml,raspbian.yml,rpm.yml,windows.yml
- access_token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Checkout HEAD
- uses: actions/checkout@v1
-
- - name: deb-icinga2
- run: |
- set -exo pipefail
- git clone https://git.icinga.com/packaging/deb-icinga2.git
- chmod o+w deb-icinga2
-
- - name: Source
- run: |
- set -exo pipefail
- git checkout -B master
- docker run --rm \
- -v "$(pwd)/deb-icinga2:/deb-icinga2" \
- -v "$(pwd)/.git:/icinga2.git:ro" \
- -w /deb-icinga2 \
- -e ICINGA_BUILD_PROJECT=icinga2 \
- -e ICINGA_BUILD_TYPE=snapshot \
- -e UPSTREAM_GIT_URL=file:///icinga2.git \
- registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }} \
- icinga-build-deb-source
-
- - name: Restore/backup ccache
- id: ccache
- uses: actions/cache@v1
- with:
- path: deb-icinga2/ccache
- key: |-
- ${{ matrix.distro.name }}/${{ matrix.distro.codename }}-ccache-${{ hashFiles('deb-icinga2/ccache') }}
-
- - name: Binary x64
- run: |
- set -exo pipefail
- if [ -e deb-icinga2/ccache ]; then
- chmod -R o+w deb-icinga2/ccache
- fi
- docker run --rm \
- -v "$(pwd)/deb-icinga2:/deb-icinga2" \
- -w /deb-icinga2 \
- -e ICINGA_BUILD_PROJECT=icinga2 \
- -e ICINGA_BUILD_TYPE=snapshot \
- registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }} \
- icinga-build-deb-binary
-
- - name: Binary x86
- if: matrix.distro.has32bit
- run: |
- set -exo pipefail
- docker run --rm \
- -v "$(pwd)/deb-icinga2:/deb-icinga2" \
- -w /deb-icinga2 \
- -e ICINGA_BUILD_PROJECT=icinga2 \
- -e ICINGA_BUILD_TYPE=snapshot \
- registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }}:x86 \
- icinga-build-deb-binary
-
- - name: Test x64
- run: |
- set -exo pipefail
- docker run --rm \
- -v "$(pwd)/deb-icinga2:/deb-icinga2" \
- -w /deb-icinga2 \
- -e ICINGA_BUILD_PROJECT=icinga2 \
- -e ICINGA_BUILD_TYPE=snapshot \
- registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }} \
- icinga-build-test
-
- - name: Test x86
- if: matrix.distro.has32bit
- run: |
- set -exo pipefail
- docker run --rm \
- -v "$(pwd)/deb-icinga2:/deb-icinga2" \
- -w /deb-icinga2 \
- -e ICINGA_BUILD_PROJECT=icinga2 \
- -e ICINGA_BUILD_TYPE=snapshot \
- registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.codename }}:x86 \
- icinga-build-test
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index 6385f787b..d4883b5d0 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -10,20 +10,28 @@ on:
types:
- published
+concurrency:
+ group: docker-${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
- docker:
+ docker-release:
+ if: github.event_name == 'release'
+ concurrency: docker-release
runs-on: ubuntu-latest
steps:
- - name: Cancel previous jobs for the same PR
- if: "github.event_name == 'pull_request'"
- uses: styfle/cancel-workflow-action@89f242ee29e10c53a841bfe71cc0ce7b2f065abc
- with:
- workflow_id: deb.yml,docker.yml,raspbian.yml,rpm.yml,windows.yml
- access_token: ${{ secrets.GITHUB_TOKEN }}
-
- name: Docker image
uses: Icinga/docker-icinga2@master
- env:
- INPUT_TOKEN: '${{ github.token }}'
- DOCKER_HUB_PASSWORD: '${{ secrets.DOCKER_HUB_PERSONAL_TOKEN }}'
+ with:
+ dockerhub-token: '${{ secrets.DOCKER_HUB_PERSONAL_TOKEN }}'
+
+ docker:
+ if: github.event_name != 'release'
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Docker image
+ uses: Icinga/docker-icinga2@master
+ with:
+ dockerhub-token: '${{ secrets.DOCKER_HUB_PERSONAL_TOKEN }}'
diff --git a/.github/workflows/linux.bash b/.github/workflows/linux.bash
new file mode 100755
index 000000000..9deae8e74
--- /dev/null
+++ b/.github/workflows/linux.bash
@@ -0,0 +1,90 @@
+#!/bin/bash
+set -exo pipefail
+
+export PATH="/usr/lib/ccache:/usr/lib64/ccache:/opt/rh/devtoolset-11/root/usr/bin:$PATH"
+export CCACHE_DIR=/icinga2/ccache
+export CTEST_OUTPUT_ON_FAILURE=1
+CMAKE_OPTS=''
+
+case "$DISTRO" in
+ amazonlinux:*)
+ amazon-linux-extras install -y epel
+ yum install -y bison ccache cmake gcc-c++ flex ninja-build \
+ {libedit,mariadb,ncurses,openssl,postgresql,systemd}-devel
+
+ yum install -y bzip2 tar wget
+ wget https://boostorg.jfrog.io/artifactory/main/release/1.69.0/source/boost_1_69_0.tar.bz2
+ tar -xjf boost_1_69_0.tar.bz2
+
+ (
+ cd boost_1_69_0
+ ./bootstrap.sh --with-libraries=context,coroutine,date_time,filesystem,iostreams,program_options,regex,system,test,thread
+ ./b2
+ )
+
+ ln -vs /usr/bin/ninja-build /usr/local/bin/ninja
+ CMAKE_OPTS='-DBOOST_INCLUDEDIR=/boost_1_69_0 -DBOOST_LIBRARYDIR=/boost_1_69_0/stage/lib'
+ export LD_LIBRARY_PATH=/boost_1_69_0/stage/lib
+ ;;
+
+ centos:*)
+ yum install -y centos-release-scl epel-release
+ yum install -y bison ccache cmake devtoolset-11-gcc-c++ flex ninja-build \
+ {boost169,libedit,mariadb,ncurses,openssl,postgresql,systemd}-devel
+
+ ln -vs /usr/bin/ccache /usr/lib64/ccache/g++
+ CMAKE_OPTS='-DBOOST_INCLUDEDIR=/usr/include/boost169 -DBOOST_LIBRARYDIR=/usr/lib64/boost169'
+ ;;
+
+ debian:*|ubuntu:*)
+ apt-get update
+ DEBIAN_FRONTEND=noninteractive apt-get install --no-install-{recommends,suggests} -y bison \
+ ccache cmake flex g++ lib{boost-all,edit,mariadb,ncurses,pq,ssl,systemd}-dev ninja-build tzdata
+ ;;
+
+ fedora:*)
+ dnf install -y bison ccache cmake flex gcc-c++ ninja-build \
+ {boost,libedit,mariadb,ncurses,openssl,postgresql,systemd}-devel
+ ;;
+
+ opensuse/*)
+ zypper in -y bison ccache cmake flex gcc-c++ ninja {lib{edit,mariadb,openssl},ncurses,postgresql,systemd}-devel \
+ libboost_{context,coroutine,filesystem,iostreams,program_options,regex,system,test,thread}-devel
+ ;;
+
+ rockylinux:*)
+ dnf install -y 'dnf-command(config-manager)' epel-release
+
+ case "$DISTRO" in
+ *:8)
+ dnf config-manager --enable powertools
+ ;;
+ *)
+ dnf config-manager --enable crb
+ ;;
+ esac
+
+ dnf install -y bison ccache cmake gcc-c++ flex ninja-build \
+ {boost,libedit,mariadb,ncurses,openssl,postgresql,systemd}-devel
+ ;;
+esac
+
+mkdir /icinga2/build
+cd /icinga2/build
+
+cmake \
+ -GNinja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DICINGA2_UNITY_BUILD=ON \
+ -DUSE_SYSTEMD=ON \
+ -DICINGA2_USER=$(id -un) \
+ -DICINGA2_GROUP=$(id -gn) \
+ $CMAKE_OPTS ..
+
+ccache -z
+ninja
+ccache -s
+
+ninja test
+ninja install
+icinga2 daemon -C
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
new file mode 100644
index 000000000..6294a5c60
--- /dev/null
+++ b/.github/workflows/linux.yml
@@ -0,0 +1,51 @@
+name: Linux
+
+on:
+ push:
+ branches:
+ - master
+ - 'support/*'
+ pull_request: {}
+
+concurrency:
+ group: linux-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ linux:
+ name: ${{ matrix.distro }}
+ runs-on: ubuntu-latest
+
+ strategy:
+ fail-fast: false
+ max-parallel: 2
+ matrix:
+ distro:
+ - amazonlinux:2
+ - centos:7 # and RHEL 7
+ - debian:10
+ - debian:11 # and Raspbian 11
+ - fedora:36
+ - fedora:37
+ - opensuse/leap:15.3 # and SLES 15.3
+ - opensuse/leap:15.4 # and SLES 15.4
+ - rockylinux:8 # RHEL 8
+ - rockylinux:9 # RHEL 9
+ - ubuntu:20.04
+ - ubuntu:22.04
+ - ubuntu:22.10
+
+ steps:
+ - name: Checkout HEAD
+ uses: actions/checkout@v3
+
+ - name: Restore/backup ccache
+ uses: actions/cache@v3
+ with:
+ path: ccache
+ key: ccache/${{ matrix.distro }}
+
+ - name: Build
+ run: >-
+ docker run --rm -v "$(pwd):/icinga2" -e DISTRO=${{ matrix.distro }}
+ ${{ matrix.distro }} /icinga2/.github/workflows/linux.bash
diff --git a/.github/workflows/raspbian.yml b/.github/workflows/raspbian.yml
deleted file mode 100644
index 479460543..000000000
--- a/.github/workflows/raspbian.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-name: Raspbian
-
-on:
- push:
- branches:
- - master
- - 'support/*'
- pull_request: {}
-
-jobs:
- raspbian:
- name: Raspbian
-
- strategy:
- fail-fast: false
- matrix:
- codename:
- - buster
- - bullseye
-
- runs-on: ubuntu-22.04 # revert back to ubuntu-latest once that is 22.04 or later
-
- steps:
- - name: Cancel previous jobs for the same PR
- if: "github.event_name == 'pull_request'"
- uses: styfle/cancel-workflow-action@89f242ee29e10c53a841bfe71cc0ce7b2f065abc
- with:
- workflow_id: deb.yml,docker.yml,raspbian.yml,rpm.yml,windows.yml
- access_token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Checkout HEAD
- uses: actions/checkout@v1
-
- - name: qemu-user-static
- run: |
- set -exo pipefail
- sudo apt-get update
- DEBIAN_FRONTEND=noninteractive sudo apt-get install -y qemu-user-static
-
- - name: raspbian-icinga2
- run: |
- set -exo pipefail
- git clone https://git.icinga.com/packaging/raspbian-icinga2.git
- chmod o+w raspbian-icinga2
-
- - name: Restore/backup ccache
- id: ccache
- uses: actions/cache@v1
- with:
- path: raspbian-icinga2/ccache
- key: |-
- raspbian/${{ matrix.codename }}-ccache-${{ hashFiles('raspbian-icinga2/ccache') }}
-
- - name: Binary
- run: |
- set -exo pipefail
- git checkout -B master
- if [ -e raspbian-icinga2/ccache ]; then
- chmod -R o+w raspbian-icinga2/ccache
- fi
- docker run --rm \
- -v "$(pwd)/raspbian-icinga2:/raspbian-icinga2" \
- -v "$(pwd)/.git:/icinga2.git:ro" \
- -w /raspbian-icinga2 \
- -e ICINGA_BUILD_PROJECT=icinga2 \
- -e ICINGA_BUILD_TYPE=snapshot \
- -e UPSTREAM_GIT_URL=file:///icinga2.git \
- -e ICINGA_BUILD_DEB_DEFAULT_ARCH=armhf \
- registry.icinga.com/build-docker/raspbian/${{ matrix.codename }} \
- icinga-build-package
-
-# Setting up icinga2-bin (2.12.0+rc1.25.g5d1c82a3d.20200526.0754+buster-0) ...
-# enabling default icinga2 features
-# qemu:handle_cpu_signal received signal outside vCPU context @ pc=0x6015c75c
-# qemu:handle_cpu_signal received signal outside vCPU context @ pc=0x6015c75c
-# qemu:handle_cpu_signal received signal outside vCPU context @ pc=0x600016ea
-# dpkg: error processing package icinga2-bin (--configure):
-# installed icinga2-bin package post-installation script subprocess returned error exit status 127
-#
-# - name: Test
-# run: |
-# set -exo pipefail
-# docker run --rm \
-# -v "$(pwd)/raspbian-icinga2:/raspbian-icinga2" \
-# -w /raspbian-icinga2 \
-# -e ICINGA_BUILD_PROJECT=icinga2 \
-# -e ICINGA_BUILD_TYPE=snapshot \
-# -e ICINGA_BUILD_DEB_DEFAULT_ARCH=armhf \
-# registry.icinga.com/build-docker/raspbian/${{ matrix.codename }} \
-# icinga-build-test
diff --git a/.github/workflows/rpm.yml b/.github/workflows/rpm.yml
index d3be4063c..13022168e 100644
--- a/.github/workflows/rpm.yml
+++ b/.github/workflows/rpm.yml
@@ -7,58 +7,26 @@ on:
- 'support/*'
pull_request: {}
+concurrency:
+ group: rpm-${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
rpm:
name: .rpm (${{ matrix.distro.name }}, ${{ matrix.distro.release }})
strategy:
fail-fast: false
+ max-parallel: 1
matrix:
distro:
- - name: rhel
- release: 8
- subscription: true
- - name: rhel
- release: 7
- subscription: true
- - name: centos
- release: 7
- subscription: false
- - name: amazon-linux
- release: al2:x86_64
- subscription: true
- - name: fedora
- release: 36
- subscription: false
- - name: fedora
- release: 35
- subscription: false
- - name: sles
- release: '15.4'
- subscription: true
- - name: sles
- release: '15.3'
- subscription: true
- name: sles
release: '12.5'
subscription: true
- - name: opensuse
- release: '15.4'
- subscription: false
- - name: opensuse
- release: '15.3'
- subscription: false
runs-on: ubuntu-latest
steps:
- - name: Cancel previous jobs for the same PR
- if: "github.event_name == 'pull_request'"
- uses: styfle/cancel-workflow-action@89f242ee29e10c53a841bfe71cc0ce7b2f065abc
- with:
- workflow_id: deb.yml,docker.yml,raspbian.yml,rpm.yml,windows.yml
- access_token: ${{ secrets.GITHUB_TOKEN }}
-
- name: Vars
id: vars
env:
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index a8417a5f3..52a08fce8 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -7,12 +7,17 @@ on:
- 'support/*'
pull_request: {}
+concurrency:
+ group: windows-${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
windows:
name: Windows
strategy:
fail-fast: false
+ max-parallel: 1
matrix:
bits: [32, 64]
diff --git a/RELEASE.md b/RELEASE.md
index 11ba4733d..9da60d3f4 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -362,31 +362,6 @@ The release body should contain a short changelog, with links
into the roadmap, changelog and blogpost.
-## Docker
-
-> Only for final versions (not for RCs).
-
-Once the release has been published on GitHub, wait for its
-[GitHub actions](https://github.com/Icinga/icinga2/actions) to complete.
-
-```bash
-VERSION=2.12.1
-
-TAGS=(2.12)
-#TAGS=(2.12 2 latest)
-
-docker pull icinga/icinga2:$VERSION
-
-for t in "${TAGS[@]}"; do
- docker tag icinga/icinga2:$VERSION icinga/icinga2:$t
-done
-
-for t in "${TAGS[@]}"; do
- docker push icinga/icinga2:$t
-done
-```
-
-
## Post Release
### Online Documentation