在 GitLab CI/CD 中使用 uv
使用 uv 镜像
Astral 提供了预装 uv 的 Docker 镜像。选择适合您工作流程的变体。
gitlab-ci.yml
variables:
UV_VERSION: "0.5"
PYTHON_VERSION: "3.12"
BASE_LAYER: bookworm-slim
# GitLab CI creates a separate mountpoint for the build directory,
# so we need to copy instead of using hard links.
UV_LINK_MODE: copy
uv:
image: ghcr.io/astral-sh/uv:$UV_VERSION-python$PYTHON_VERSION-$BASE_LAYER
script:
# your `uv` commands
注意
如果您使用的是 distroless 镜像,则必须指定入口点
缓存
在工作流程运行之间持久化 uv 缓存可以提高性能。
uv-install:
variables:
UV_CACHE_DIR: .uv-cache
cache:
- key:
files:
- uv.lock
paths:
- $UV_CACHE_DIR
script:
# Your `uv` commands
- uv cache prune --ci
有关配置缓存的更多详细信息,请参阅 GitLab 缓存文档。
建议在作业结束时使用 uv cache prune --ci
以减少缓存大小。 有关更多详细信息,请参阅 uv 缓存文档。
使用 uv pip
如果使用 uv pip
接口而不是 uv 项目接口,则默认情况下 uv 需要虚拟环境。 要允许将软件包安装到系统环境中,请在所有 uv 调用中使用 --system
标志或设置 UV_SYSTEM_PYTHON
变量。
UV_SYSTEM_PYTHON
变量可以在不同的范围内定义。 您可以在此处阅读有关 变量及其在 GitLab 中优先级的更多信息
通过在顶层定义它来选择整个工作流程
要再次选择退出,可以在任何 uv 调用中使用 --no-system
标志。
在持久化缓存时,您可能希望使用 requirements.txt
或 pyproject.toml
作为缓存键文件,而不是 uv.lock
。