qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>, "Thomas Huth" <thuth@redhat.com>,
	"Vladimir Sementsov-Ogievskiy" <vsementsov@virtuozzo.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	qemu-block@nongnu.org, "Alex Bennée" <alex.bennee@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>,
	"Willian Rampazzo" <willianr@redhat.com>,
	"Cleber Rosa" <crosa@redhat.com>, "John Snow" <jsnow@redhat.com>
Subject: [PATCH v8 31/31] gitlab: add python linters to CI
Date: Thu, 27 May 2021 17:17:15 -0400	[thread overview]
Message-ID: <20210527211715.394144-32-jsnow@redhat.com> (raw)
In-Reply-To: <20210527211715.394144-1-jsnow@redhat.com>

Add a Python container that has just enough juice for us to run the
Python code quality analysis tools. Base this container on Fedora,
because Fedora has very convenient packaging for testing multiple Python
versions.

We need python3, pip (for pulling packages), pipenv and virtualenv for
creating virtual environments, and tox for running tests. make is needed
for running 'make check-tox' and 'make venv-check' targets. Python3.10
is needed explicitly because the tox package only pulls in 3.6-3.9, but
we wish to test the forthcoming release of Python as well to help
predict any problems. Lastly, we need gcc to compile PyPI packages that
may not have a binary distribution available.


Add two tests:

check-python-pipenv uses pipenv to test a frozen, very explicit set of
packages against our minimum supported python version, Python 3.6. This
test is not allowed to fail. The dependencies this test uses do not
change unless python/Pipfile.lock is changed.

check-python-tox uses tox to install the latest versions of required
python dependencies against a wide array of Python versions from 3.6 to
3.9, even including the yet-to-be-released Python 3.10. This test is
allowed to fail with a warning.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
---
 .gitlab-ci.d/containers.yml            |  5 +++++
 .gitlab-ci.yml                         | 24 ++++++++++++++++++++++++
 tests/docker/dockerfiles/python.docker | 18 ++++++++++++++++++
 3 files changed, 47 insertions(+)
 create mode 100644 tests/docker/dockerfiles/python.docker

diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml
index 7b7ca3790df..9247613030d 100644
--- a/.gitlab-ci.d/containers.yml
+++ b/.gitlab-ci.d/containers.yml
@@ -269,3 +269,8 @@ amd64-opensuse-leap-container:
   extends: .container_job_template
   variables:
     NAME: opensuse-leap
+
+python-container:
+  extends: .container_job_template
+  variables:
+    NAME: python
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6a0d311cf40..181a55c84ed 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -792,6 +792,30 @@ check-patch:
     GIT_DEPTH: 1000
   allow_failure: true
 
+
+check-python-pipenv:
+  stage: test
+  image: $CI_REGISTRY_IMAGE/qemu/python:latest
+  script:
+    - make -C python venv-check
+  variables:
+    GIT_DEPTH: 1
+  needs:
+    job: python-container
+
+
+check-python-tox:
+  stage: test
+  image: $CI_REGISTRY_IMAGE/qemu/python:latest
+  script:
+    - make -C python check-tox
+  variables:
+    GIT_DEPTH: 1
+  needs:
+    job: python-container
+  allow_failure: true
+
+
 check-dco:
   stage: build
   image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
diff --git a/tests/docker/dockerfiles/python.docker b/tests/docker/dockerfiles/python.docker
new file mode 100644
index 00000000000..56d88417df4
--- /dev/null
+++ b/tests/docker/dockerfiles/python.docker
@@ -0,0 +1,18 @@
+# Python library testing environment
+
+FROM fedora:latest
+MAINTAINER John Snow <jsnow@redhat.com>
+
+# Please keep this list sorted alphabetically
+ENV PACKAGES \
+    gcc \
+    make \
+    pipenv \
+    python3 \
+    python3-pip \
+    python3-tox \
+    python3-virtualenv \
+    python3.10
+
+RUN dnf install -y $PACKAGES
+RUN rpm -q $PACKAGES | sort > /packages.txt
-- 
2.31.1



      parent reply	other threads:[~2021-05-27 21:42 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-27 21:16 [PATCH v8 00/31] python: create installable package John Snow
2021-05-27 21:16 ` [PATCH v8 01/31] python/console_socket: avoid one-letter variable John Snow
2021-05-27 21:16 ` [PATCH v8 02/31] python/machine: use subprocess.DEVNULL instead of open(os.path.devnull) John Snow
2021-05-27 21:16 ` [PATCH v8 03/31] python/machine: use subprocess.run instead of subprocess.Popen John Snow
2021-05-27 21:16 ` [PATCH v8 04/31] python/console_socket: Add a pylint ignore John Snow
2021-05-27 21:16 ` [PATCH v8 05/31] python/machine: Disable pylint warning for open() in _pre_launch John Snow
2021-05-27 21:16 ` [PATCH v8 06/31] python/machine: disable warning for Popen in _launch() John Snow
2021-05-27 21:16 ` [PATCH v8 07/31] python/machine: Trim line length to below 80 chars John Snow
2021-05-27 21:16 ` [PATCH v8 08/31] iotests/297: add --namespace-packages to mypy arguments John Snow
2021-05-27 21:16 ` [PATCH v8 09/31] python: create qemu packages John Snow
2021-05-27 21:16 ` [PATCH v8 10/31] python: add qemu package installer John Snow
2021-05-27 21:16 ` [PATCH v8 11/31] python: add VERSION file John Snow
2021-05-27 21:16 ` [PATCH v8 12/31] python: add directory structure README.rst files John Snow
2021-05-27 21:16 ` [PATCH v8 13/31] python: add MANIFEST.in John Snow
2021-05-27 21:16 ` [PATCH v8 14/31] python: Add pipenv support John Snow
2021-05-27 21:16 ` [PATCH v8 15/31] python: add pylint import exceptions John Snow
2021-05-27 21:17 ` [PATCH v8 16/31] python: move pylintrc into setup.cfg John Snow
2021-05-27 21:17 ` [PATCH v8 17/31] python: add pylint to pipenv John Snow
2021-05-27 21:17 ` [PATCH v8 18/31] python: move flake8 config to setup.cfg John Snow
2021-05-27 21:17 ` [PATCH v8 19/31] python: add excluded dirs to flake8 config John Snow
2021-05-27 21:17 ` [PATCH v8 20/31] python: Add flake8 to pipenv John Snow
2021-05-27 21:17 ` [PATCH v8 21/31] python: move mypy.ini into setup.cfg John Snow
2021-05-27 21:17 ` [PATCH v8 22/31] python: add mypy to pipenv John Snow
2021-05-27 21:17 ` [PATCH v8 23/31] python: move .isort.cfg into setup.cfg John Snow
2021-05-27 21:17 ` [PATCH v8 24/31] python/qemu: add isort to pipenv John Snow
2021-05-27 21:17 ` [PATCH v8 25/31] python/qemu: add qemu package itself " John Snow
2021-05-27 21:17 ` [PATCH v8 26/31] python: add devel package requirements to setuptools John Snow
2021-05-27 21:17 ` [PATCH v8 27/31] python: add avocado-framework and tests John Snow
2021-05-27 21:17 ` [PATCH v8 28/31] python: add Makefile for some common tasks John Snow
2021-05-27 21:17 ` [PATCH v8 29/31] python: add .gitignore John Snow
2021-05-27 21:17 ` [PATCH v8 30/31] python: add tox support John Snow
2021-05-27 21:17 ` John Snow [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210527211715.394144-32-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=vsementsov@virtuozzo.com \
    --cc=wainersm@redhat.com \
    --cc=willianr@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).