Skip to content

Commit

Permalink
gitlab: add python linters to CI
Browse files Browse the repository at this point in the history
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>
Message-id: 20210527211715.394144-32-jsnow@redhat.com
[Fix rebase conflict over .gitlab-ci.yml --js]
Signed-off-by: John Snow <jsnow@redhat.com>
  • Loading branch information
jnsnow committed Jun 1, 2021
1 parent 3c8de38 commit 6b9c277
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .gitlab-ci.d/containers.yml
Expand Up @@ -43,3 +43,8 @@ amd64-opensuse-leap-container:
extends: .container_job_template
variables:
NAME: opensuse-leap

python-container:
extends: .container_job_template
variables:
NAME: python
21 changes: 21 additions & 0 deletions .gitlab-ci.d/static_checks.yml
Expand Up @@ -24,3 +24,24 @@ check-dco:
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
when: never
- when: on_success

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
18 changes: 18 additions & 0 deletions 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

0 comments on commit 6b9c277

Please sign in to comment.