diff --git a/.github/workflows/lint-python.yml b/.github/workflows/lint-python.yml index 11d2332b6..276b828e2 100644 --- a/.github/workflows/lint-python.yml +++ b/.github/workflows/lint-python.yml @@ -14,6 +14,6 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.13' - run: pip3 install flake8 - run: flake8 diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index d02e3250c..06ca9f46e 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.13' cache: 'pip' cache-dependency-path: | Tests/requirements.txt diff --git a/Tests/Dockerfile b/Tests/Dockerfile index a71a12e96..961b9a2ae 100644 --- a/Tests/Dockerfile +++ b/Tests/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM python:3.10 +FROM python:3.13-slim WORKDIR /scs-compliance @@ -8,6 +8,10 @@ ARG SONOBUOY_VERSION=0.57.3 ARG TARGETOS ARG TARGETARCH +RUN --mount=type=cache,target=/var/cache/apt \ + --mount=type=cache,target=/var/lib/apt \ + apt-get update && apt-get install -y --no-install-recommends wget + RUN set -eux; \ wget -qO- https://github.com/vmware-tanzu/sonobuoy/releases/download/v$SONOBUOY_VERSION/sonobuoy_${SONOBUOY_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz \ | tar -xz -C /usr/local/bin; \ @@ -16,8 +20,10 @@ RUN set -eux; \ COPY requirements.txt requirements.txt COPY iaas/requirements.txt iaas-requirements.txt COPY kaas/requirements.txt kaas-requirements.txt -RUN pip3 install -r requirements.txt -r iaas-requirements.txt -r kaas-requirements.txt +RUN --mount=type=cache,target=/root/.cache \ + pip3 install -r requirements.txt -r iaas-requirements.txt -r kaas-requirements.txt +RUN tempest init /tempest COPY . . ENTRYPOINT ["./scs-compliance-check.py"] diff --git a/Tests/iaas/requirements.in b/Tests/iaas/requirements.in index 28f829e3c..104c7e0e6 100644 --- a/Tests/iaas/requirements.in +++ b/Tests/iaas/requirements.in @@ -1,3 +1,4 @@ -c ../requirements.txt boto3 openstacksdk +tempest diff --git a/Tests/iaas/requirements.txt b/Tests/iaas/requirements.txt index 923c326f7..6661cf108 100644 --- a/Tests/iaas/requirements.txt +++ b/Tests/iaas/requirements.txt @@ -1,9 +1,18 @@ # -# This file is autogenerated by pip-compile with Python 3.12 +# This file is autogenerated by pip-compile with Python 3.13 # by the following command: # -# pip-compile requirements.in +# pip-compile --no-index iaas/requirements.in # +attrs==26.1.0 + # via + # -c requirements.txt + # jsonschema + # referencing +autopage==0.6.0 + # via cliff +bcrypt==5.0.0 + # via paramiko boto3==1.42.86 # via -r iaas/requirements.in botocore==1.42.86 @@ -12,34 +21,62 @@ botocore==1.42.86 # s3transfer certifi==2026.2.25 # via - # -c iaas/../requirements.txt + # -c requirements.txt # requests cffi==2.0.0 # via - # -c iaas/../requirements.txt + # -c requirements.txt # cryptography + # pynacl charset-normalizer==3.4.7 # via - # -c iaas/../requirements.txt + # -c requirements.txt # requests +cliff==4.16.0 + # via + # stestr + # tempest +cmd2==4.2.4 + # via cliff cryptography==46.0.7 # via - # -c iaas/../requirements.txt + # -c requirements.txt # openstacksdk + # paramiko + # tempest +debtcollector==3.1.0 + # via + # oslo-concurrency + # oslo-log + # tempest decorator==5.2.1 # via # dogpile-cache # openstacksdk +defusedxml==0.7.1 + # via tempest dogpile-cache==1.5.0 # via openstacksdk +fasteners==0.20 + # via + # oslo-concurrency + # tempest +fixtures==4.3.2 + # via + # stestr + # tempest idna==3.11 # via - # -c iaas/../requirements.txt + # -c requirements.txt # requests +invoke==3.0.3 + # via paramiko iso8601==2.1.0 # via # keystoneauth1 # openstacksdk + # oslo-utils + # python-subunit jmespath==1.1.0 # via # boto3 @@ -49,62 +86,184 @@ jsonpatch==1.33 # via openstacksdk jsonpointer==3.1.1 # via jsonpatch +jsonschema==4.26.0 + # via tempest +jsonschema-specifications==2025.9.1 + # via jsonschema keystoneauth1==5.13.1 # via openstacksdk +markdown-it-py==4.2.0 + # via rich +mdurl==0.1.2 + # via markdown-it-py +msgpack==1.2.2 + # via oslo-serialization +netaddr==1.3.0 + # via + # oslo-config + # oslo-utils + # tempest openstacksdk==4.10.0 # via -r iaas/requirements.in os-service-types==1.8.2 # via # keystoneauth1 # openstacksdk +oslo-concurrency==7.6.1 + # via tempest +oslo-config==10.7.0 + # via + # oslo-concurrency + # oslo-log + # tempest +oslo-context==6.5.0 + # via oslo-log +oslo-i18n==6.9.0 + # via + # oslo-concurrency + # oslo-config + # oslo-log + # oslo-utils +oslo-log==8.3.2 + # via tempest +oslo-serialization==5.11.0 + # via + # oslo-log + # tempest +oslo-utils==10.2.0 + # via + # oslo-concurrency + # oslo-log + # oslo-serialization + # tempest +packaging==26.3 + # via oslo-utils +paramiko==5.0.0 + # via tempest pbr==7.0.3 # via # keystoneauth1 # openstacksdk # os-service-types + # oslo-concurrency + # oslo-context + # oslo-i18n + # oslo-log + # oslo-utils + # tempest platformdirs==4.9.6 # via openstacksdk +prettytable==3.18.0 + # via + # cliff + # tempest +prompt-toolkit==3.0.53 + # via cmd2 psutil==7.2.2 - # via openstacksdk + # via + # openstacksdk + # oslo-utils pycparser==3.0 # via - # -c iaas/../requirements.txt + # -c requirements.txt # cffi +pygments==2.21.0 + # via rich +pynacl==1.6.2 + # via paramiko +pyparsing==3.3.3 + # via oslo-utils +pyperclip==1.11.0 + # via cmd2 python-dateutil==2.9.0.post0 # via - # -c iaas/../requirements.txt + # -c requirements.txt # botocore + # oslo-log +python-subunit==1.4.6 + # via + # stestr + # tempest pyyaml==6.0.3 # via - # -c iaas/../requirements.txt + # -c requirements.txt + # cliff # openstacksdk + # oslo-config + # oslo-utils + # python-subunit + # stestr + # tempest +referencing==0.37.0 + # via + # jsonschema + # jsonschema-specifications requests==2.33.1 # via - # -c iaas/../requirements.txt + # -c requirements.txt # keystoneauth1 + # oslo-config requestsexceptions==1.4.0 # via openstacksdk +rfc3986==2.0.0 + # via oslo-config +rich==15.0.0 + # via + # cmd2 + # rich-argparse +rich-argparse==1.8.0 + # via cmd2 +rpds-py==2026.6.3 + # via + # jsonschema + # referencing s3transfer==0.16.0 # via boto3 six==1.17.0 # via - # -c iaas/../requirements.txt + # -c requirements.txt # python-dateutil +stestr==4.2.1 + # via tempest stevedore==5.7.0 # via + # cliff # dogpile-cache # keystoneauth1 + # oslo-config + # tempest +tempest==47.0.0 + # via -r iaas/requirements.in +testscenarios==0.7.0 + # via tempest +testtools==2.9.1 + # via + # python-subunit + # stestr + # tempest +tomlkit==0.15.1 + # via stestr typing-extensions==4.15.0 # via - # -c iaas/../requirements.txt + # -c requirements.txt # keystoneauth1 # openstacksdk # os-service-types + # oslo-context urllib3==2.7.0 # via - # -c iaas/../requirements.txt + # -c requirements.txt # botocore # requests + # tempest +voluptuous==0.16.0 + # via stestr +wcwidth==0.9.1 + # via + # prettytable + # prompt-toolkit +wrapt==2.4.1 + # via debtcollector # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/Tests/kaas/requirements.txt b/Tests/kaas/requirements.txt index bd74bbbad..59300a9c7 100644 --- a/Tests/kaas/requirements.txt +++ b/Tests/kaas/requirements.txt @@ -1,45 +1,45 @@ # -# This file is autogenerated by pip-compile with Python 3.12 +# This file is autogenerated by pip-compile with Python 3.13 # by the following command: # -# pip-compile requirements.in +# pip-compile --no-index kaas/requirements.in # aiohappyeyeballs==2.6.1 # via - # -c kaas/../requirements.txt + # -c requirements.txt # aiohttp aiohttp==3.13.5 # via - # -c kaas/../requirements.txt + # -c requirements.txt # kubernetes-asyncio aiosignal==1.4.0 # via - # -c kaas/../requirements.txt + # -c requirements.txt # aiohttp attrs==26.1.0 # via - # -c kaas/../requirements.txt + # -c requirements.txt # aiohttp certifi==2026.2.25 # via - # -c kaas/../requirements.txt + # -c requirements.txt # kubernetes # kubernetes-asyncio # requests charset-normalizer==3.4.7 # via - # -c kaas/../requirements.txt + # -c requirements.txt # requests durationpy==0.10 # via kubernetes frozenlist==1.8.0 # via - # -c kaas/../requirements.txt + # -c requirements.txt # aiohttp # aiosignal idna==3.11 # via - # -c kaas/../requirements.txt + # -c requirements.txt # requests # yarl jinja2==3.1.6 @@ -52,14 +52,14 @@ markupsafe==3.0.3 # via jinja2 multidict==6.7.1 # via - # -c kaas/../requirements.txt + # -c requirements.txt # aiohttp # yarl oauthlib==3.3.1 # via requests-oauthlib propcache==0.4.1 # via - # -c kaas/../requirements.txt + # -c requirements.txt # aiohttp # yarl pykube-ng==23.6.0 @@ -68,18 +68,18 @@ pytest-kind==22.11.1 # via -r kaas/requirements.in python-dateutil==2.9.0.post0 # via - # -c kaas/../requirements.txt + # -c requirements.txt # kubernetes # kubernetes-asyncio pyyaml==6.0.3 # via - # -c kaas/../requirements.txt + # -c requirements.txt # kubernetes # kubernetes-asyncio # pykube-ng requests==2.33.1 # via - # -c kaas/../requirements.txt + # -c requirements.txt # kubernetes # pykube-ng # requests-oauthlib @@ -87,17 +87,13 @@ requests-oauthlib==2.0.0 # via kubernetes six==1.17.0 # via - # -c kaas/../requirements.txt + # -c requirements.txt # kubernetes # kubernetes-asyncio # python-dateutil -typing-extensions==4.15.0 - # via - # -c kaas/../requirements.txt - # aiosignal urllib3==2.7.0 # via - # -c kaas/../requirements.txt + # -c requirements.txt # kubernetes # kubernetes-asyncio # pykube-ng @@ -106,5 +102,5 @@ websocket-client==1.9.0 # via kubernetes yarl==1.23.0 # via - # -c kaas/../requirements.txt + # -c requirements.txt # aiohttp diff --git a/Tests/test-requirements.txt b/Tests/test-requirements.txt index 1e0166edc..ba656f5f8 100644 --- a/Tests/test-requirements.txt +++ b/Tests/test-requirements.txt @@ -1,21 +1,25 @@ # -# This file is autogenerated by pip-compile with Python 3.12 +# This file is autogenerated by pip-compile with Python 3.13 # by the following command: # -# pip-compile test-requirements.in +# pip-compile --no-index test-requirements.in # coverage[toml]==7.13.5 # via pytest-cov iniconfig==2.3.0 # via pytest -packaging==26.0 - # via pytest +packaging==26.3 + # via + # -c iaas/requirements.txt + # pytest pluggy==1.6.0 # via # pytest # pytest-cov -pygments==2.20.0 - # via pytest +pygments==2.21.0 + # via + # -c iaas/requirements.txt + # pytest pytest==9.0.3 # via # -r test-requirements.in @@ -25,9 +29,3 @@ pytest-asyncio==1.3.0 # via -r test-requirements.in pytest-cov==7.1.0 # via -r test-requirements.in -typing-extensions==4.15.0 - # via - # -c iaas/requirements.txt - # -c kaas/requirements.txt - # -c requirements.txt - # pytest-asyncio