From ea8b2a48eaa89133889bc8f24d149c1efd9a9179 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 11 Mar 2026 10:45:04 +0100 Subject: [PATCH 01/13] CI bump --- .github/workflows/ci.yml | 50 +++++++++++++++++ .github/workflows/docker-images.yml | 54 +++++++++++++++++++ ...dora38_dds3.12.def => Dockerfile.fedora39} | 34 ++++++------ utils/ci/Dockerfile.fedora40 | 46 ++++++++++++++++ utils/ci/Dockerfile.fedora41 | 46 ++++++++++++++++ utils/ci/Dockerfile.fedora42 | 46 ++++++++++++++++ utils/ci/Dockerfile.fedora42-boost190 | 54 +++++++++++++++++++ utils/ci/centos.8stream.alice.def | 27 ---------- utils/ci/fedora36_dds3.7.22.def | 35 ------------ utils/ci/fedora37_dds3.7.22.def | 35 ------------ 10 files changed, 312 insertions(+), 115 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/docker-images.yml rename utils/ci/{fedora38_dds3.12.def => Dockerfile.fedora39} (57%) create mode 100644 utils/ci/Dockerfile.fedora40 create mode 100644 utils/ci/Dockerfile.fedora41 create mode 100644 utils/ci/Dockerfile.fedora42 create mode 100644 utils/ci/Dockerfile.fedora42-boost190 delete mode 100644 utils/ci/centos.8stream.alice.def delete mode 100644 utils/ci/fedora36_dds3.7.22.def delete mode 100644 utils/ci/fedora37_dds3.7.22.def diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..ec53907c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,50 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + +env: + IMAGE_PREFIX: ghcr.io/fairrootgroup/odc-ci + +jobs: + build-and-test: + runs-on: ubuntu-latest + permissions: + contents: read + packages: read + + strategy: + fail-fast: false + matrix: + include: + - fedora: fedora39 + label: fedora-39-x86_64-gcc-13 + - fedora: fedora40 + label: fedora-40-x86_64-gcc-14 + - fedora: fedora41 + label: fedora-41-x86_64-gcc-14 + - fedora: fedora42 + label: fedora-42-x86_64-gcc-15 + - fedora: fedora42-boost190 + label: fedora-42-x86_64-gcc-15-boost-1.90 + - fedora: fedora42 + label: sanitizers + extra: -DENABLE_SANITIZERS=ON + + container: + image: ${{ format('{0}:{1}', 'ghcr.io/fairrootgroup/odc-ci', matrix.fedora) }} + credentials: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Build and test + env: + LABEL: ${{ matrix.label }} + run: ctest -S ODCTest.cmake -VV --output-on-failure ${{ matrix.extra }} diff --git a/.github/workflows/docker-images.yml b/.github/workflows/docker-images.yml new file mode 100644 index 00000000..0ea50afb --- /dev/null +++ b/.github/workflows/docker-images.yml @@ -0,0 +1,54 @@ +name: Docker Images + +on: + push: + branches: + - master + paths: + - 'utils/ci/Dockerfile.*' + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_PREFIX: ghcr.io/fairrootgroup/odc-ci + +jobs: + build-and-push: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + strategy: + fail-fast: false + matrix: + include: + - fedora: fedora39 + - fedora: fedora40 + - fedora: fedora41 + - fedora: fedora42 + - fedora: fedora42-boost190 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Log in to GHCR + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: utils/ci + file: utils/ci/Dockerfile.${{ matrix.fedora }} + push: true + tags: ${{ env.IMAGE_PREFIX }}:${{ matrix.fedora }} + cache-from: type=registry,ref=${{ env.IMAGE_PREFIX }}:${{ matrix.fedora }}-cache + cache-to: type=registry,ref=${{ env.IMAGE_PREFIX }}:${{ matrix.fedora }}-cache,mode=max diff --git a/utils/ci/fedora38_dds3.12.def b/utils/ci/Dockerfile.fedora39 similarity index 57% rename from utils/ci/fedora38_dds3.12.def rename to utils/ci/Dockerfile.fedora39 index 0ded022b..67f4e935 100644 --- a/utils/ci/fedora38_dds3.12.def +++ b/utils/ci/Dockerfile.fedora39 @@ -1,8 +1,6 @@ -Bootstrap: docker -From: fedora:38 +FROM fedora:39 -%post - dnf -y update +RUN dnf -y update && \ dnf -y install abseil-cpp-devel \ asio-devel \ boost-devel \ @@ -23,26 +21,26 @@ From: fedora:38 ninja-build \ patch \ wget \ - zeromq-devel + zeromq-devel && \ dnf -y clean all - git clone https://github.com/FairRootGroup/FairCMakeModules - cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr - cmake --build FairCMakeModules_build --target install +RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ + cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ + cmake --build FairCMakeModules_build --target install && \ rm -rf FairCMakeModules FairCMakeModules_build - git clone -b v2.1.0 https://github.com/FairRootGroup/FairLogger - cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release - cmake --build FairLogger_build --target install +RUN git clone -b v2.1.0 https://github.com/FairRootGroup/FairLogger && \ + cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairLogger_build --target install && \ rm -rf FairLogger FairLogger_build - git clone -b v1.9.2 https://github.com/FairRootGroup/FairMQ - cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release - cmake --build FairMQ_build --target install +RUN git clone -b v1.9.2 https://github.com/FairRootGroup/FairMQ && \ + cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairMQ_build --target install && \ rm -rf FairMQ FairMQ_build - git clone -b 3.12 https://github.com/FairRootGroup/DDS - cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF - cmake --build DDS_build --target wn_bin - cmake --build DDS_build --target install +RUN git clone -b 3.12 https://github.com/FairRootGroup/DDS && \ + cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ + cmake --build DDS_build --target wn_bin && \ + cmake --build DDS_build --target install && \ rm -rf DDS DDS_build diff --git a/utils/ci/Dockerfile.fedora40 b/utils/ci/Dockerfile.fedora40 new file mode 100644 index 00000000..bb248493 --- /dev/null +++ b/utils/ci/Dockerfile.fedora40 @@ -0,0 +1,46 @@ +FROM fedora:40 + +RUN dnf -y update && \ + dnf -y install abseil-cpp-devel \ + asio-devel \ + boost-devel \ + ca-certificates \ + clang-tools-extra \ + cmake \ + flatbuffers-devel \ + flatbuffers-compiler \ + fmt-devel \ + gcc-c++ \ + git \ + grpc-devel \ + grpc-plugins \ + libasan \ + liblsan \ + libubsan \ + libxml2 \ + ninja-build \ + patch \ + wget \ + zeromq-devel && \ + dnf -y clean all + +RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ + cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ + cmake --build FairCMakeModules_build --target install && \ + rm -rf FairCMakeModules FairCMakeModules_build + +RUN git clone -b v2.1.0 https://github.com/FairRootGroup/FairLogger && \ + cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairLogger_build --target install && \ + rm -rf FairLogger FairLogger_build + +RUN git clone -b v1.9.2 https://github.com/FairRootGroup/FairMQ && \ + cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairMQ_build --target install && \ + rm -rf FairMQ FairMQ_build + +RUN git clone -b 3.12 https://github.com/FairRootGroup/DDS && \ + cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ + cmake --build DDS_build --target wn_bin && \ + cmake --build DDS_build --target install && \ + rm -rf DDS DDS_build diff --git a/utils/ci/Dockerfile.fedora41 b/utils/ci/Dockerfile.fedora41 new file mode 100644 index 00000000..5b15dfff --- /dev/null +++ b/utils/ci/Dockerfile.fedora41 @@ -0,0 +1,46 @@ +FROM fedora:41 + +RUN dnf -y update && \ + dnf -y install abseil-cpp-devel \ + asio-devel \ + boost-devel \ + ca-certificates \ + clang-tools-extra \ + cmake \ + flatbuffers-devel \ + flatbuffers-compiler \ + fmt-devel \ + gcc-c++ \ + git \ + grpc-devel \ + grpc-plugins \ + libasan \ + liblsan \ + libubsan \ + libxml2 \ + ninja-build \ + patch \ + wget \ + zeromq-devel && \ + dnf -y clean all + +RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ + cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ + cmake --build FairCMakeModules_build --target install && \ + rm -rf FairCMakeModules FairCMakeModules_build + +RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ + cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairLogger_build --target install && \ + rm -rf FairLogger FairLogger_build + +RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ + cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairMQ_build --target install && \ + rm -rf FairMQ FairMQ_build + +RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ + cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ + cmake --build DDS_build --target wn_bin && \ + cmake --build DDS_build --target install && \ + rm -rf DDS DDS_build diff --git a/utils/ci/Dockerfile.fedora42 b/utils/ci/Dockerfile.fedora42 new file mode 100644 index 00000000..e1f6e473 --- /dev/null +++ b/utils/ci/Dockerfile.fedora42 @@ -0,0 +1,46 @@ +FROM fedora:42 + +RUN dnf -y update && \ + dnf -y install abseil-cpp-devel \ + asio-devel \ + boost-devel \ + ca-certificates \ + clang-tools-extra \ + cmake \ + flatbuffers-devel \ + flatbuffers-compiler \ + fmt-devel \ + gcc-c++ \ + git \ + grpc-devel \ + grpc-plugins \ + libasan \ + liblsan \ + libubsan \ + libxml2 \ + ninja-build \ + patch \ + wget \ + zeromq-devel && \ + dnf -y clean all + +RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ + cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ + cmake --build FairCMakeModules_build --target install && \ + rm -rf FairCMakeModules FairCMakeModules_build + +RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ + cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairLogger_build --target install && \ + rm -rf FairLogger FairLogger_build + +RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ + cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairMQ_build --target install && \ + rm -rf FairMQ FairMQ_build + +RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ + cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ + cmake --build DDS_build --target wn_bin && \ + cmake --build DDS_build --target install && \ + rm -rf DDS DDS_build diff --git a/utils/ci/Dockerfile.fedora42-boost190 b/utils/ci/Dockerfile.fedora42-boost190 new file mode 100644 index 00000000..6c87645a --- /dev/null +++ b/utils/ci/Dockerfile.fedora42-boost190 @@ -0,0 +1,54 @@ +FROM fedora:42 + +RUN dnf -y update && \ + dnf -y install abseil-cpp-devel \ + asio-devel \ + ca-certificates \ + clang-tools-extra \ + cmake \ + flatbuffers-devel \ + flatbuffers-compiler \ + fmt-devel \ + gcc-c++ \ + git \ + grpc-devel \ + grpc-plugins \ + libasan \ + liblsan \ + libubsan \ + libxml2 \ + ninja-build \ + patch \ + wget \ + zeromq-devel && \ + dnf -y clean all + +RUN dnf -y remove 'boost-devel' && dnf -y clean all + +RUN wget https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.gz && \ + tar xzf boost_1_90_0.tar.gz && \ + cd boost_1_90_0 && \ + ./bootstrap.sh --prefix=/usr && \ + ./b2 install -j$(nproc) --without-python --without-mpi && \ + cd .. && rm -rf boost_1_90_0 boost_1_90_0.tar.gz + +RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ + cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ + cmake --build FairCMakeModules_build --target install && \ + rm -rf FairCMakeModules FairCMakeModules_build + +RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ + cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairLogger_build --target install && \ + rm -rf FairLogger FairLogger_build + +RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ + cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairMQ_build --target install && \ + rm -rf FairMQ FairMQ_build + +RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ + cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ + cmake --build DDS_build --target wn_bin && \ + cmake --build DDS_build --target install && \ + rm -rf DDS DDS_build diff --git a/utils/ci/centos.8stream.alice.def b/utils/ci/centos.8stream.alice.def deleted file mode 100644 index 133805e5..00000000 --- a/utils/ci/centos.8stream.alice.def +++ /dev/null @@ -1,27 +0,0 @@ -Bootstrap: docker -From: quay.io/centos/centos:stream8 - -%post - dnf -y update - dnf -y install epel-release - dnf -y install dnf-plugins-core - dnf config-manager --set-enabled powertools - dnf -y update - dnf -y group install "Development Tools" - cat << EOF > /etc/yum.repos.d/alice-system-deps.repo -[alice-system-deps] -name=alice-system-deps -baseurl=https://s3.cern.ch/swift/v1/alibuild-repo/RPMS/o2-full-deps_el8.x86-64/ -enabled=1 -gpgcheck=0 -EOF - cat << EOF > /etc/profile.d/alibuild.sh -#!/bin/bash -export ALIBUILD_WORK_DIR=/root/sw -EOF - dnf install -y alice-o2-full-deps alibuild - cd /root - git clone -b odc_ci https://github.com/FairRootGroup/alidist - aliBuild analytics off - aliBuild init --defaults o2 ODC --debug - aliBuild build --defaults o2 ODC --debug diff --git a/utils/ci/fedora36_dds3.7.22.def b/utils/ci/fedora36_dds3.7.22.def deleted file mode 100644 index f797ba9b..00000000 --- a/utils/ci/fedora36_dds3.7.22.def +++ /dev/null @@ -1,35 +0,0 @@ -Bootstrap: docker -From: fedora:36 - -%post - dnf -y update - dnf -y install https://alfa-ci.gsi.de/packages/rpm/fedora-36-x86_64/fairsoft-release-dev.rpm - dnf -y install abseil-cpp-devel \ - asio-devel \ - boost-devel \ - ca-certificates \ - clang-tools-extra \ - cmake \ - faircmakemodules \ - fairlogger-devel \ - fairmq-devel \ - flatbuffers-devel \ - flatbuffers-compiler \ - gcc-c++ \ - git \ - grpc-devel \ - grpc-plugins \ - libasan \ - liblsan \ - libubsan \ - libxml2 \ - ninja-build \ - patch \ - wget - dnf -y clean all - - git clone -b 3.7.22 https://github.com/FairRootGroup/DDS - cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF - cmake --build DDS_build --target wn_bin - cmake --build DDS_build --target install - rm -rf DDS DDS_build diff --git a/utils/ci/fedora37_dds3.7.22.def b/utils/ci/fedora37_dds3.7.22.def deleted file mode 100644 index 6bb537dd..00000000 --- a/utils/ci/fedora37_dds3.7.22.def +++ /dev/null @@ -1,35 +0,0 @@ -Bootstrap: docker -From: fedora:37 - -%post - dnf -y update - dnf -y install https://alfa-ci.gsi.de/packages/rpm/fedora-37-x86_64/fairsoft-release-dev.rpm - dnf -y install abseil-cpp-devel \ - asio-devel \ - boost-devel \ - ca-certificates \ - clang-tools-extra \ - cmake \ - faircmakemodules \ - fairlogger-devel \ - fairmq-devel \ - flatbuffers-devel \ - flatbuffers-compiler \ - gcc-c++ \ - git \ - grpc-devel \ - grpc-plugins \ - libasan \ - liblsan \ - libubsan \ - libxml2 \ - ninja-build \ - patch \ - wget - dnf -y clean all - - git clone -b 3.7.22 https://github.com/FairRootGroup/DDS - cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF - cmake --build DDS_build --target wn_bin - cmake --build DDS_build --target install - rm -rf DDS DDS_build From 8a8cb0ee06cb6ff13ddd7da937f5794d987f9517 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 11 Mar 2026 11:05:01 +0100 Subject: [PATCH 02/13] Bump docker build push action to v6 --- .github/workflows/docker-images.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-images.yml b/.github/workflows/docker-images.yml index 0ea50afb..ad91bc97 100644 --- a/.github/workflows/docker-images.yml +++ b/.github/workflows/docker-images.yml @@ -44,7 +44,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: utils/ci file: utils/ci/Dockerfile.${{ matrix.fedora }} From 73a0b84abe9a1ea438a03c729003ba3a4e1b3ed3 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 11 Mar 2026 11:09:58 +0100 Subject: [PATCH 03/13] CI bump --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ec53907c..740e369f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,6 +43,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Build and test env: From 26ab23254d8e85acfc34ec68b7e9e305b315bc2f Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 11 Mar 2026 14:52:24 +0100 Subject: [PATCH 04/13] Bump versions --- utils/ci/Dockerfile.fedora39 | 6 +++--- utils/ci/Dockerfile.fedora40 | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/utils/ci/Dockerfile.fedora39 b/utils/ci/Dockerfile.fedora39 index 67f4e935..69b9b2b2 100644 --- a/utils/ci/Dockerfile.fedora39 +++ b/utils/ci/Dockerfile.fedora39 @@ -29,17 +29,17 @@ RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ cmake --build FairCMakeModules_build --target install && \ rm -rf FairCMakeModules FairCMakeModules_build -RUN git clone -b v2.1.0 https://github.com/FairRootGroup/FairLogger && \ +RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ cmake --build FairLogger_build --target install && \ rm -rf FairLogger FairLogger_build -RUN git clone -b v1.9.2 https://github.com/FairRootGroup/FairMQ && \ +RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ cmake --build FairMQ_build --target install && \ rm -rf FairMQ FairMQ_build -RUN git clone -b 3.12 https://github.com/FairRootGroup/DDS && \ +RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ cmake --build DDS_build --target wn_bin && \ cmake --build DDS_build --target install && \ diff --git a/utils/ci/Dockerfile.fedora40 b/utils/ci/Dockerfile.fedora40 index bb248493..ecd6dc5f 100644 --- a/utils/ci/Dockerfile.fedora40 +++ b/utils/ci/Dockerfile.fedora40 @@ -29,17 +29,17 @@ RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ cmake --build FairCMakeModules_build --target install && \ rm -rf FairCMakeModules FairCMakeModules_build -RUN git clone -b v2.1.0 https://github.com/FairRootGroup/FairLogger && \ +RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ cmake --build FairLogger_build --target install && \ rm -rf FairLogger FairLogger_build -RUN git clone -b v1.9.2 https://github.com/FairRootGroup/FairMQ && \ +RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ cmake --build FairMQ_build --target install && \ rm -rf FairMQ FairMQ_build -RUN git clone -b 3.12 https://github.com/FairRootGroup/DDS && \ +RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ cmake --build DDS_build --target wn_bin && \ cmake --build DDS_build --target install && \ From 8d4a72df14fd84b4ff77bbb00894431646e3a8b3 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Thu, 12 Mar 2026 09:55:46 +0100 Subject: [PATCH 05/13] upload logs on failure --- .github/workflows/ci.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 740e369f..f8206496 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,3 +50,15 @@ jobs: env: LABEL: ${{ matrix.label }} run: ctest -S ODCTest.cmake -VV --output-on-failure ${{ matrix.extra }} + + - name: Upload logs on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: logs-${{ matrix.label }} + path: | + ~/.ODC/ + ~/.DDS/ + build/tmp/ + if-no-files-found: ignore + retention-days: 7 From 3b07b1db5d9f2d7f3941f6f0a98d8b670bad4656 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Tue, 17 Mar 2026 12:19:02 +0100 Subject: [PATCH 06/13] test --- utils/ci/Dockerfile.fedora39 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/ci/Dockerfile.fedora39 b/utils/ci/Dockerfile.fedora39 index 69b9b2b2..cc047d04 100644 --- a/utils/ci/Dockerfile.fedora39 +++ b/utils/ci/Dockerfile.fedora39 @@ -39,7 +39,7 @@ RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ cmake --build FairMQ_build --target install && \ rm -rf FairMQ FairMQ_build -RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ +RUN git clone -b master https://github.com/FairRootGroup/DDS && \ cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ cmake --build DDS_build --target wn_bin && \ cmake --build DDS_build --target install && \ From aa20cdfd980cefddd591089bcf6cdd47b5fb4b29 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Tue, 17 Mar 2026 12:25:43 +0100 Subject: [PATCH 07/13] update the images --- .github/workflows/docker-images.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/docker-images.yml b/.github/workflows/docker-images.yml index ad91bc97..2a0bf91b 100644 --- a/.github/workflows/docker-images.yml +++ b/.github/workflows/docker-images.yml @@ -6,6 +6,9 @@ on: - master paths: - 'utils/ci/Dockerfile.*' + pull_request: + paths: + - 'utils/ci/Dockerfile.*' workflow_dispatch: env: From 72f73c64295f4e574cf06c99cba4613a64fd6bed Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 18 Mar 2026 12:33:44 +0100 Subject: [PATCH 08/13] ci: bump DDS version --- utils/ci/Dockerfile.fedora39 | 2 +- utils/ci/Dockerfile.fedora40 | 2 +- utils/ci/Dockerfile.fedora41 | 2 +- utils/ci/Dockerfile.fedora42 | 2 +- utils/ci/Dockerfile.fedora42-boost190 | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/utils/ci/Dockerfile.fedora39 b/utils/ci/Dockerfile.fedora39 index cc047d04..cf2e41c1 100644 --- a/utils/ci/Dockerfile.fedora39 +++ b/utils/ci/Dockerfile.fedora39 @@ -39,7 +39,7 @@ RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ cmake --build FairMQ_build --target install && \ rm -rf FairMQ FairMQ_build -RUN git clone -b master https://github.com/FairRootGroup/DDS && \ +RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ cmake --build DDS_build --target wn_bin && \ cmake --build DDS_build --target install && \ diff --git a/utils/ci/Dockerfile.fedora40 b/utils/ci/Dockerfile.fedora40 index ecd6dc5f..cafceabe 100644 --- a/utils/ci/Dockerfile.fedora40 +++ b/utils/ci/Dockerfile.fedora40 @@ -39,7 +39,7 @@ RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ cmake --build FairMQ_build --target install && \ rm -rf FairMQ FairMQ_build -RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ +RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ cmake --build DDS_build --target wn_bin && \ cmake --build DDS_build --target install && \ diff --git a/utils/ci/Dockerfile.fedora41 b/utils/ci/Dockerfile.fedora41 index 5b15dfff..52f3e3d6 100644 --- a/utils/ci/Dockerfile.fedora41 +++ b/utils/ci/Dockerfile.fedora41 @@ -39,7 +39,7 @@ RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ cmake --build FairMQ_build --target install && \ rm -rf FairMQ FairMQ_build -RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ +RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ cmake --build DDS_build --target wn_bin && \ cmake --build DDS_build --target install && \ diff --git a/utils/ci/Dockerfile.fedora42 b/utils/ci/Dockerfile.fedora42 index e1f6e473..d1a0ff34 100644 --- a/utils/ci/Dockerfile.fedora42 +++ b/utils/ci/Dockerfile.fedora42 @@ -39,7 +39,7 @@ RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ cmake --build FairMQ_build --target install && \ rm -rf FairMQ FairMQ_build -RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ +RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ cmake --build DDS_build --target wn_bin && \ cmake --build DDS_build --target install && \ diff --git a/utils/ci/Dockerfile.fedora42-boost190 b/utils/ci/Dockerfile.fedora42-boost190 index 6c87645a..522390fa 100644 --- a/utils/ci/Dockerfile.fedora42-boost190 +++ b/utils/ci/Dockerfile.fedora42-boost190 @@ -47,7 +47,7 @@ RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ cmake --build FairMQ_build --target install && \ rm -rf FairMQ FairMQ_build -RUN git clone -b 3.16 https://github.com/FairRootGroup/DDS && \ +RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ cmake --build DDS_build --target wn_bin && \ cmake --build DDS_build --target install && \ From 3dd4d8f3c73b84dd3b163dbc618feefb5f8ff1b0 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 18 Mar 2026 13:00:29 +0100 Subject: [PATCH 09/13] ci: do not push images on PRs --- .github/workflows/docker-images.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-images.yml b/.github/workflows/docker-images.yml index 2a0bf91b..58102fcf 100644 --- a/.github/workflows/docker-images.yml +++ b/.github/workflows/docker-images.yml @@ -51,7 +51,7 @@ jobs: with: context: utils/ci file: utils/ci/Dockerfile.${{ matrix.fedora }} - push: true + push: ${{ github.event_name != 'pull_request' }} tags: ${{ env.IMAGE_PREFIX }}:${{ matrix.fedora }} cache-from: type=registry,ref=${{ env.IMAGE_PREFIX }}:${{ matrix.fedora }}-cache cache-to: type=registry,ref=${{ env.IMAGE_PREFIX }}:${{ matrix.fedora }}-cache,mode=max From 2c77546c11178a6ee10f8b422de387484542e8b4 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 18 Mar 2026 15:20:17 +0100 Subject: [PATCH 10/13] ci: consolidate Dockerfiles into single parameterized Dockerfile.fedora --- .github/workflows/docker-images.yml | 26 ++++++---- utils/ci/Dockerfile.fedora | 71 +++++++++++++++++++++++++++ utils/ci/Dockerfile.fedora39 | 46 ----------------- utils/ci/Dockerfile.fedora40 | 46 ----------------- utils/ci/Dockerfile.fedora41 | 46 ----------------- utils/ci/Dockerfile.fedora42 | 46 ----------------- utils/ci/Dockerfile.fedora42-boost190 | 54 -------------------- 7 files changed, 88 insertions(+), 247 deletions(-) create mode 100644 utils/ci/Dockerfile.fedora delete mode 100644 utils/ci/Dockerfile.fedora39 delete mode 100644 utils/ci/Dockerfile.fedora40 delete mode 100644 utils/ci/Dockerfile.fedora41 delete mode 100644 utils/ci/Dockerfile.fedora42 delete mode 100644 utils/ci/Dockerfile.fedora42-boost190 diff --git a/.github/workflows/docker-images.yml b/.github/workflows/docker-images.yml index 58102fcf..4e4f2a95 100644 --- a/.github/workflows/docker-images.yml +++ b/.github/workflows/docker-images.yml @@ -26,11 +26,18 @@ jobs: fail-fast: false matrix: include: - - fedora: fedora39 - - fedora: fedora40 - - fedora: fedora41 - - fedora: fedora42 - - fedora: fedora42-boost190 + - image: fedora39 + build-args: FEDORA_VERSION=39 + - image: fedora40 + build-args: FEDORA_VERSION=40 + - image: fedora41 + build-args: FEDORA_VERSION=41 + - image: fedora42 + build-args: FEDORA_VERSION=42 + - image: fedora42-boost190 + build-args: | + FEDORA_VERSION=42 + BOOST_VERSION=90 steps: - name: Checkout @@ -50,8 +57,9 @@ jobs: uses: docker/build-push-action@v6 with: context: utils/ci - file: utils/ci/Dockerfile.${{ matrix.fedora }} + file: utils/ci/Dockerfile.fedora + build-args: ${{ matrix.build-args }} push: ${{ github.event_name != 'pull_request' }} - tags: ${{ env.IMAGE_PREFIX }}:${{ matrix.fedora }} - cache-from: type=registry,ref=${{ env.IMAGE_PREFIX }}:${{ matrix.fedora }}-cache - cache-to: type=registry,ref=${{ env.IMAGE_PREFIX }}:${{ matrix.fedora }}-cache,mode=max + tags: ${{ env.IMAGE_PREFIX }}:${{ matrix.image }} + cache-from: type=registry,ref=${{ env.IMAGE_PREFIX }}:${{ matrix.image }}-cache + cache-to: type=registry,ref=${{ env.IMAGE_PREFIX }}:${{ matrix.image }}-cache,mode=max diff --git a/utils/ci/Dockerfile.fedora b/utils/ci/Dockerfile.fedora new file mode 100644 index 00000000..fc9f8ffc --- /dev/null +++ b/utils/ci/Dockerfile.fedora @@ -0,0 +1,71 @@ +# Usage: +# docker build -f Dockerfile.fedora . +# docker build -f Dockerfile.fedora --build-arg FEDORA_VERSION=41 --build-arg DDS_VERSION=3.17 . +# docker build -f Dockerfile.fedora --build-arg BOOST_VERSION=90 . + +# Stage 1: Common build environment with shared dnf packages. +ARG FEDORA_VERSION=42 +FROM fedora:${FEDORA_VERSION} AS buildenv + +RUN dnf -y update && \ + dnf -y install abseil-cpp-devel \ + asio-devel \ + ca-certificates \ + cmake \ + flatbuffers-devel \ + flatbuffers-compiler \ + fmt-devel \ + gcc-c++ \ + git \ + grpc-devel \ + grpc-plugins \ + libxml2 \ + ninja-build \ + patch \ + zeromq-devel + +# Stage 2: Build custom dependencies from source into /usr/local. +# Source and build trees are discarded with this stage. +FROM buildenv AS build + +ARG BOOST_VERSION=90 +ARG FAIRCMAKEMODULES_VERSION=v1.0.0 +ARG FAIRLOGGER_VERSION=v2.3.1 +ARG FAIRMQ_VERSION=v1.10.1 +ARG DDS_VERSION=3.18 + +ADD https://archives.boost.io/release/1.${BOOST_VERSION}.0/source/boost_1_${BOOST_VERSION}_0.tar.gz /boost.tar.gz +RUN tar xzf /boost.tar.gz && \ + cd /boost_1_${BOOST_VERSION}_0 && \ + ./bootstrap.sh --prefix=/usr/local && \ + ./b2 install -j$(nproc) --without-python --without-mpi + +ADD --keep-git-dir=true https://github.com/FairRootGroup/FairCMakeModules.git#${FAIRCMAKEMODULES_VERSION} /FairCMakeModules +RUN cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr/local && \ + cmake --build FairCMakeModules_build --target install + +ADD --keep-git-dir=true https://github.com/FairRootGroup/FairLogger.git#${FAIRLOGGER_VERSION} /FairLogger +RUN cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairLogger_build --target install + +ADD --keep-git-dir=true https://github.com/FairRootGroup/FairMQ.git#${FAIRMQ_VERSION} /FairMQ +RUN cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release && \ + cmake --build FairMQ_build --target install + +ADD https://github.com/FairRootGroup/DDS.git#${DDS_VERSION} /DDS +RUN echo "${DDS_VERSION}" > /DDS/version && \ + cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ + cmake --build DDS_build --target wn_bin && \ + cmake --build DDS_build --target install + +# Stage 3: Final image with ODC-specific build dependencies +# and the install trees of the custom-built dependencies from stage 2. +FROM buildenv AS final + +RUN dnf -y install clang-tools-extra \ + libasan \ + liblsan \ + libubsan && \ + dnf -y clean all + +COPY --from=build /usr/local /usr/local diff --git a/utils/ci/Dockerfile.fedora39 b/utils/ci/Dockerfile.fedora39 deleted file mode 100644 index cf2e41c1..00000000 --- a/utils/ci/Dockerfile.fedora39 +++ /dev/null @@ -1,46 +0,0 @@ -FROM fedora:39 - -RUN dnf -y update && \ - dnf -y install abseil-cpp-devel \ - asio-devel \ - boost-devel \ - ca-certificates \ - clang-tools-extra \ - cmake \ - flatbuffers-devel \ - flatbuffers-compiler \ - fmt-devel \ - gcc-c++ \ - git \ - grpc-devel \ - grpc-plugins \ - libasan \ - liblsan \ - libubsan \ - libxml2 \ - ninja-build \ - patch \ - wget \ - zeromq-devel && \ - dnf -y clean all - -RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ - cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ - cmake --build FairCMakeModules_build --target install && \ - rm -rf FairCMakeModules FairCMakeModules_build - -RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ - cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairLogger_build --target install && \ - rm -rf FairLogger FairLogger_build - -RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ - cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairMQ_build --target install && \ - rm -rf FairMQ FairMQ_build - -RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ - cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ - cmake --build DDS_build --target wn_bin && \ - cmake --build DDS_build --target install && \ - rm -rf DDS DDS_build diff --git a/utils/ci/Dockerfile.fedora40 b/utils/ci/Dockerfile.fedora40 deleted file mode 100644 index cafceabe..00000000 --- a/utils/ci/Dockerfile.fedora40 +++ /dev/null @@ -1,46 +0,0 @@ -FROM fedora:40 - -RUN dnf -y update && \ - dnf -y install abseil-cpp-devel \ - asio-devel \ - boost-devel \ - ca-certificates \ - clang-tools-extra \ - cmake \ - flatbuffers-devel \ - flatbuffers-compiler \ - fmt-devel \ - gcc-c++ \ - git \ - grpc-devel \ - grpc-plugins \ - libasan \ - liblsan \ - libubsan \ - libxml2 \ - ninja-build \ - patch \ - wget \ - zeromq-devel && \ - dnf -y clean all - -RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ - cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ - cmake --build FairCMakeModules_build --target install && \ - rm -rf FairCMakeModules FairCMakeModules_build - -RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ - cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairLogger_build --target install && \ - rm -rf FairLogger FairLogger_build - -RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ - cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairMQ_build --target install && \ - rm -rf FairMQ FairMQ_build - -RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ - cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ - cmake --build DDS_build --target wn_bin && \ - cmake --build DDS_build --target install && \ - rm -rf DDS DDS_build diff --git a/utils/ci/Dockerfile.fedora41 b/utils/ci/Dockerfile.fedora41 deleted file mode 100644 index 52f3e3d6..00000000 --- a/utils/ci/Dockerfile.fedora41 +++ /dev/null @@ -1,46 +0,0 @@ -FROM fedora:41 - -RUN dnf -y update && \ - dnf -y install abseil-cpp-devel \ - asio-devel \ - boost-devel \ - ca-certificates \ - clang-tools-extra \ - cmake \ - flatbuffers-devel \ - flatbuffers-compiler \ - fmt-devel \ - gcc-c++ \ - git \ - grpc-devel \ - grpc-plugins \ - libasan \ - liblsan \ - libubsan \ - libxml2 \ - ninja-build \ - patch \ - wget \ - zeromq-devel && \ - dnf -y clean all - -RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ - cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ - cmake --build FairCMakeModules_build --target install && \ - rm -rf FairCMakeModules FairCMakeModules_build - -RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ - cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairLogger_build --target install && \ - rm -rf FairLogger FairLogger_build - -RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ - cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairMQ_build --target install && \ - rm -rf FairMQ FairMQ_build - -RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ - cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ - cmake --build DDS_build --target wn_bin && \ - cmake --build DDS_build --target install && \ - rm -rf DDS DDS_build diff --git a/utils/ci/Dockerfile.fedora42 b/utils/ci/Dockerfile.fedora42 deleted file mode 100644 index d1a0ff34..00000000 --- a/utils/ci/Dockerfile.fedora42 +++ /dev/null @@ -1,46 +0,0 @@ -FROM fedora:42 - -RUN dnf -y update && \ - dnf -y install abseil-cpp-devel \ - asio-devel \ - boost-devel \ - ca-certificates \ - clang-tools-extra \ - cmake \ - flatbuffers-devel \ - flatbuffers-compiler \ - fmt-devel \ - gcc-c++ \ - git \ - grpc-devel \ - grpc-plugins \ - libasan \ - liblsan \ - libubsan \ - libxml2 \ - ninja-build \ - patch \ - wget \ - zeromq-devel && \ - dnf -y clean all - -RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ - cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ - cmake --build FairCMakeModules_build --target install && \ - rm -rf FairCMakeModules FairCMakeModules_build - -RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ - cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairLogger_build --target install && \ - rm -rf FairLogger FairLogger_build - -RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ - cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairMQ_build --target install && \ - rm -rf FairMQ FairMQ_build - -RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ - cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ - cmake --build DDS_build --target wn_bin && \ - cmake --build DDS_build --target install && \ - rm -rf DDS DDS_build diff --git a/utils/ci/Dockerfile.fedora42-boost190 b/utils/ci/Dockerfile.fedora42-boost190 deleted file mode 100644 index 522390fa..00000000 --- a/utils/ci/Dockerfile.fedora42-boost190 +++ /dev/null @@ -1,54 +0,0 @@ -FROM fedora:42 - -RUN dnf -y update && \ - dnf -y install abseil-cpp-devel \ - asio-devel \ - ca-certificates \ - clang-tools-extra \ - cmake \ - flatbuffers-devel \ - flatbuffers-compiler \ - fmt-devel \ - gcc-c++ \ - git \ - grpc-devel \ - grpc-plugins \ - libasan \ - liblsan \ - libubsan \ - libxml2 \ - ninja-build \ - patch \ - wget \ - zeromq-devel && \ - dnf -y clean all - -RUN dnf -y remove 'boost-devel' && dnf -y clean all - -RUN wget https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.gz && \ - tar xzf boost_1_90_0.tar.gz && \ - cd boost_1_90_0 && \ - ./bootstrap.sh --prefix=/usr && \ - ./b2 install -j$(nproc) --without-python --without-mpi && \ - cd .. && rm -rf boost_1_90_0 boost_1_90_0.tar.gz - -RUN git clone https://github.com/FairRootGroup/FairCMakeModules && \ - cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr && \ - cmake --build FairCMakeModules_build --target install && \ - rm -rf FairCMakeModules FairCMakeModules_build - -RUN git clone -b v2.3.1 https://github.com/FairRootGroup/FairLogger && \ - cmake -GNinja -S FairLogger -B FairLogger_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairLogger_build --target install && \ - rm -rf FairLogger FairLogger_build - -RUN git clone -b v1.10.1 https://github.com/FairRootGroup/FairMQ && \ - cmake -GNinja -S FairMQ -B FairMQ_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release && \ - cmake --build FairMQ_build --target install && \ - rm -rf FairMQ FairMQ_build - -RUN git clone -b 3.18 https://github.com/FairRootGroup/DDS && \ - cmake -GNinja -S DDS -B DDS_build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_dds-tutorials=OFF && \ - cmake --build DDS_build --target wn_bin && \ - cmake --build DDS_build --target install && \ - rm -rf DDS DDS_build From 32831d3c1bd87c51ee00cd99003825630e8a6315 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 18 Mar 2026 15:35:15 +0100 Subject: [PATCH 11/13] ci: install boost from dnf by default, build from source only for boost190 variant --- utils/ci/Dockerfile.fedora | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/utils/ci/Dockerfile.fedora b/utils/ci/Dockerfile.fedora index fc9f8ffc..26b2c8e4 100644 --- a/utils/ci/Dockerfile.fedora +++ b/utils/ci/Dockerfile.fedora @@ -22,23 +22,29 @@ RUN dnf -y update && \ libxml2 \ ninja-build \ patch \ + wget \ zeromq-devel # Stage 2: Build custom dependencies from source into /usr/local. # Source and build trees are discarded with this stage. FROM buildenv AS build -ARG BOOST_VERSION=90 +ARG BOOST_VERSION= ARG FAIRCMAKEMODULES_VERSION=v1.0.0 ARG FAIRLOGGER_VERSION=v2.3.1 ARG FAIRMQ_VERSION=v1.10.1 ARG DDS_VERSION=3.18 -ADD https://archives.boost.io/release/1.${BOOST_VERSION}.0/source/boost_1_${BOOST_VERSION}_0.tar.gz /boost.tar.gz -RUN tar xzf /boost.tar.gz && \ - cd /boost_1_${BOOST_VERSION}_0 && \ - ./bootstrap.sh --prefix=/usr/local && \ - ./b2 install -j$(nproc) --without-python --without-mpi +RUN if [ -n "${BOOST_VERSION}" ]; then \ + wget -O /boost.tar.gz "https://archives.boost.io/release/1.${BOOST_VERSION}.0/source/boost_1_${BOOST_VERSION}_0.tar.gz" && \ + tar xzf /boost.tar.gz && \ + cd /boost_1_${BOOST_VERSION}_0 && \ + ./bootstrap.sh --prefix=/usr/local && \ + ./b2 install -j$(nproc) --without-python --without-mpi && \ + cd / && rm -rf /boost.tar.gz /boost_1_${BOOST_VERSION}_0; \ + else \ + dnf -y install boost-devel; \ + fi ADD --keep-git-dir=true https://github.com/FairRootGroup/FairCMakeModules.git#${FAIRCMAKEMODULES_VERSION} /FairCMakeModules RUN cmake -GNinja -S FairCMakeModules -B FairCMakeModules_build -DCMAKE_INSTALL_PREFIX=/usr/local && \ @@ -62,7 +68,9 @@ RUN echo "${DDS_VERSION}" > /DDS/version && \ # and the install trees of the custom-built dependencies from stage 2. FROM buildenv AS final -RUN dnf -y install clang-tools-extra \ +ARG BOOST_VERSION= +RUN if [ -z "${BOOST_VERSION}" ]; then dnf -y install boost-devel; fi && \ + dnf -y install clang-tools-extra \ libasan \ liblsan \ libubsan && \ From 856cb72f1dfe68e96e6d082ad957e301fa7ef104 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 18 Mar 2026 16:39:40 +0100 Subject: [PATCH 12/13] artifacts --- .github/workflows/ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8206496..a5be522e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,14 +51,20 @@ jobs: LABEL: ${{ matrix.label }} run: ctest -S ODCTest.cmake -VV --output-on-failure ${{ matrix.extra }} + - name: Collect logs on failure + if: failure() + run: | + mkdir -p build/logs + cp -r ~/.ODC/ build/logs/ODC 2>/dev/null || true + cp -r ~/.DDS/ build/logs/DDS 2>/dev/null || true + - name: Upload logs on failure if: failure() uses: actions/upload-artifact@v4 with: name: logs-${{ matrix.label }} path: | - ~/.ODC/ - ~/.DDS/ + build/logs/ build/tmp/ if-no-files-found: ignore retention-days: 7 From 8686bc17fee6898277e0feafdef5b6543b94b706 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 18 Mar 2026 18:21:00 +0100 Subject: [PATCH 13/13] fix: guard mRuntimeCollectionIndex lookup in test fixture --- tests/odc-fixtures.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/odc-fixtures.h b/tests/odc-fixtures.h index 6117c667..62a6558a 100644 --- a/tests/odc-fixtures.h +++ b/tests/odc-fixtures.h @@ -115,7 +115,10 @@ struct TopologyFixture path.erase(pos); } mSession.mCollectionDetails.emplace(res.m_collectionID, CollectionDetails{res.m_agentID, res.m_collectionID, path, res.m_host, res.m_wrkDir, "unknown_job_id"}); - mSession.mRuntimeCollectionIndex.at(res.m_collectionID)->mRuntimeCollectionAgents[res.m_collectionID] = res.m_agentID; + auto it = mSession.mRuntimeCollectionIndex.find(res.m_collectionID); + if (it != mSession.mRuntimeCollectionIndex.end()) { + it->second->mRuntimeCollectionAgents[res.m_collectionID] = res.m_agentID; + } } } }