From 81849b16d8ca043764fcdc0ea8d8158f10e04966 Mon Sep 17 00:00:00 2001 From: Jacquin Antoine Date: Sat, 28 Feb 2026 19:55:24 +0100 Subject: [PATCH] refactor: remove Debian/DEB packaging, RPM-only support - Remove all DEB packaging files (packaging/deb/*) - Update Dockerfile.package to build RPM packages only - Update build.sh to remove DEB build steps - Update architecture.yml to reflect RPM-only distribution - Update README.md installation instructions for RPM only - Change runtime image from distroless/base-debian12 to scratch - Clean up obsolete build artifacts in dist/ Supported distributions now: - CentOS 7 (el7) - Rocky Linux 8 (el8) - Rocky Linux 9 (el9) - Rocky Linux 10 (el10) Co-authored-by: Qwen-Coder --- Dockerfile | 4 +-- Dockerfile.package | 79 ++++-------------------------------------- README.md | 12 ++++--- architecture.yml | 23 +++--------- build.sh | 14 +++----- packaging/deb/postinst | 66 ----------------------------------- packaging/deb/postrm | 52 --------------------------- packaging/deb/prerm | 29 ---------------- 8 files changed, 24 insertions(+), 255 deletions(-) delete mode 100644 packaging/deb/postinst delete mode 100644 packaging/deb/postrm delete mode 100644 packaging/deb/prerm diff --git a/Dockerfile b/Dockerfile index 9cc6225..ba7fa7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,7 +48,7 @@ RUN mkdir -p /tmp/runtime-root/var/log/logcorrelator /tmp/runtime-root/var/run/l # ============================================================================= # Runtime stage - minimal image for running the service # ============================================================================= -FROM gcr.io/distroless/base-debian12 AS runtime +FROM scratch AS runtime # Copy binary from builder COPY --from=builder /usr/bin/logcorrelator /usr/bin/logcorrelator @@ -56,7 +56,7 @@ COPY --from=builder /usr/bin/logcorrelator /usr/bin/logcorrelator # Copy example config COPY --from=builder /build/config.example.yml /etc/logcorrelator/logcorrelator.yml -# Create necessary directories in builder stage (distroless has no shell) +# Create necessary directories in builder stage (scratch image has no shell) COPY --from=builder /tmp/runtime-root/var /var COPY --from=builder /tmp/runtime-root/etc /etc diff --git a/Dockerfile.package b/Dockerfile.package index 0bbc0c0..f2bc778 100644 --- a/Dockerfile.package +++ b/Dockerfile.package @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 # ============================================================================= -# logcorrelator - Dockerfile de packaging unifié (DEB + RPM multi-distros) +# logcorrelator - Dockerfile de build et packaging RPM multi-distros # ============================================================================= # ============================================================================= @@ -31,71 +31,7 @@ RUN mkdir -p dist && \ ./cmd/logcorrelator # ============================================================================= -# Stage 2: DEB Package builder -# ============================================================================= -FROM ruby:3.2-bookworm AS deb-package-builder - -WORKDIR /package - -# Install fpm and dependencies -RUN apt-get update && apt-get install -y --no-install-recommends \ - rpm \ - dpkg-dev \ - fakeroot \ - && rm -rf /var/lib/apt/lists/* \ - && gem install fpm -v 1.16.0 - -# Copy binary from builder -COPY --from=builder /build/dist/logcorrelator /tmp/pkgroot/usr/bin/logcorrelator -COPY --from=builder /build/config.example.yml /tmp/pkgroot/etc/logcorrelator/logcorrelator.yml -COPY --from=builder /build/config.example.yml /tmp/pkgroot/usr/share/logcorrelator/logcorrelator.yml.example -COPY --from=builder /build/logcorrelator.service /tmp/pkgroot/etc/systemd/system/logcorrelator.service - -# Create directories and set permissions -RUN mkdir -p /tmp/pkgroot/var/log/logcorrelator && \ - mkdir -p /tmp/pkgroot/var/run/logcorrelator && \ - mkdir -p /tmp/pkgroot/var/lib/logcorrelator && \ - chmod 755 /tmp/pkgroot/usr/bin/logcorrelator && \ - chmod 640 /tmp/pkgroot/etc/logcorrelator/logcorrelator.yml && \ - chmod 640 /tmp/pkgroot/usr/share/logcorrelator/logcorrelator.yml.example && \ - chmod 644 /tmp/pkgroot/etc/systemd/system/logcorrelator.service && \ - chmod 755 /tmp/pkgroot/var/log/logcorrelator && \ - chmod 755 /tmp/pkgroot/var/run/logcorrelator - -# Copy maintainer scripts -COPY packaging/deb/postinst /tmp/scripts/postinst -COPY packaging/deb/prerm /tmp/scripts/prerm -COPY packaging/deb/postrm /tmp/scripts/postrm -RUN chmod 755 /tmp/scripts/* - -# Build DEB package -ARG VERSION=1.0.0 -ARG ARCH=amd64 -RUN mkdir -p /packages/deb && \ - fpm -s dir -t deb \ - -n logcorrelator \ - -v "${VERSION}" \ - -C /tmp/pkgroot \ - --architecture "${ARCH}" \ - --description "Log correlation service for HTTP and network events" \ - --url "https://github.com/logcorrelator/logcorrelator" \ - --license "MIT" \ - --vendor "logcorrelator " \ - --maintainer "logcorrelator " \ - --depends "systemd" \ - --after-install /tmp/scripts/postinst \ - --before-remove /tmp/scripts/prerm \ - --after-remove /tmp/scripts/postrm \ - -p /packages/deb/logcorrelator_${VERSION}_${ARCH}.deb \ - usr/bin/logcorrelator \ - etc/logcorrelator/logcorrelator.yml \ - usr/share/logcorrelator/logcorrelator.yml.example \ - var/log/logcorrelator \ - var/run/logcorrelator \ - etc/systemd/system/logcorrelator.service - -# ============================================================================= -# Stage 3: RPM Package builder for CentOS 7 +# Stage 2: RPM Package builder for CentOS 7 # ============================================================================= FROM centos:7 AS rpm-centos7-builder @@ -155,7 +91,7 @@ RUN mkdir -p /packages/rpm/centos7 && \ etc/systemd/system/logcorrelator.service # ============================================================================= -# Stage 4: RPM Package builder for Rocky Linux 8 +# Stage 3: RPM Package builder for Rocky Linux 8 # ============================================================================= FROM rockylinux:8 AS rpm-rocky8-builder @@ -215,7 +151,7 @@ RUN mkdir -p /packages/rpm/rocky8 && \ etc/systemd/system/logcorrelator.service # ============================================================================= -# Stage 5: RPM Package builder for Rocky Linux 9 +# Stage 4: RPM Package builder for Rocky Linux 9 # ============================================================================= FROM rockylinux:9 AS rpm-rocky9-builder @@ -275,7 +211,7 @@ RUN mkdir -p /packages/rpm/rocky9 && \ etc/systemd/system/logcorrelator.service # ============================================================================= -# Stage 6: RPM Package builder for Rocky Linux 10 +# Stage 5: RPM Package builder for Rocky Linux 10 # ============================================================================= FROM rockylinux:10 AS rpm-rocky10-builder @@ -335,15 +271,14 @@ RUN mkdir -p /packages/rpm/rocky10 && \ etc/systemd/system/logcorrelator.service # ============================================================================= -# Stage 7: Output - Image finale avec tous les packages +# Stage 6: Output - Image finale avec les packages RPM # ============================================================================= FROM alpine:latest AS output WORKDIR /packages -COPY --from=deb-package-builder /packages/deb/*.deb /packages/deb/ COPY --from=rpm-centos7-builder /packages/rpm/centos7/*.rpm /packages/rpm/centos7/ COPY --from=rpm-rocky8-builder /packages/rpm/rocky8/*.rpm /packages/rpm/rocky8/ COPY --from=rpm-rocky9-builder /packages/rpm/rocky9/*.rpm /packages/rpm/rocky9/ COPY --from=rpm-rocky10-builder /packages/rpm/rocky10/*.rpm /packages/rpm/rocky10/ -CMD ["sh", "-c", "echo '=== DEB Packages ===' && ls -la /packages/deb/ && echo '' && echo '=== RPM CentOS 7 ===' && ls -la /packages/rpm/centos7/ && echo '' && echo '=== RPM Rocky Linux 8 ===' && ls -la /packages/rpm/rocky8/ && echo '' && echo '=== RPM Rocky Linux 9 ===' && ls -la /packages/rpm/rocky9/ && echo '' && echo '=== RPM Rocky Linux 10 ===' && ls -la /packages/rpm/rocky10/"] +CMD ["sh", "-c", "echo '=== RPM CentOS 7 ===' && ls -la /packages/rpm/centos7/ && echo '' && echo '=== RPM Rocky Linux 8 ===' && ls -la /packages/rpm/rocky8/ && echo '' && echo '=== RPM Rocky Linux 9 ===' && ls -la /packages/rpm/rocky9/ && echo '' && echo '=== RPM Rocky Linux 10 ===' && ls -la /packages/rpm/rocky10/'"] diff --git a/README.md b/README.md index 1040532..df23355 100644 --- a/README.md +++ b/README.md @@ -64,17 +64,19 @@ docker run -d \ logcorrelator:latest ``` -### Depuis les packages (DEB/RPM) +### Depuis les packages RPM ```bash # Générer les packages ./build.sh -# Installer le package DEB (Debian/Ubuntu) -sudo dpkg -i dist/deb/logcorrelator_1.0.0_amd64.deb +# Installer le package RPM (CentOS 7) +sudo yum install -y dist/rpm/centos7/logcorrelator-1.0.0-1.el7.x86_64.rpm -# Installer le package RPM (Rocky Linux 8+) -sudo rpm -ivh dist/rpm/logcorrelator-1.0.0-1.x86_64.rpm +# Installer le package RPM (Rocky Linux 8/9/10) +sudo dnf install -y dist/rpm/rocky8/logcorrelator-1.0.0-1.el8.x86_64.rpm +sudo dnf install -y dist/rpm/rocky9/logcorrelator-1.0.0-1.el9.x86_64.rpm +sudo dnf install -y dist/rpm/rocky10/logcorrelator-1.0.0-1.el10.x86_64.rpm # Activer et démarrer le service sudo systemctl enable logcorrelator diff --git a/architecture.yml b/architecture.yml index 47e600b..9480394 100644 --- a/architecture.yml +++ b/architecture.yml @@ -453,7 +453,7 @@ docker: base: golang:latest purpose: build_and_test runtime: - base: gcr.io/distroless/base-debian12 + base: scratch purpose: run_binary_only build: multi_stage: true @@ -472,15 +472,11 @@ docker: packaging: description: > - logcorrelator est distribué sous forme de packages .deb (Debian/Ubuntu) et - .rpm (CentOS 7, Rocky Linux/RHEL 8, 9, 10), construits intégralement dans Docker avec fpm. + logcorrelator est distribué sous forme de packages .rpm (CentOS 7, Rocky Linux/RHEL 8, 9, 10), + construits intégralement dans Docker avec fpm. formats: - - deb - rpm target_distros: - deb: - - debian-12+ - - ubuntu-22.04+ rpm: - centos-7 - rocky-linux-8+ @@ -498,9 +494,6 @@ packaging: description: > Compilation du binaire Go avec CGO_ENABLED=0 pour un binaire statique. GOOS=linux GOARCH=amd64. - - name: deb_package_builder - description: > - Construction du package DEB pour Debian/Ubuntu avec fpm. - name: rpm_centos7_builder description: > Construction du package RPM pour CentOS 7 (el7) avec fpm. @@ -515,7 +508,7 @@ packaging: Construction du package RPM pour Rocky Linux 10 (el10) avec fpm. - name: output description: > - Image Alpine minimale contenant les packages dans /packages/deb et + Image Alpine minimale contenant les packages dans /packages/rpm/{centos7,rocky8,rocky9,rocky10}. files: binary: @@ -538,22 +531,14 @@ packaging: - path: /etc/logcorrelator mode: "0750" maintainer_scripts: - deb: - postinst: packaging/deb/postinst - prerm: packaging/deb/prerm - postrm: packaging/deb/postrm rpm: post: packaging/rpm/post preun: packaging/rpm/preun postun: packaging/rpm/postun dependencies: - deb: - - systemd rpm: - systemd verify: - deb: - command: docker run --rm -v $(pwd)/dist/deb:/packages debian:latest sh -c "apt-get update && apt-get install -y /packages/*.deb" rpm: centos7: command: docker run --rm -v $(pwd)/dist/rpm/centos7:/packages centos:7 sh -c "yum install -y /packages/*.rpm" diff --git a/build.sh b/build.sh index 2b65251..ef82e10 100755 --- a/build.sh +++ b/build.sh @@ -31,8 +31,8 @@ docker build \ -t logcorrelator:latest \ -f Dockerfile . -# Step 3: Build packages (DEB + RPM) -echo "[3/4] Building DEB and RPM packages in container..." +# Step 3: Build RPM packages +echo "[3/4] Building RPM packages in container..." docker build \ --target output \ --build-arg VERSION="${VERSION}" \ @@ -41,9 +41,9 @@ docker build \ # Extract packages from builder container echo "[4/4] Extracting packages..." -mkdir -p "${OUTPUT_DIR}/deb" "${OUTPUT_DIR}/rpm/centos7" "${OUTPUT_DIR}/rpm/rocky8" "${OUTPUT_DIR}/rpm/rocky9" "${OUTPUT_DIR}/rpm/rocky10" +mkdir -p "${OUTPUT_DIR}/rpm/centos7" "${OUTPUT_DIR}/rpm/rocky8" "${OUTPUT_DIR}/rpm/rocky9" "${OUTPUT_DIR}/rpm/rocky10" docker run --rm -v "${OUTPUT_DIR}:/output" logcorrelator-packager:latest \ - sh -c 'cp -r /packages/deb /output/ && cp -r /packages/rpm/centos7 /output/rpm/ && cp -r /packages/rpm/rocky8 /output/rpm/ && cp -r /packages/rpm/rocky9 /output/rpm/ && cp -r /packages/rpm/rocky10 /output/rpm/' + sh -c 'cp -r /packages/rpm/centos7 /output/rpm/ && cp -r /packages/rpm/rocky8 /output/rpm/ && cp -r /packages/rpm/rocky9 /output/rpm/ && cp -r /packages/rpm/rocky10 /output/rpm/' echo "" echo "==============================================" @@ -52,7 +52,6 @@ echo "==============================================" echo "" echo "Artifacts:" echo " - Runtime image: logcorrelator:${VERSION}" -echo " - DEB package: ${OUTPUT_DIR}/deb/logcorrelator_${VERSION}_amd64.deb" echo " - RPM CentOS 7: ${OUTPUT_DIR}/rpm/centos7/logcorrelator-${VERSION}-1.el7.x86_64.rpm" echo " - RPM Rocky 8: ${OUTPUT_DIR}/rpm/rocky8/logcorrelator-${VERSION}-1.el8.x86_64.rpm" echo " - RPM Rocky 9: ${OUTPUT_DIR}/rpm/rocky9/logcorrelator-${VERSION}-1.el9.x86_64.rpm" @@ -66,11 +65,6 @@ echo " -v /var/log/logcorrelator:/var/log/logcorrelator \\" echo " -v ./config.yml:/etc/logcorrelator/logcorrelator.yml \\" echo " logcorrelator:latest" echo "" -echo " # Install DEB on Debian/Ubuntu:" -echo " sudo dpkg -i ${OUTPUT_DIR}/deb/logcorrelator_${VERSION}_amd64.deb" -echo " sudo systemctl enable logcorrelator" -echo " sudo systemctl start logcorrelator" -echo "" echo " # Install RPM on CentOS 7:" echo " sudo yum install -y ${OUTPUT_DIR}/rpm/centos7/logcorrelator-${VERSION}-1.el7.x86_64.rpm" echo " sudo systemctl enable logcorrelator" diff --git a/packaging/deb/postinst b/packaging/deb/postinst deleted file mode 100644 index 30134ad..0000000 --- a/packaging/deb/postinst +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash -set -e - -# postinst script for logcorrelator .deb package - -case "$1" in - configure) - # Create logcorrelator user and group if they don't exist - if ! getent group logcorrelator > /dev/null 2>&1; then - groupadd --system logcorrelator - fi - - if ! getent passwd logcorrelator > /dev/null 2>&1; then - useradd --system \ - --gid logcorrelator \ - --home-dir /var/lib/logcorrelator \ - --no-create-home \ - --shell /usr/sbin/nologin \ - logcorrelator - fi - - # Create necessary directories - mkdir -p /var/lib/logcorrelator - mkdir -p /var/run/logcorrelator - mkdir -p /var/log/logcorrelator - mkdir -p /etc/logcorrelator - - # Set proper ownership - chown -R logcorrelator:logcorrelator /var/lib/logcorrelator - chown -R logcorrelator:logcorrelator /var/run/logcorrelator - chown -R logcorrelator:logcorrelator /var/log/logcorrelator - chown -R logcorrelator:logcorrelator /etc/logcorrelator - - # Set proper permissions - chmod 750 /var/lib/logcorrelator - chmod 750 /var/log/logcorrelator - chmod 750 /etc/logcorrelator - - # Install default config if it doesn't exist - if [ ! -f /etc/logcorrelator/logcorrelator.yml ]; then - cp /usr/share/logcorrelator/logcorrelator.yml.example /etc/logcorrelator/logcorrelator.yml - chown logcorrelator:logcorrelator /etc/logcorrelator/logcorrelator.yml - chmod 640 /etc/logcorrelator/logcorrelator.yml - fi - - # Enable and start the service (if running in a real system, not container) - if [ -x /bin/systemctl ] && [ -d /run/systemd/system ]; then - systemctl daemon-reload - systemctl enable logcorrelator.service - if ! systemctl is-active --quiet logcorrelator.service; then - systemctl start logcorrelator.service - fi - fi - ;; - - abort-upgrade|abort-remove|abort-deconfigure) - # On abort, do nothing special - ;; - - *) - echo "postinst called with unknown argument '$1'" >&2 - exit 1 - ;; -esac - -exit 0 diff --git a/packaging/deb/postrm b/packaging/deb/postrm deleted file mode 100644 index f796389..0000000 --- a/packaging/deb/postrm +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -set -e - -# postrm script for logcorrelator .deb package - -case "$1" in - remove) - # On remove, leave config and data files - ;; - - purge) - # On purge, remove everything - - # Stop service if running - if [ -x /bin/systemctl ] && [ -d /run/systemd/system ]; then - systemctl stop logcorrelator.service 2>/dev/null || true - systemctl disable logcorrelator.service 2>/dev/null || true - systemctl daemon-reload - fi - - # Remove configuration - rm -rf /etc/logcorrelator - - # Remove data and logs - rm -rf /var/lib/logcorrelator - rm -rf /var/log/logcorrelator - rm -rf /var/run/logcorrelator - - # Remove user and group - if getent passwd logcorrelator > /dev/null 2>&1; then - userdel logcorrelator 2>/dev/null || true - fi - - if getent group logcorrelator > /dev/null 2>&1; then - groupdel logcorrelator 2>/dev/null || true - fi - ;; - - abort-upgrade|abort-remove|abort-deconfigure) - # On abort, restart the service - if [ -x /bin/systemctl ] && [ -d /run/systemd/system ]; then - systemctl start logcorrelator.service 2>/dev/null || true - fi - ;; - - *) - echo "postrm called with unknown argument '$1'" >&2 - exit 1 - ;; -esac - -exit 0 diff --git a/packaging/deb/prerm b/packaging/deb/prerm deleted file mode 100644 index a82dc01..0000000 --- a/packaging/deb/prerm +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -set -e - -# prerm script for logcorrelator .deb package - -case "$1" in - remove|deconfigure) - # Stop and disable the service - if [ -x /bin/systemctl ] && [ -d /run/systemd/system ]; then - systemctl stop logcorrelator.service 2>/dev/null || true - systemctl disable logcorrelator.service 2>/dev/null || true - systemctl daemon-reload - fi - ;; - - upgrade) - # On upgrade, just stop the service (will be restarted by postinst) - if [ -x /bin/systemctl ] && [ -d /run/systemd/system ]; then - systemctl stop logcorrelator.service 2>/dev/null || true - fi - ;; - - *) - echo "prerm called with unknown argument '$1'" >&2 - exit 1 - ;; -esac - -exit 0