From 73fdd02e0d04fe4e723d119800c23b52a2fcf1f6 Mon Sep 17 00:00:00 2001 From: hborcher Date: Wed, 6 May 2026 12:46:43 -0500 Subject: [PATCH 1/3] ci: cache python installer file instead of installation --- vars/runJenkinsPipeline.groovy | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/vars/runJenkinsPipeline.groovy b/vars/runJenkinsPipeline.groovy index 9809bb0..6eb6dfe 100644 --- a/vars/runJenkinsPipeline.groovy +++ b/vars/runJenkinsPipeline.groovy @@ -68,7 +68,7 @@ def testPackage(entry, params){ withEnv([ 'PIP_CACHE_DIR=/tmp/pipcache', 'UV_TOOL_DIR=/tmp/uvtools', - 'UV_PYTHON_INSTALL_DIR=/tmp/uvpython', + 'UV_PYTHON_CACHE_DIR=/tmp/uvpython', 'UV_CACHE_DIR=/tmp/uvcache', "UV_CONFIG_FILE=${createUnixUvConfig()}" ]){ @@ -214,7 +214,7 @@ def deploySingleStandalone(file, url, authentication) { def getToxEnvs(){ node('docker && windows'){ - docker.image('python').inside("--mount type=volume,source=uv_python_install_dir,target=${env.UV_PYTHON_INSTALL_DIR}"){ + docker.image('python').inside("--mount type=volume,source=uv_python_cache_dir,target=${env.UV_PYTHON_CACHE_DIR}"){ try{ checkout scm bat(script: 'python -m venv venv && venv\\Scripts\\pip install --disable-pip-version-check uv') @@ -314,7 +314,7 @@ def call(){ environment{ PIP_CACHE_DIR='/tmp/pipcache' UV_TOOL_DIR='/tmp/uvtools' - UV_PYTHON_INSTALL_DIR='/tmp/uvpython' + UV_PYTHON_CACHE_DIR='/tmp/uvpython' UV_CACHE_DIR='/tmp/uvcache' UV_CONFIG_FILE=createUnixUvConfig() } @@ -522,7 +522,7 @@ def call(){ environment{ PIP_CACHE_DIR='/tmp/pipcache' UV_TOOL_DIR='/tmp/uvtools' - UV_PYTHON_INSTALL_DIR='/tmp/uvpython' + UV_PYTHON_CACHE_DIR='/tmp/uvpython' UV_CACHE_DIR='/tmp/uvcache' } steps{ @@ -582,7 +582,7 @@ def call(){ environment{ PIP_CACHE_DIR='C:\\Users\\ContainerUser\\Documents\\cache\\pipcache' UV_TOOL_DIR='C:\\Users\\ContainerUser\\Documents\\cache\\uvtools' - UV_PYTHON_INSTALL_DIR='C:\\Users\\ContainerUser\\Documents\\cache\\uvpython' + UV_PYTHON_CACHE_DIR='C:\\Users\\ContainerUser\\Documents\\cache\\uvpython' UV_CACHE_DIR='C:\\Users\\ContainerUser\\Documents\\cache\\uvcache' } steps{ @@ -592,7 +592,7 @@ def call(){ try{ checkout scm docker.image(env.DEFAULT_PYTHON_DOCKER_IMAGE ? env.DEFAULT_PYTHON_DOCKER_IMAGE: 'python') - .inside("--mount type=volume,source=uv_python_install_dir,target=${env.UV_PYTHON_INSTALL_DIR}" + .inside("--mount type=volume,source=uv_python_cache_dir,target=${env.UV_PYTHON_CACHE_DIR}" + " --mount type=volume,source=pipcache,target=${env.PIP_CACHE_DIR}" + " --mount type=volume,source=uv_cache_dir,target=${env.UV_CACHE_DIR}" ){ @@ -621,7 +621,7 @@ def call(){ docker.image(env.DEFAULT_PYTHON_DOCKER_IMAGE ? env.DEFAULT_PYTHON_DOCKER_IMAGE: 'python') .inside("\ --label=purpose=ci --label \"JOB_NAME=\$JOB_NAME\" --label \"absoluteUrl=${currentBuild.absoluteUrl}\" --label \"BUILD_NUMBER=${currentBuild.number}\" \ - --mount type=volume,source=uv_python_install_dir,target=${env.UV_PYTHON_INSTALL_DIR} \ + --mount type=volume,source=uv_python_cache_dir,target=${env.UV_PYTHON_CACHE_DIR} \ --mount type=volume,source=pipcache,target=${env.PIP_CACHE_DIR} \ --mount type=volume,source=uv_cache_dir,target=${env.UV_CACHE_DIR} \ " @@ -1017,7 +1017,7 @@ def call(){ environment{ PIP_CACHE_DIR='/tmp/pipcache' UV_TOOL_DIR='/tmp/uvtools' - UV_PYTHON_INSTALL_DIR='/tmp/uvpython' + UV_PYTHON_CACHE_DIR='/tmp/uvpython' UV_CACHE_DIR='/tmp/uvcache' } agent { From 444bc889495c388ee39dbc9163b8fe892d9544ca Mon Sep 17 00:00:00 2001 From: hborcher Date: Wed, 6 May 2026 12:56:23 -0500 Subject: [PATCH 2/3] chore: upgrade lockfile deps Updated python-discovery v1.2.1 -> v1.3.0 Updated tox v4.52.0 -> v4.53.1 Updated tox-uv-bare v1.34.0 -> v1.35.2 --- uv.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/uv.lock b/uv.lock index abaa8be..9f78b4e 100644 --- a/uv.lock +++ b/uv.lock @@ -1231,15 +1231,15 @@ wheels = [ [[package]] name = "python-discovery" -version = "1.2.1" +version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/88/815e53084c5079a59df912825a279f41dd2e0df82281770eadc732f5352c/python_discovery-1.2.1.tar.gz", hash = "sha256:180c4d114bff1c32462537eac5d6a332b768242b76b69c0259c7d14b1b680c9e", size = 58457, upload-time = "2026-03-26T22:30:44.496Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/e0/cc5a8653e9a24f6cf84768f05064aa8ed5a83dcefd5e2a043db14a1c5f44/python_discovery-1.3.0.tar.gz", hash = "sha256:d098f1e86be5d45fe4d14bf1029294aabbd332f4321179dec85e76cddce834b0", size = 63925, upload-time = "2026-05-05T14:38:39.769Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/0f/019d3949a40280f6193b62bc010177d4ce702d0fce424322286488569cd3/python_discovery-1.2.1-py3-none-any.whl", hash = "sha256:b6a957b24c1cd79252484d3566d1b49527581d46e789aaf43181005e56201502", size = 31674, upload-time = "2026-03-26T22:30:43.396Z" }, + { url = "https://files.pythonhosted.org/packages/30/d4/24d543ab8b8158b7f5a97113c831205f5c900c92c8762b1e7f44b7ea0405/python_discovery-1.3.0-py3-none-any.whl", hash = "sha256:441d9ced3dfce36e113beb35ca302c71c7ef06f3c0f9c227a0b9bb3bd49b9e9f", size = 33124, upload-time = "2026-05-05T14:38:38.539Z" }, ] [[package]] @@ -1716,7 +1716,7 @@ wheels = [ [[package]] name = "tox" -version = "4.52.0" +version = "4.53.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cachetools" }, @@ -1732,23 +1732,23 @@ dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/59/6e/ad613e2516a653dc6591186aab726d84d769c6352c0c3dc8fc8ed213168b/tox-4.52.0.tar.gz", hash = "sha256:6054abf5c8b61d58776fbec991f9bf0d34bb883862beb93d2fe55601ef3977c9", size = 273077, upload-time = "2026-03-30T20:33:26.958Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/d7/a8e0f889eb6872740e2f013a93a8f9c6c23c3f02fe0911bbd91673615636/tox-4.53.1.tar.gz", hash = "sha256:7be9805ed4a34242510c7acc9a7e3a01a35942e08f31f8bd69067c3a37130afc", size = 276809, upload-time = "2026-05-02T08:34:41.655Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/0e/a995b285d8aa0e6f0c22bf80cf57be3e9f3811f0ea8b2d031219467f883b/tox-4.52.0-py3-none-any.whl", hash = "sha256:624d8ea4a8c6d5e8d168eedf0e318d736fb22e83ca83137d001ac65ffdec46fd", size = 211796, upload-time = "2026-03-30T20:33:25.621Z" }, + { url = "https://files.pythonhosted.org/packages/0a/a7/5719188f4ace9445b0fb139290e2abce14cc19e6a5bd616e72dad085ebe8/tox-4.53.1-py3-none-any.whl", hash = "sha256:4a9948607e976a337c22d64a1b4fafd486125e82f00ab6ce32fa6cacc23f48b1", size = 213827, upload-time = "2026-05-02T08:34:39.786Z" }, ] [[package]] name = "tox-uv-bare" -version = "1.34.0" +version = "1.35.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, { name = "tomli", version = "2.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "tox" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/34/28/d967dd5cbdb099e50974d4f44d181e1642596776435b68b22b3893634c4c/tox_uv_bare-1.34.0.tar.gz", hash = "sha256:257b637796bc18179e158923ae597475f9d891223bf5de065f144455fd5fafd1", size = 29169, upload-time = "2026-03-30T23:31:43.57Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/cb/168dc1ccf24e4065a9a0a33df55709ed2b5eb73bd2b13ddd53187e5dffb8/tox_uv_bare-1.35.2.tar.gz", hash = "sha256:49e28a804c97f23ea17e25859960c0fa78f35bccb7e14344cfd840e89a9aade9", size = 32333, upload-time = "2026-05-05T01:34:18.916Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0c/9d9c4ee3387f5ec3e2b43c053ac36d7b29ab8384bade6443f4977486d653/tox_uv_bare-1.34.0-py3-none-any.whl", hash = "sha256:2abb647a161c5c55493e3fda566f1baa328223860722687bcb808c95ec11a58f", size = 20691, upload-time = "2026-03-30T23:31:42.259Z" }, + { url = "https://files.pythonhosted.org/packages/5f/53/4a33dc81da39db7b31e5622333df361e8fe055b7ec636bd5fea762c9182d/tox_uv_bare-1.35.2-py3-none-any.whl", hash = "sha256:c0d590a41d1054a1ad0874e9e5943ff52402786e3d4599d8f8d37a65b566ef53", size = 22307, upload-time = "2026-05-05T01:34:17.681Z" }, ] [[package]] From f645bfbc6d9933c65ad7b0a044b6b6beca761601 Mon Sep 17 00:00:00 2001 From: hborcher Date: Wed, 6 May 2026 13:01:07 -0500 Subject: [PATCH 3/3] ci: force use of managed python in linux tox stages --- vars/runJenkinsPipeline.groovy | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/vars/runJenkinsPipeline.groovy b/vars/runJenkinsPipeline.groovy index 6eb6dfe..12054bd 100644 --- a/vars/runJenkinsPipeline.groovy +++ b/vars/runJenkinsPipeline.groovy @@ -553,13 +553,12 @@ def call(){ node('docker && linux'){ try{ checkout scm - docker.image('ghcr.io/astral-sh/uv:debian').inside("--label=purpose=ci --label \"JOB_NAME=\$JOB_NAME\" --label \"absoluteUrl=${currentBuild.absoluteUrl}\" --label \"BUILD_NUMBER=${currentBuild.number}\" --mount source=python-tmp-galatea,target=/tmp --mount type=tmpfs,dst=/.local --tmpfs /tmp_data:exec -e UV_PROJECT_ENVIRONMENT=/tmp_data/.venv"){ + docker.image('ghcr.io/astral-sh/uv:debian').inside("--label=purpose=ci --label \"JOB_NAME=\$JOB_NAME\" --label \"absoluteUrl=${currentBuild.absoluteUrl}\" --label \"BUILD_NUMBER=${currentBuild.number}\" --mount source=python-tmp-galatea,target=/tmp --tmpfs /.local/share:exec --tmpfs /.local/bin:exec --mount type=tmpfs,dst=/.local --tmpfs /tmp_data:exec -e UV_PROJECT_ENVIRONMENT=/tmp_data/.venv"){ retry(3){ withEnv(["UV_CONFIG_FILE=${createUnixUvConfig()}"]){ + sh "uv python install cpython-${version}" sh( label: 'Running Tox', - script: """uv python install cpython-${version} - uv run --only-group=tox-uv --frozen tox run -e ${toxEnv} --runner uv-venv-lock-runner --workdir /tmp_data/.tox - """ + script: "uv run --managed-python --only-group=tox-uv --frozen tox run -e ${toxEnv} --runner uv-venv-lock-runner --workdir /tmp_data/.tox" ) } }