Unify packaging: use Docker + fpm for DEB and RPM builds

- Add Dockerfile.package with multi-stage build (builder, package-builder, output)
- Update Makefile to use new Dockerfile.package for package-deb and package-rpm targets
- Replace dpkg-deb and rpmbuild with fpm for consistent packaging
- Both DEB and RPM packages now built from single Dockerfile

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
Jacquin Antoine
2026-02-27 15:31:55 +01:00
parent 952c929f55
commit f8dc2d4d82
2 changed files with 152 additions and 22 deletions

View File

@ -94,33 +94,24 @@ fmt:
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 \
package-deb:
mkdir -p build/deb build/rpm
docker build --target output -t ja4sentinel-packager:latest \
--build-arg VERSION=$(PKG_VERSION) \
--build-arg ARCH=amd64 \
-f packaging/Dockerfile.deb .
@echo "Extracting DEB packages from Docker image..."
@for f in $$(docker run --rm ja4sentinel-packager-deb sh -c 'ls /packages/*.deb 2>/dev/null'); do \
docker run --rm ja4sentinel-packager-deb sh -c "cat $$f" > build/deb/$$(basename $$f); \
done
@for f in $$(docker run --rm ja4sentinel-packager-deb sh -c 'ls /packages/*.sha256 2>/dev/null'); do \
docker run --rm ja4sentinel-packager-deb sh -c "cat $$f" > build/deb/$$(basename $$f); \
done || true
-f Dockerfile.package .
@echo "Extracting packages from Docker image..."
@docker run --rm ja4sentinel-packager:latest sh -c 'cp /packages/deb/*.deb /tmp/' && \
docker cp $$(docker create ja4sentinel-packager:latest):/packages/deb/. build/deb/ && \
docker cp $$(docker create ja4sentinel-packager:latest):/packages/rpm/. build/rpm/ || \
docker run --rm -v $(PWD)/build:/output ja4sentinel-packager:latest sh -c 'cp -r /packages/deb /output/ && cp -r /packages/rpm /output/'
@echo "DEB packages created:"
ls -la build/deb/
@echo "RPM packages created:"
ls -la build/rpm/
## package-rpm: Build RPM package (requires Docker)
package-rpm: build-linux
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/rpm/ja4sentinel.rpm
@echo "RPM package created: build/rpm/ja4sentinel.rpm"
ls -la build/rpm/*.rpm
package-rpm: package-deb
@echo "RPM built together with DEB in Dockerfile.package"
## test-package-deb: Test DEB package installation in Docker
test-package-deb: package-deb