用途:该技能用于把 uv(Rust 实现的 Python 包管理器)接入 CI/CD 流水线和容器化部署,提供 GitHub Actions、GitLab CI、Docker 与 PyPI 发布的可复用模式,目标是提升速度、可靠性和可维护性。
主要能力:
- 在 GitHub Actions 中使用 astral-sh/setup-uv@v6 安装 uv,并启用依赖缓存(enable-cache、cache-dependency-glob 指向 uv.lock)。
- 在 GitLab CI 中用 curl -LsSf https://astral.sh/uv/install.sh | sh 安装,并通过 UV_CACHE_DIR 与 cache 配置缓存。
- Docker 多阶段构建:从 ghcr.io/astral-sh/uv:latest 复制 uv,先同步依赖再复制 .venv 到运行时镜像,减小体积并隔离构建工具。
- 矩阵测试:在多个 Python 版本(3.11、3.12、3.13)间并行执行 uv sync 与 uv run pytest。
- 生产环境使用冻结锁文件:uv sync --frozen --no-dev(开发可用 --all-extras --dev),并提交 uv.lock,必要时用 uv lock --upgrade 更新。
- PyPI 可信发布(OIDC):配置 id-token: write 权限,执行 uv build 与 uv publish,无需静态令牌;自定义索引可用 --index-url 与 UV_PUBLISH_TOKEN。
使用方式:按部署平台选择方案,先完成 uv 安装,再配置依赖缓存与冻结锁文件,最后按需加入矩阵测试、多阶段 Docker 构建或发布流程。命令示例保持原样,如 uv sync --frozen --no-dev --no-install-project。
适用场景:GitHub、GitLab 仓库的持续集成,容器化部署,多版本兼容性测试,以及向 PyPI 或私有索引发布包。
限制与要求:需要 Git 仓库与提交到版本控制的 uv.lock;uv 版本 0.9.0 及以上;Docker 多阶段构建需 20.10+;测试覆盖 Python 3.11–3.13,uv 自身最低 Python 3.9。旧式 PyPI 令牌、私有索引凭据、Jenkins/GitHub Enterprise 手动配置等细节资料未完整给出;具体的缓存调优与故障排查内容暂未提供。