CI: Run some tests with the latest development versions of Docker SDK for Python, requests, and urllib3 (#902)

* Run some tests with the latest development versions of Docker SDK for Python, requests, and urllib3.

* Use LooseVersion instead of StrictVersion to parse urllib3 versions.
This commit is contained in:
Felix Fontein 2024-06-29 18:57:08 +02:00 committed by GitHub
parent 165571f5cf
commit 81cabbf697
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 73 additions and 11 deletions

View File

@ -205,8 +205,8 @@ stages:
parameters:
testFormat: devel/{0}
targets:
- name: RHEL 9.4 with latest Docker SDK from PyPi
test: rhel/9.4-pypi-latest
- name: RHEL 9.4 with Docker SDK, urllib3, requests from sources
test: rhel/9.4-dev-latest
groups:
- 1
- 2
@ -222,8 +222,8 @@ stages:
parameters:
testFormat: 2.17/{0}
targets:
- name: RHEL 9.3 with latest Docker SDK from PyPi
test: rhel/9.3-pypi-latest
- name: RHEL 9.3
test: rhel/9.3
groups:
- 1
- 2

View File

@ -0,0 +1,2 @@
bugfixes:
- "vendored Docker SDK for Python - use ``LooseVersion`` instead of ``StrictVersion`` to compare urllib3 versions. This is needed for development versions (https://github.com/ansible-collections/community.docker/pull/902)."

View File

@ -15,7 +15,7 @@ __metaclass__ = type
https://github.com/kennethreitz/requests/pull/799
"""
from ansible_collections.community.docker.plugins.module_utils.version import StrictVersion
from ansible_collections.community.docker.plugins.module_utils.version import LooseVersion
from .._import_helper import HTTPAdapter, urllib3
from .basehttpadapter import BaseHTTPAdapter
@ -66,4 +66,4 @@ class SSLHTTPAdapter(BaseHTTPAdapter):
return False
if urllib_ver == 'dev':
return True
return StrictVersion(urllib_ver) > StrictVersion('1.5')
return LooseVersion(urllib_ver) > LooseVersion('1.5')

View File

@ -13,3 +13,20 @@
name: "{{ docker_pip_api_packages + (docker_pip_api_packages_python2 if ansible_facts.python.version.major == 2 else []) }}"
extra_args: "-c {{ remote_constraints }}"
state: present
when: not (force_docker_sdk_for_python_dev | default(false))
- name: Make sure git is installed
package:
name:
- git
state: present
when: force_docker_sdk_for_python_dev | default(false)
- name: Install/upgrade Python requirements from source repositories
pip:
name:
- git+https://github.com/psf/requests
- git+https://github.com/urllib3/urllib3
extra_args: "-c {{ remote_constraints }}"
state: latest
when: force_docker_sdk_for_python_dev | default(false)

View File

@ -8,3 +8,8 @@ docker_py_version: '0.0'
docker_pip_extra_packages: []
docker_pip_package: docker
docker_pip_package_limit: ''
docker_pip_git_packages:
- git+https://github.com/psf/requests
- git+https://github.com/urllib3/urllib3
- git+https://github.com/docker/docker-py

View File

@ -29,11 +29,28 @@
docker_pip_package_limit: '<4.3.0'
when: docker_api_version is version('1.39', '<')
- name: Make sure git is installed
package:
name:
- git
when: force_docker_sdk_for_python_dev | default(false)
- name: Install/upgrade Python requirements
pip:
name: "{{ [docker_pip_package ~ docker_pip_package_limit] + docker_pip_extra_packages }}"
name: >-
{{
docker_pip_git_packages
if (force_docker_sdk_for_python_dev | default(false)) else
([docker_pip_package ~ docker_pip_package_limit] + docker_pip_extra_packages)
}}
extra_args: "-c {{ remote_constraints }}"
state: "{{ 'latest' if force_docker_sdk_for_python_pypi | default(false) else 'present' }}"
state: >-
{{
'latest' if (
(force_docker_sdk_for_python_pypi | default(false)) or
(force_docker_sdk_for_python_dev | default(false))
) else 'present'
}}
- name: Check docker-py version
command: "{{ ansible_python.executable }} -c 'import docker; print(docker.__version__)'"

View File

@ -17,6 +17,15 @@ else
target="azp/"
fi
if [[ "${python}" =~ -pypi-latest$ ]]; then
python="${python/-pypi-latest}"
echo 'force_docker_sdk_for_python_pypi: true' >> tests/integration/integration_config.yml
fi
if [[ "${python}" =~ -dev-latest$ ]]; then
python="${python/-dev-latest}"
echo 'force_docker_sdk_for_python_dev: true' >> tests/integration/integration_config.yml
fi
# shellcheck disable=SC2086
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
--docker "quay.io/ansible-community/test-image:${image}" --python "${python}"

View File

@ -16,6 +16,15 @@ else
target="azp/"
fi
if [[ "${image}" =~ -pypi-latest$ ]]; then
image="${image/-pypi-latest}"
echo 'force_docker_sdk_for_python_pypi: true' >> tests/integration/integration_config.yml
fi
if [[ "${image}" =~ -dev-latest$ ]]; then
image="${image/-dev-latest}"
echo 'force_docker_sdk_for_python_dev: true' >> tests/integration/integration_config.yml
fi
# shellcheck disable=SC2086
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
--docker "${image}"

View File

@ -27,10 +27,13 @@ else
target="azp/"
fi
force_python=""
if [[ "${version}" =~ -pypi-latest$ ]]; then
version="${version/-pypi-latest}"
echo 'force_docker_sdk_for_python_pypi: true' >> tests/integration/interation_config.yml
echo 'force_docker_sdk_for_python_pypi: true' >> tests/integration/integration_config.yml
fi
if [[ "${version}" =~ -dev-latest$ ]]; then
version="${version/-dev-latest}"
echo 'force_docker_sdk_for_python_dev: true' >> tests/integration/integration_config.yml
fi
stage="${S:-prod}"
@ -42,4 +45,4 @@ fi
# shellcheck disable=SC2086
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
--python "${pyver}" --remote "${platform}/${version}" --remote-terminate always --remote-stage "${stage}" --remote-provider "${provider}" ${force_python}
--python "${pyver}" --remote "${platform}/${version}" --remote-terminate always --remote-stage "${stage}" --remote-provider "${provider}"