Azure Pipelines: uv Cache

I have already written about how to make your docker build faster with uv. Today, I want to quickly show how to make your CI build for a python project faster.

uv is a great pip alternative that for most projects will work as a drop-in replacement. It…


This content originally appeared on DEV Community and was authored by Alexander Kammerer

I have already written about how to make your docker build faster with uv. Today, I want to quickly show how to make your CI build for a python project faster.

uv is a great pip alternative that for most projects will work as a drop-in replacement. It is a lot quicker in resolving and installing python packages than pip which is especially nice for CI pipelines (or docker builds). Faster pipelines mean a quicker dev turnaround which means higher productivity.

If you keep installing the same packages in your pipeline, you might as well reuse the cache that uv internally uses across pipeline runs.

Cache Task in the Pipeline

For that, you have to insert the following code in your azure-pipelines.yml before you run uv venv and uv pip install ... and after you have installed uv:

- bash: |
    echo "##vso[task.setvariable variable=uv-cache-path;]$(uv cache dir)"

- task: Cache@2
  displayName: Cache uv
  inputs:
    key: uv cache | "$(python.version)"
    path: $(uv-cache-path)

This sets a new variable uv-cache-path with the path to the uv cache and then it will cache this path for successive pipeline runs. I assume that you store the python version that you use in a variable called python.version. You can also replace this directly with the python version that you use. Make sure to keep the quotes around the version though as the task will otherwise interpret the version as a path.

Prune the Cache

Finally, we can use a new feature to prune the cache before we upload it. This will decrease the file size of the cache which makes the upload and download of the cache faster and therefore probably saves you time. You should run uv cache prune --ci before the end of your pipeline job:

- script: uv cache prune --ci

Summary

In summary, if you want to make your python pipeline faster, the first step should be to use uv. You can simply replace the pip ... calls by uv pip ... and see how much faster that makes your pipeline.

If you install a lot of packages that need extensive build steps, it might be worth to re-use the uv cache. For that, you can use the Cache@2 task provided by Azure Pipelines.


This content originally appeared on DEV Community and was authored by Alexander Kammerer


Print Share Comment Cite Upload Translate Updates
APA

Alexander Kammerer | Sciencx (2024-07-25T08:56:52+00:00) Azure Pipelines: uv Cache. Retrieved from https://www.scien.cx/2024/07/25/azure-pipelines-uv-cache/

MLA
" » Azure Pipelines: uv Cache." Alexander Kammerer | Sciencx - Thursday July 25, 2024, https://www.scien.cx/2024/07/25/azure-pipelines-uv-cache/
HARVARD
Alexander Kammerer | Sciencx Thursday July 25, 2024 » Azure Pipelines: uv Cache., viewed ,<https://www.scien.cx/2024/07/25/azure-pipelines-uv-cache/>
VANCOUVER
Alexander Kammerer | Sciencx - » Azure Pipelines: uv Cache. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/07/25/azure-pipelines-uv-cache/
CHICAGO
" » Azure Pipelines: uv Cache." Alexander Kammerer | Sciencx - Accessed . https://www.scien.cx/2024/07/25/azure-pipelines-uv-cache/
IEEE
" » Azure Pipelines: uv Cache." Alexander Kammerer | Sciencx [Online]. Available: https://www.scien.cx/2024/07/25/azure-pipelines-uv-cache/. [Accessed: ]
rf:citation
» Azure Pipelines: uv Cache | Alexander Kammerer | Sciencx | https://www.scien.cx/2024/07/25/azure-pipelines-uv-cache/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.