summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2026-02-15 21:43:04 +0100
committerSander Vrijders <sander@ouroboros.rocks>2026-02-18 08:02:37 +0100
commit1bf1d33db3e7622c8b97c5518f0f0ff984b989a8 (patch)
treeed60311c9aaf395e8163825facbd404bd1705ad3
parentc87c99ff5adf700e768a08d2c8c02a7705cf9003 (diff)
downloadouroboros-be.tar.gz
ouroboros-be.zip
ci: Restructure Woodpecker pipelinesbe
Split 01-build.yaml into 10-build.yaml and 20-sanitizer.yaml. Each pipeline uses a minimal IMAGE x COMPILER matrix (4 containers) and loops over build configurations inside a single container, reducing total containers to 8. Both pipelines depend on 00-check-version and run in parallel. Adds missing CI coverage for IPCP_FLOW_STATS, DISABLE_CONFIGFILE, DISABLE_DDNS, RXM_BUFFER_ON_HEAP and RXM_BLOCKING. The testing branch is dropped since we deprecated it. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
-rw-r--r--.ci/woodpecker/01-build.yaml111
-rw-r--r--.ci/woodpecker/10-build.yaml100
-rw-r--r--.ci/woodpecker/20-sanitizer.yaml40
3 files changed, 140 insertions, 111 deletions
diff --git a/.ci/woodpecker/01-build.yaml b/.ci/woodpecker/01-build.yaml
deleted file mode 100644
index f8109c94..00000000
--- a/.ci/woodpecker/01-build.yaml
+++ /dev/null
@@ -1,111 +0,0 @@
-matrix:
- IMAGE:
- - dstaesse/debian:o7s
- - dstaesse/ubuntu:o7s
- FLAGS:
- - ''
- - -m32
- COMPILER:
- - clang
- - gcc
- BUILD_TYPE:
- - Debug
- - Release
- DISABLE_FUSE:
- - TRUE
- - FALSE
- DISABLE_OPENSSL:
- - TRUE
- - FALSE
- DISABLE_LIBGCRYPT:
- - TRUE
- - FALSE
- SANITIZER:
- - DebugASan
- - DebugUSan
- - DebugLSan
-
-steps:
- - name: build
- image: ${IMAGE}
- pull: true
- when:
- branch: [testing, be]
- event: [push, pull_request]
- commands:
- - apt-get update -y
- - apt-get install bash clang -y
- - apt-get install git protobuf-c-compiler cmake -y
- - apt-get install libgcrypt20-dev libssl-dev libfuse-dev dnsutils cmake-curses-gui -y
- - apt-get install libprotobuf-c-dev -y || true
- - mkdir build
- - cd build
- - CC=${COMPILER} cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DDISABLE_FUSE=${DISABLE_FUSE} \
- -DDISABLE_OPENSSL=${DISABLE_OPENSSL} -DDISABLE_LIBGCRYPT=${DISABLE_LIBGCRYPT}
- - make CFLAGS="${FLAGS}" -s -j2
- - env CTEST_OUTPUT_ON_FAILURE=1 make CFLAGS="${FLAGS}" -s check
- - cd ..
- - rm -rf build
-
- - name: sanitizers
- image: ${IMAGE}
- pull: true
- when:
- branch: [testing, be]
- event: [push, pull_request]
- commands:
- - apt-get update -y
- - apt-get install bash clang -y
- - apt-get install git protobuf-c-compiler cmake -y
- - apt-get install libgcrypt20-dev libssl-dev libfuse-dev dnsutils cmake-curses-gui -y
- - apt-get install libprotobuf-c-dev -y || true
- - mkdir build
- - cd build
- - CC=${COMPILER} cmake .. -DCMAKE_BUILD_TYPE=${SANITIZER} -DDISABLE_FUSE=${DISABLE_FUSE} \
- -DDISABLE_OPENSSL=${DISABLE_OPENSSL} -DDISABLE_LIBGCRYPT=${DISABLE_LIBGCRYPT} \
- - make -s -j2
- - env CTEST_OUTPUT_ON_FAILURE=1 make -s check
- - cd ..
- - rm -rf build
-
- - name: build (manual)
- image: ${IMAGE}
- pull: true
- when:
- event: manual
- commands:
- - apt-get update -y
- - apt-get install bash clang -y
- - apt-get install git protobuf-c-compiler cmake -y
- - apt-get install libgcrypt20-dev libssl-dev libfuse-dev dnsutils cmake-curses-gui -y
- - apt-get install libprotobuf-c-dev -y || true
- - mkdir build
- - cd build
- - CC=${COMPILER} cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DDISABLE_FUSE=${DISABLE_FUSE} \
- -DDISABLE_OPENSSL=${DISABLE_OPENSSL} -DDISABLE_LIBGCRYPT=${DISABLE_LIBGCRYPT}
- - make CFLAGS="${FLAGS}" -s -j2
- - env CTEST_OUTPUT_ON_FAILURE=1 make CFLAGS="${FLAGS}" -s check
- - cd ..
- - rm -rf build
-
- - name: sanitizers (manual)
- image: ${IMAGE}
- pull: true
- when:
- event: manual
- commands:
- - apt-get update -y
- - apt-get install bash clang -y
- - apt-get install git protobuf-c-compiler cmake -y
- - apt-get install libgcrypt20-dev libssl-dev libfuse-dev dnsutils cmake-curses-gui -y
- - apt-get install libprotobuf-c-dev -y || true
- - mkdir build
- - cd build
- - CC=${COMPILER} cmake .. -DCMAKE_BUILD_TYPE=${SANITIZER} -DDISABLE_FUSE=${DISABLE_FUSE} \
- -DDISABLE_OPENSSL=${DISABLE_OPENSSL} -DDISABLE_LIBGCRYPT=${DISABLE_LIBGCRYPT} \
- - make -s -j2
- - env CTEST_OUTPUT_ON_FAILURE=1 make -s check
- - cd ..
- - rm -rf build
-
-
diff --git a/.ci/woodpecker/10-build.yaml b/.ci/woodpecker/10-build.yaml
new file mode 100644
index 00000000..0a82c469
--- /dev/null
+++ b/.ci/woodpecker/10-build.yaml
@@ -0,0 +1,100 @@
+depends_on:
+ - 00-check-version
+
+matrix:
+ IMAGE:
+ - dstaesse/debian:o7s
+ - dstaesse/ubuntu:o7s
+ COMPILER:
+ - clang
+ - gcc
+
+steps:
+ - name: build
+ image: ${IMAGE}
+ pull: true
+ when:
+ - branch: be
+ event: [push, pull_request]
+ - event: manual
+ commands:
+ - apt-get update -y
+ - apt-get install bash clang -y
+ - apt-get install git protobuf-c-compiler cmake -y
+ - apt-get install libgcrypt20-dev libssl-dev libfuse-dev dnsutils cmake-curses-gui -y
+ - apt-get install libprotobuf-c-dev -y || true
+ - |
+ set -e
+
+ run_build() {
+ mkdir build && cd build
+ CC=${COMPILER} cmake .. "$@"
+ make CFLAGS="${CFLAGS_EXTRA}" -s -j2
+ env CTEST_OUTPUT_ON_FAILURE=1 \
+ make CFLAGS="${CFLAGS_EXTRA}" -s check
+ cd .. && rm -rf build
+ }
+
+ for build_type in Release Debug; do
+ for flags in '' -m32; do
+ echo "--- ${COMPILER} $build_type $flags ---"
+ CFLAGS_EXTRA="$flags"
+ run_build \
+ -DCMAKE_BUILD_TYPE=$build_type
+ done
+ done
+
+ CFLAGS_EXTRA=""
+
+ for flow_stats in TRUE FALSE; do
+ echo "--- IPCP_FLOW_STATS=$flow_stats ---"
+ run_build \
+ -DIPCP_FLOW_STATS=$flow_stats
+ done
+
+ for disable_fuse in TRUE FALSE; do
+ echo "--- DISABLE_FUSE=$disable_fuse ---"
+ run_build \
+ -DDISABLE_FUSE=$disable_fuse
+ done
+
+ for disable_cf in TRUE FALSE; do
+ for build_type in Release Debug; do
+ echo "--- DISABLE_CONFIGFILE=$disable_cf $build_type ---"
+ run_build \
+ -DCMAKE_BUILD_TYPE=$build_type \
+ -DDISABLE_CONFIGFILE=$disable_cf
+ done
+ done
+
+ for disable_ddns in TRUE FALSE; do
+ for build_type in Release Debug; do
+ echo "--- DISABLE_DDNS=$disable_ddns $build_type ---"
+ run_build \
+ -DCMAKE_BUILD_TYPE=$build_type \
+ -DDISABLE_DDNS=$disable_ddns
+ done
+ done
+
+ for disable_ssl in TRUE FALSE; do
+ for disable_gc in TRUE FALSE; do
+ for build_type in Release Debug; do
+ echo "--- OPENSSL=$disable_ssl GCRYPT=$disable_gc $build_type ---"
+ run_build \
+ -DCMAKE_BUILD_TYPE=$build_type \
+ -DDISABLE_OPENSSL=$disable_ssl \
+ -DDISABLE_LIBGCRYPT=$disable_gc
+ done
+ done
+ done
+
+ for rxm_heap in TRUE FALSE; do
+ for rxm_block in TRUE FALSE; do
+ echo "--- HEAP=$rxm_heap BLOCKING=$rxm_block ---"
+ run_build \
+ -DRXM_BUFFER_ON_HEAP=$rxm_heap \
+ -DRXM_BLOCKING=$rxm_block
+ done
+ done
+
+
diff --git a/.ci/woodpecker/20-sanitizer.yaml b/.ci/woodpecker/20-sanitizer.yaml
new file mode 100644
index 00000000..b3d9f6af
--- /dev/null
+++ b/.ci/woodpecker/20-sanitizer.yaml
@@ -0,0 +1,40 @@
+depends_on:
+ - 00-check-version
+
+matrix:
+ IMAGE:
+ - dstaesse/debian:o7s
+ - dstaesse/ubuntu:o7s
+ COMPILER:
+ - clang
+ - gcc
+
+steps:
+ - name: sanitizers
+ image: ${IMAGE}
+ pull: true
+ when:
+ - branch: be
+ event: [push, pull_request]
+ - event: manual
+ commands:
+ - apt-get update -y
+ - apt-get install bash clang -y
+ - apt-get install git protobuf-c-compiler cmake -y
+ - apt-get install libgcrypt20-dev libssl-dev libfuse-dev dnsutils cmake-curses-gui -y
+ - apt-get install libprotobuf-c-dev -y || true
+ - |
+ set -e
+
+ for sanitizer in DebugASan DebugUSan DebugLSan; do
+ echo "--- ${COMPILER} $sanitizer ---"
+ mkdir build && cd build
+ CC=${COMPILER} cmake .. \
+ -DCMAKE_BUILD_TYPE=$sanitizer
+ make -s -j2
+ env CTEST_OUTPUT_ON_FAILURE=1 \
+ make -s check
+ cd .. && rm -rf build
+ done
+
+