--- # CE QUE LE RUNNER INSTALLE, A L'OCTET PRES — tenu par le site, verifie a la reception. # # POURQUOI (2026-10-09). A chaque reconstruction, le runner sortait sur Internet : `pip # download` interrogeait PyPI, et un runner neuf tirait ses collections de Galaxy. Seules # deux bibliotheques etaient epinglees ; `ansible-core` etait borne (>=2.18,<2.19), le reste # libre. Mesure sur le runner de Technolibre : son depot de roues portait DEUX versions de # six bibliotheques (cryptography 50.0.1 et 50.0.2, urllib3 2.7.0 et 2.8.0...) — PyPI avait # bouge entre l'insemination et le montage, et personne n'avait choisi celle qui tournait. # # CE VERROU EST CE QUI TOURNE : les quinze roues installees dans le venv de ce runner (pip # freeze), et les trois collections qu'il a recues, avec leurs sommes, releves le # 2026-10-09. Chaque URL a ete telechargee depuis le poste et rend exactement sa somme. # # QUI LE LIT : `serveur_artefacts` (le site tient ces fichiers dans son depot de binaires), # `serveur_ops` (le runner les prend au site, ne depose QUE ceux-ci, installe hors ligne), # P70 (le site tient tout ce que le runner va chercher), `test_verrou_runner.py`. # # MONTER UNE VERSION est un geste delibere : remplacer la ligne (nom, url, sha256), et les # epingles de `requirements-python.txt`, `serveur_ops_ansible` et `requirements.yml`, que # le test confronte a ce verrou. # Le Python pour lequel les roues sont faites (`cp313`) ; la cible doit le porter. python_cible: "3.13" python: - nom: ansible_core-2.18.19-py3-none-any.whl url: https://files.pythonhosted.org/packages/py3/a/ansible-core/ansible_core-2.18.19-py3-none-any.whl sha256: 00f53c10d97ce001f6e49857820901b3e8d2f234cb9f5fd9fdf8092c14109fa0 - nom: certifi-2026.7.22-py3-none-any.whl url: https://files.pythonhosted.org/packages/py3/c/certifi/certifi-2026.7.22-py3-none-any.whl sha256: 62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 - nom: cffi-2.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl url: https://files.pythonhosted.org/packages/cp313/c/cffi/cffi-2.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl sha256: a931079504ecc49efed7744c476a5c343a92fabf66dec2db95edb1b2fdc770e2 - nom: charset_normalizer-3.5.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl url: https://files.pythonhosted.org/packages/cp313/c/charset-normalizer/charset_normalizer-3.5.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl # yamllint disable-line rule:line-length sha256: 7218e8f32b0956cfcd048fd42d9d5779809745ca1d86113ca56f66e7ae1549c4 - nom: cryptography-50.0.2-cp311-abi3-manylinux_2_34_x86_64.whl url: https://files.pythonhosted.org/packages/cp311/c/cryptography/cryptography-50.0.2-cp311-abi3-manylinux_2_34_x86_64.whl sha256: 9dab55f57c74c3cad24c323bacbbd04be4705ba6eb0d92e920b1fc4837ed5079 - nom: idna-3.20-py3-none-any.whl url: https://files.pythonhosted.org/packages/py3/i/idna/idna-3.20-py3-none-any.whl sha256: ab7ae7122974553370f0bdb919e1a960b2cd1bc1ef0276416d896db81c14582c - nom: jinja2-3.1.6-py3-none-any.whl url: https://files.pythonhosted.org/packages/py3/j/jinja2/jinja2-3.1.6-py3-none-any.whl sha256: 85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 - nom: markupsafe-3.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl url: https://files.pythonhosted.org/packages/cp313/m/markupsafe/markupsafe-3.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl # yamllint disable-line rule:line-length sha256: 434139499bb20b502ed3baa1f169e618f924a97e7a777fea1a49446d80106cf6 - nom: packaging-26.3-py3-none-any.whl url: https://files.pythonhosted.org/packages/py3/p/packaging/packaging-26.3-py3-none-any.whl sha256: d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c - nom: proxmoxer-2.2.0-py3-none-any.whl url: https://files.pythonhosted.org/packages/py3/p/proxmoxer/proxmoxer-2.2.0-py3-none-any.whl sha256: 7e4431fd38e1a9321eedf6d860ddc373fc2b29ce1845fa8b072d7580d99f6b90 - nom: pycparser-3.1-py3-none-any.whl url: https://files.pythonhosted.org/packages/py3/p/pycparser/pycparser-3.1-py3-none-any.whl sha256: f09d358c840bd147b79e55f2bc494f18ea869dc897f5852a8f5766b74f787882 - nom: pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl url: https://files.pythonhosted.org/packages/cp313/p/pyyaml/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl sha256: 0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6 - nom: requests-2.32.3-py3-none-any.whl url: https://files.pythonhosted.org/packages/py3/r/requests/requests-2.32.3-py3-none-any.whl sha256: 70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 - nom: resolvelib-1.0.1-py2.py3-none-any.whl url: https://files.pythonhosted.org/packages/py2.py3/r/resolvelib/resolvelib-1.0.1-py2.py3-none-any.whl sha256: d2da45d1a8dfee81bdd591647783e340ef3bcb104b54c383f70d422ef5cc7dbf - nom: urllib3-2.8.0-py3-none-any.whl url: https://files.pythonhosted.org/packages/py3/u/urllib3/urllib3-2.8.0-py3-none-any.whl sha256: 0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3 collections: - nom: ansible-posix-1.6.2.tar.gz url: https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/ansible-posix-1.6.2.tar.gz sha256: 3c6b4d4f326cb42490b75644179e809ed09f3040ddaf0763bd6ea9e0f2ef8c47 - nom: community-general-10.3.0.tar.gz url: https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-general-10.3.0.tar.gz sha256: f1df87cca61c7c22aa1d66fbb3864185da71d0141f825a1385b8c4b7a635b129 - nom: community-postgresql-3.10.2.tar.gz url: https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/community-postgresql-3.10.2.tar.gz sha256: f0ad8976e502d28c901b8bbeb5a4a85a82f86e28fac245c4caa3d60a618e14e2