diff --git a/architecture.yml b/architecture.yml index 32a0743..3da7538 100644 --- a/architecture.yml +++ b/architecture.yml @@ -570,10 +570,89 @@ evolution: dev_tools: usage_guidelines: - "Les outils IA doivent lire architecture.yml avant de générer ou modifier du code." - - "Les outils de test peuvent s’appuyer sur ci_cd.docker et ci_cd.make_targets pour générer des scripts / pipelines." + - "Les outils de test peuvent s'appuyer sur ci_cd.docker et ci_cd.make_targets pour générer des scripts / pipelines." future_extensions: - "Génération automatique de Dockerfile.dev et Dockerfile à partir de cette section." - - "Génération de fichiers docker-compose.test.yml pour les scénarios d’intégration." + - "Génération de fichiers docker-compose.test.yml pour les scénarios d'intégration." + +packaging: + description: > + ja4sentinel est distribué sous forme de packages .deb (Debian/Ubuntu) et + .rpm (Rocky Linux/RHEL/CentOS), construits intégralement dans Docker avec fpm. + formats: + - deb + - rpm + target_distros: + deb: + - debian-12+ + - ubuntu-22.04+ + rpm: + - rocky-linux-8+ + - rocky-linux-9+ + - rhel-8+ + - rhel-9+ + tool: fpm + build_pipeline: + dockerfile: Dockerfile.package + stages: + - name: builder + description: > + Compilation du binaire Go avec CGO_ENABLED=1 pour libpcap. + GOOS=linux GOARCH=amd64 pour un binaire statique. + - name: package_builder + description: > + Installation de fpm, rpm, dpkg-dev. Création de l'arborescence + et exécution de fpm pour générer DEB et RPM. + - name: output + description: > + Image Alpine minimale contenant les packages dans /packages/deb et /packages/rpm. + files: + binary: + source: dist/ja4sentinel-linux-amd64 + dest: /usr/bin/ja4sentinel + mode: "0755" + systemd: + source: packaging/systemd/ja4sentinel.service + dest: /usr/lib/systemd/system/ja4sentinel.service + mode: "0644" + config: + - source: packaging/systemd/config.yml + dest: /etc/ja4sentinel/config.yml.default + mode: "0640" + config_file: true + - source: packaging/systemd/config.yml + dest: /usr/share/ja4sentinel/config.yml + mode: "0640" + directories: + - path: /var/lib/ja4sentinel + mode: "0750" + - path: /var/log/ja4sentinel + mode: "0750" + - path: /var/run/ja4sentinel + mode: "0750" + - path: /etc/ja4sentinel + mode: "0750" + maintainer_scripts: + deb: + postinst: packaging/deb/postinst + prerm: packaging/deb/prerm + postrm: packaging/deb/postrm + rpm: + post: packaging/deb/postinst + preun: packaging/deb/prerm + postun: packaging/deb/postrm + dependencies: + deb: + - systemd + - libpcap0.8 + rpm: + - systemd + - libpcap >= 1.9.0 + verify: + deb: + command: docker run --rm -v $(pwd)/build/deb:/packages debian:latest sh -c "apt-get update && apt-get install -y /packages/*.deb" + rpm: + command: docker run --rm -v $(pwd)/build/rpm:/packages rockylinux:8 sh -c "dnf install -y /packages/*.rpm" service: systemd: