From 953bfb1868595a6100522bfd92f4ea4c47e6be1b Mon Sep 17 00:00:00 2001 From: Matej Matuska Date: Mon, 24 Jun 2024 17:00:09 +0200 Subject: [PATCH 74/92] Add RHEL9 container for building and testing Adding RHEL 9 containers so we can start to test & build packages in RHEL 9 environemnt. Since `python3-virtualenv` package is not available in the RHEL 9 UBI, a workaround is introduced `make install-deps-fedora`, which is used by the testing containers. If not able to install the package, `pip install virtualenv` is used as a fallback as this is working in the image. The relatively recent Python version used in the container means there is also a relative recent Pylint verision, which introduces 2+ new checks. --- Makefile | 31 +++++++++++++++++------ utils/container-builds/Containerfile.ubi9 | 10 ++++++++ utils/container-tests/Containerfile.rhel9 | 18 +++++++++++++ 3 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 utils/container-builds/Containerfile.ubi9 create mode 100644 utils/container-tests/Containerfile.rhel9 diff --git a/Makefile b/Makefile index a62d0ccc..5b2bc4d2 100644 --- a/Makefile +++ b/Makefile @@ -111,7 +111,7 @@ help: @echo " packaging" @echo " srpm create the SRPM" @echo " build_container create the RPM in container" - @echo " - set BUILD_CONTAINER to el7 or el8" + @echo " - set BUILD_CONTAINER to el7, el8 or el9" @echo " - don't run more than one build at the same time" @echo " since containers operate on the same files!" @echo " copr_build create the COPR build using the COPR TOKEN" @@ -164,7 +164,7 @@ help: @echo " PR=7 SUFFIX='my_additional_suffix' make " @echo " MR=6 COPR_CONFIG='path/to/the/config/copr/file' make " @echo " ACTOR= TEST_LIBS=y make test" - @echo " BUILD_CONTAINER=rhel7 make build_container" + @echo " BUILD_CONTAINER=el7 make build_container" @echo " TEST_CONTAINER=f34 make test_container" @echo " CONTAINER_TOOL=docker TEST_CONTAINER=rhel7 make test_container_no_lint" @echo "" @@ -258,12 +258,15 @@ build_container: el8) \ CONT_FILE="utils/container-builds/Containerfile.ubi8"; \ ;; \ + el9) \ + CONT_FILE="utils/container-builds/Containerfile.ubi9"; \ + ;; \ "") \ echo "BUILD_CONTAINER must be set"; \ exit 1; \ ;; \ *) \ - echo "Available containers are el7, el8"; \ + echo "Available containers are el7, el8, el9"; \ exit 1; \ ;; \ esac && \ @@ -305,12 +308,20 @@ install-deps: $(VENVNAME)/bin/pip install -I "git+https://github.com/oamg/leapp.git@refs/pull/$(REQ_LEAPP_PR)/head"; \ fi $(_PYTHON_VENV) utils/install_actor_deps.py --actor=$(ACTOR) --repos="$(TEST_PATHS)" + install-deps-fedora: @# Check the necessary rpms are installed for py3 (and py2 below) - if ! rpm -q git findutils python3-virtualenv gcc; then \ - if ! dnf install -y git findutils python3-virtualenv gcc; then \ + if ! rpm -q git findutils gcc; then \ + if ! dnf install -y git findutils gcc; then \ echo 'Please install the following rpms via the command: ' \ - 'sudo dnf install -y git findutils python3-virtualenv gcc'; \ + 'sudo dnf install -y git findutils gcc'; \ + exit 1; \ + fi; \ + fi + if ! command -v virtualenv; then \ + if ! (dnf install -y python3-virtualenv || pip install virtualenv); then \ + echo 'Please install the following packages via the command: ' \ + 'sudo dnf install -y python3-virtualenv or pip install virtualenv'; \ exit 1; \ fi; \ fi @@ -432,6 +443,10 @@ test_container: export CONT_FILE="utils/container-tests/Containerfile.rhel8"; \ export _VENV="python3.6"; \ ;; \ + rhel9) \ + export CONT_FILE="utils/container-tests/Containerfile.rhel9"; \ + export _VENV="python3.9"; \ + ;; \ *) \ echo "Error: Available containers are: f34, rhel7, rhel8"; exit 1; \ ;; \ @@ -481,7 +496,7 @@ test_container_all_no_lint: # clean all testing and building containers and their images clean_containers: @for i in "leapp-repo-tests-f34" "leapp-repo-tests-rhel7" "leapp-repo-tests-rhel8" \ - "leapp-repo-build-el7" "leapp-repo-build-el8"; do \ + "leapp-repo-tests-rhel9" "leapp-repo-build-el7" "leapp-repo-build-el8"; do \ $(_CONTAINER_TOOL) kill "$$i-cont" || :; \ $(_CONTAINER_TOOL) rm "$$i-cont" || :; \ $(_CONTAINER_TOOL) rmi "$$i" || :; \ @@ -492,7 +507,7 @@ fast_lint: FILES_TO_LINT="$$(git diff --name-only $(MASTER_BRANCH) --diff-filter AMR | grep '\.py$$')"; \ if [[ -n "$$FILES_TO_LINT" ]]; then \ pylint -j 0 $$FILES_TO_LINT $(PYLINT_ARGS) && \ - flake8 $$FILES_TO_LINT $(FLAKE8_ARG); \ + flake8 $$FILES_TO_LINT $(FLAKE8_ARGS); \ LINT_EXIT_CODE="$$?"; \ if [[ "$$LINT_EXIT_CODE" != "0" ]]; then \ exit $$LINT_EXIT_CODE; \ diff --git a/utils/container-builds/Containerfile.ubi9 b/utils/container-builds/Containerfile.ubi9 new file mode 100644 index 00000000..53567c08 --- /dev/null +++ b/utils/container-builds/Containerfile.ubi9 @@ -0,0 +1,10 @@ +FROM registry.access.redhat.com/ubi9/ubi:latest + +VOLUME /repo + +RUN dnf update -y && \ + dnf install -y python3-devel rpm-build make git + +WORKDIR /repo +ENV DIST_VERSION 9 +ENTRYPOINT make _build_local diff --git a/utils/container-tests/Containerfile.rhel9 b/utils/container-tests/Containerfile.rhel9 new file mode 100644 index 00000000..2261b2ad --- /dev/null +++ b/utils/container-tests/Containerfile.rhel9 @@ -0,0 +1,18 @@ +FROM registry.access.redhat.com/ubi9/ubi:latest + +VOLUME /repo + +RUN dnf update -y && \ + dnf install -y python3-setuptools python3-pip make git rsync + +ENV PYTHON_VENV python3.9 + +COPY . /repocopy + +WORKDIR /repocopy + +RUN rm -rf tut* + +RUN make clean && make install-deps-fedora + +WORKDIR / -- 2.42.0