Improve install tests
This commit is contained in:
parent
ddbb276b9e
commit
15c26e1a29
81
Makefile
81
Makefile
@ -1,17 +1,30 @@
|
|||||||
PACKAGE_NAME := pgmon
|
PACKAGE_NAME := pgmon
|
||||||
VERSION := 1.0
|
VERSION := 1.0
|
||||||
|
|
||||||
|
SCRIPT := src/$(PACKAGE_NAME).py
|
||||||
|
|
||||||
|
# Where packages are built
|
||||||
BUILD_DIR := build
|
BUILD_DIR := build
|
||||||
|
|
||||||
|
# OS images used to build packages
|
||||||
|
# These are created with: make docker
|
||||||
|
# Targets are at the bottom of this file
|
||||||
DEB_IMAGE := debian-package-builder
|
DEB_IMAGE := debian-package-builder
|
||||||
RPM_IMAGE := rpm-package-builder
|
RPM_IMAGE := rpm-package-builder
|
||||||
EL7_IMAGE := el7-package-builder
|
EL7_IMAGE := el7-package-builder
|
||||||
|
|
||||||
SCRIPT := src/$(PACKAGE_NAME).py
|
# List of versions to test for each distro
|
||||||
|
INSTALL_TEST_DEBIAN_RELEASES := 10 11
|
||||||
|
INSTALL_TEST_REDHAT_RELEASES := 8 9
|
||||||
|
INSTALL_TEST_REDHAT_OLD_RELEASES := 7
|
||||||
|
INSTALL_TEST_UBUNTU_RELEASES := 20.04 22.04 24.04
|
||||||
|
|
||||||
|
# The default release to test for each distro (basically pick the last one in the list)
|
||||||
|
INSTALL_TEST_DEBIAN_RELEASE := $(lastword $(INSTALL_TEST_DEBIAN_RELEASES))
|
||||||
|
INSTALL_TEST_REDHAT_RELEASE := $(lastword $(INSTALL_TEST_REDHAT_RELEASES))
|
||||||
|
INSTALL_TEST_REDHAT_OLD_RELEASE := $(lastword $(INSTALL_TEST_REDHAT_OLD_RELEASES))
|
||||||
|
INSTALL_TEST_UBUNTU_RELEASE := $(lastword $(INSTALL_TEST_UBUNTU_RELEASES))
|
||||||
|
|
||||||
INSTALL_TEST_DEBIAN := 11
|
|
||||||
INSTALL_TEST_REDHAT := 9
|
|
||||||
INSTALL_TEST_UBUNTU := 24.04
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# These targets are the main ones to use for most things.
|
# These targets are the main ones to use for most things.
|
||||||
@ -21,6 +34,7 @@ INSTALL_TEST_UBUNTU := 24.04
|
|||||||
|
|
||||||
all: deb rpm
|
all: deb rpm
|
||||||
|
|
||||||
|
# Create a deb package
|
||||||
deb:
|
deb:
|
||||||
mkdir -p $(BUILD_DIR)/deb
|
mkdir -p $(BUILD_DIR)/deb
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
@ -29,6 +43,7 @@ deb:
|
|||||||
--user $(shell id -u):$(shell id -g) \
|
--user $(shell id -u):$(shell id -g) \
|
||||||
$(DEB_IMAGE)
|
$(DEB_IMAGE)
|
||||||
|
|
||||||
|
# Create an rpm package
|
||||||
rpm:
|
rpm:
|
||||||
mkdir -p $(BUILD_DIR)/rpm
|
mkdir -p $(BUILD_DIR)/rpm
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
@ -37,18 +52,22 @@ rpm:
|
|||||||
--user $(shell id -u):$(shell id -g) \
|
--user $(shell id -u):$(shell id -g) \
|
||||||
$(RPM_IMAGE)
|
$(RPM_IMAGE)
|
||||||
|
|
||||||
|
# Create a tarball
|
||||||
tgz:
|
tgz:
|
||||||
rm -rf $(BUILD_DIR)/tgz/root
|
rm -rf $(BUILD_DIR)/tgz/root
|
||||||
mkdir -p $(BUILD_DIR)/tgz/root
|
mkdir -p $(BUILD_DIR)/tgz/root
|
||||||
$(MAKE) install DESTDIR=$(BUILD_DIR)/tgz/root
|
$(MAKE) install DESTDIR=$(BUILD_DIR)/tgz/root
|
||||||
tar -cz -f $(BUILD_DIR)/tgz/$(PACKAGE_NAME)-$(VERSION).tgz -C $(BUILD_DIR)/tgz/root .
|
tar -cz -f $(BUILD_DIR)/tgz/$(PACKAGE_NAME)-$(VERSION).tgz -C $(BUILD_DIR)/tgz/root .
|
||||||
|
|
||||||
|
# Clean up the build directory
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BUILD_DIR)
|
rm -rf $(BUILD_DIR)
|
||||||
|
|
||||||
|
# Run unit tests for the script
|
||||||
test:
|
test:
|
||||||
cd src ; python3 -m unittest
|
cd src ; python3 -m unittest
|
||||||
|
|
||||||
|
# Install the script at the specified base directory
|
||||||
install:
|
install:
|
||||||
# Set up directories
|
# Set up directories
|
||||||
mkdir -p $(DESTDIR)/etc/$(PACKAGE_NAME)
|
mkdir -p $(DESTDIR)/etc/$(PACKAGE_NAME)
|
||||||
@ -74,24 +93,57 @@ install:
|
|||||||
# Install logrotate config
|
# Install logrotate config
|
||||||
cp logrotate/${PACKAGE_NAME}.logrotate ${DESTDIR}/etc/logrotate.d/${PACKAGE_NAME}
|
cp logrotate/${PACKAGE_NAME}.logrotate ${DESTDIR}/etc/logrotate.d/${PACKAGE_NAME}
|
||||||
|
|
||||||
install-tests: debian-install-test rocky-install-test ubuntu-install-test
|
|
||||||
|
|
||||||
|
# Run all of the install tests
|
||||||
|
install-tests: all-debian-install-tests all-redhat-install-tests all-ubuntu-install-tests
|
||||||
|
|
||||||
|
.PHONY: all-debian-install-tests all-redhat-install-tests all-ubuntu-install-tests
|
||||||
|
|
||||||
|
# Run all of the Debian install tests
|
||||||
|
all-debian-install-tests:
|
||||||
|
$(foreach version, $(INSTALL_TEST_DEBIAN_RELEASES), $(MAKE) debian-install-test INSTALL_TEST_DEBIAN_RELEASE=$(version) ;)
|
||||||
|
|
||||||
|
# Run all of the RedHat install tests
|
||||||
|
all-redhat-install-tests:
|
||||||
|
$(foreach version, $(INSTALL_TEST_REDHAT_RELEASES), $(MAKE) redhat-install-test INSTALL_TEST_REDHAT_RELEASE=$(version) ;)
|
||||||
|
|
||||||
|
# Run all of the *old* RedHat install tests
|
||||||
|
all-redhat-old-install-tests:
|
||||||
|
$(foreach version, $(INSTALL_TEST_REDHAT_OLD_RELEASES), $(MAKE) redhat-old-install-test INSTALL_TEST_REDHAT_OLD_RELEASE=$(version) ;)
|
||||||
|
|
||||||
|
# Run all of the Ubuntu install tests
|
||||||
|
all-ubuntu-install-tests:
|
||||||
|
$(foreach version, $(INSTALL_TEST_REDHAT_RELEASES), $(MAKE) ubuntu-install-test INSTALL_TEST_REDHAT_RELEASE=$(version) ;)
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: debian-install-test redhat-install-test rhel-old-install-test ubuntu-install-test
|
||||||
|
|
||||||
|
# Run the specified (or latest) Debian install test
|
||||||
debian-install-test:
|
debian-install-test:
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v ./$(BUILD_DIR)/deb:/output \
|
-v ./$(BUILD_DIR)/deb:/output \
|
||||||
debian:$(INSTALL_TEST_DEBIAN) \
|
debian:$(INSTALL_TEST_DEBIAN_RELEASE) \
|
||||||
bash -c 'apt-get update && apt-get install -y /output/$(PACKAGE_NAME)_$(VERSION).deb'
|
bash -c 'apt-get update && apt-get install -y /output/$(PACKAGE_NAME)_$(VERSION).deb'
|
||||||
|
|
||||||
rocky-install-test:
|
# Run the specified (or latest) RedHat install test
|
||||||
|
redhat-install-test:
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v ./$(BUILD_DIR)/rpm:/output \
|
-v ./$(BUILD_DIR)/rpm:/output \
|
||||||
rockylinux:$(INSTALL_TEST_REDHAT) \
|
rockylinux:$(INSTALL_TEST_REDHAT_RELEASE) \
|
||||||
bash -c 'yum makecache && yum install -y /output/$(PACKAGE_NAME)-$(VERSION)-1.el$(INSTALL_TEST_REDHAT).noarch.rpm'
|
bash -c 'dnf makecache && dnf install -y /output/$(PACKAGE_NAME)-$(VERSION).rpm'
|
||||||
|
|
||||||
|
# Run the specified (or latest) *old* RedHat install test
|
||||||
|
rhel-old-install-test:
|
||||||
|
docker run --rm \
|
||||||
|
-v ./$(BUILD_DIR)/rpm:/output \
|
||||||
|
rockylinux:$(INSTALL_TEST_REDHAT_OLD_RELEASE) \
|
||||||
|
bash -c 'yum makecache && yum install -y /output/$(PACKAGE_NAME)-$(VERSION).el$(INSTALL_TEST_REDHAT_OLD_RELEASE).rpm'
|
||||||
|
|
||||||
|
# Run the specified (or latest) Ubuntu install test
|
||||||
ubuntu-install-test:
|
ubuntu-install-test:
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v ./$(BUILD_DIR)/deb:/output \
|
-v ./$(BUILD_DIR)/deb:/output \
|
||||||
ubuntu:$(INSTALL_TEST_UBUNTU) \
|
ubuntu:$(INSTALL_TEST_UBUNTU_RELEASE) \
|
||||||
bash -c 'apt-get update && apt-get install -y /output/$(PACKAGE_NAME)_$(VERSION).deb'
|
bash -c 'apt-get update && apt-get install -y /output/$(PACKAGE_NAME)_$(VERSION).deb'
|
||||||
|
|
||||||
|
|
||||||
@ -120,6 +172,15 @@ package-rpm:
|
|||||||
-bb /output/SPECS/$(PACKAGE_NAME).spec
|
-bb /output/SPECS/$(PACKAGE_NAME).spec
|
||||||
cp /output/RPMS/noarch/*.rpm /output/
|
cp /output/RPMS/noarch/*.rpm /output/
|
||||||
|
|
||||||
|
# RPM package creation logic for old versions of RedHat (ie: 7)
|
||||||
|
package-rpm-old:
|
||||||
|
mkdir -p /output/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
||||||
|
cp RPM-OLD/$(PACKAGE_NAME).spec /output/SPECS/
|
||||||
|
rpmbuild --define '_topdir /output' \
|
||||||
|
--define 'version $(VERSION)' \
|
||||||
|
-bb /output/SPECS/$(PACKAGE_NAME).spec
|
||||||
|
cp /output/RPMS/noarch/*.rpm /output/
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Container targets
|
# Container targets
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user