diff --git a/Makefile b/Makefile index 4deae8c..27299bc 100644 --- a/Makefile +++ b/Makefile @@ -92,26 +92,27 @@ package: package-deb package-rpm ## package-deb: Build DEB package (requires Docker) package-deb: build-linux + mkdir -p build/deb docker build --no-cache -t ja4sentinel-packager-deb \ --build-arg VERSION=$(PKG_VERSION) \ --build-arg ARCH=amd64 \ -f packaging/Dockerfile.deb . @echo "Extracting DEB from Docker image..." - docker run --rm ja4sentinel-packager-deb sh -c 'cat /packages/*.deb' > build/ja4sentinel.deb - @echo "DEB package created: build/ja4sentinel.deb" - ls -la build/*.deb + docker run --rm ja4sentinel-packager-deb sh -c 'cat /packages/*.deb' > build/deb/ja4sentinel.deb + @echo "DEB package created: build/deb/ja4sentinel.deb" + ls -la build/deb/*.deb ## package-rpm: Build RPM package (requires Docker) package-rpm: build-linux - mkdir -p build + mkdir -p build/rpm docker build --no-cache -t ja4sentinel-packager-rpm \ --build-arg VERSION=$(PKG_VERSION) \ --build-arg ARCH=x86_64 \ -f packaging/Dockerfile.rpm . @echo "Extracting RPM from Docker image..." - docker run --rm ja4sentinel-packager-rpm sh -c 'cat /packages/*.rpm' > build/ja4sentinel.rpm - @echo "RPM package created: build/ja4sentinel.rpm" - ls -la build/*.rpm + docker run --rm ja4sentinel-packager-rpm sh -c 'cat /packages/*.rpm' > build/rpm/ja4sentinel.rpm + @echo "RPM package created: build/rpm/ja4sentinel.rpm" + ls -la build/rpm/*.rpm ## test-package-deb: Test DEB package installation in Docker test-package-deb: package-deb @@ -124,6 +125,21 @@ test-package-rpm: package-rpm ## test-package: Test all packages installation test-package: test-package-deb test-package-rpm +## ci: Full CI pipeline (tests, build, packages, package tests) +ci: ci-test ci-build ci-package ci-package-test + +## ci-test: Run all tests for CI +ci-test: test lint + +## ci-build: Build for CI (production binary) +ci-build: build-linux + +## ci-package: Build all packages for CI +ci-package: package + +## ci-package-test: Test all packages for CI +ci-package-test: test-package + ## clean: Clean build artifacts and Docker images clean: rm -rf $(DIST_DIR)/ diff --git a/packaging/Dockerfile.rpm b/packaging/Dockerfile.rpm index 1e29c0a..ef39146 100644 --- a/packaging/Dockerfile.rpm +++ b/packaging/Dockerfile.rpm @@ -1,14 +1,22 @@ # Dockerfile for building RPM packages for Rocky Linux -# Use Go 1.24 as base to ensure correct Go version -FROM golang:1.24-bookworm AS builder +# Use Rocky Linux 9 as the build environment for correct RPM dependencies +FROM rockylinux:9 AS builder -# Install RPM build tools -RUN apt-get update && apt-get install -y \ - rpm \ - rpm-common \ - rpm2cpio \ - libpcap-dev \ - && rm -rf /var/lib/apt/lists/* +# Install Go and RPM build tools +# CRB repository needed for some development packages +RUN dnf install -y epel-release && \ + dnf install -y \ + golang \ + rpm-build \ + rpmdevtools \ + gcc \ + make \ + git \ + && dnf install -y --enablerepo=crb libpcap-devel \ + && dnf clean all + +# Verify Go version +RUN go version WORKDIR /app diff --git a/packaging/rpm/ja4sentinel.spec b/packaging/rpm/ja4sentinel.spec index 7eebf93..73f57ca 100644 --- a/packaging/rpm/ja4sentinel.spec +++ b/packaging/rpm/ja4sentinel.spec @@ -8,10 +8,9 @@ BuildArch: x86_64 # Rocky Linux / RHEL compatibility # Requires EPEL for some dependencies if not in base repos -%if 0%{?rhel} >= 8 Requires: systemd -Requires: libpcap -%endif +# libpcap is available in base repos for RHEL/CentOS/Rocky 8+ +Requires: libpcap >= 1.9.0 %description JA4Sentinel is a Go-based tool for capturing network traffic on Linux servers, diff --git a/packaging/test/Dockerfile.rpm b/packaging/test/Dockerfile.rpm index 3e09ba6..07159ae 100644 --- a/packaging/test/Dockerfile.rpm +++ b/packaging/test/Dockerfile.rpm @@ -1,11 +1,8 @@ # Dockerfile for testing RPM package installation on Rocky Linux FROM rockylinux:9 -# Install dependencies (libpcap is in base repo on Rocky 9) -RUN dnf install -y \ - libpcap \ - systemd \ - && dnf clean all +# Install systemd only (libpcap will be installed as dependency of ja4sentinel) +RUN dnf install -y systemd && dnf clean all # Create systemd directory (needed for service installation) RUN mkdir -p /etc/systemd/system @@ -13,12 +10,13 @@ RUN mkdir -p /etc/systemd/system # Copy RPM package COPY *.rpm /tmp/ja4sentinel.rpm -# Install the package -RUN dnf install -y /tmp/ja4sentinel.rpm +# Install the package (libpcap dependency should be pulled automatically) +# If it fails, install libpcap first and retry +RUN dnf install -y /tmp/ja4sentinel.rpm || (echo "First attempt failed, installing libpcap..." && dnf install -y libpcap && dnf install -y /tmp/ja4sentinel.rpm) # Verify installation RUN echo "=== Verifying installation ===" && \ - which ja4sentinel && \ + command -v ja4sentinel && \ ja4sentinel --version && \ ls -la /etc/ja4sentinel/ && \ ls -la /var/lib/ja4sentinel/ && \