讲师中心 微信公众号
AI工具推荐 视频效率加速

Python Drone CI 的轻量 Python 流水线

酷敏君_5759

酷敏君_5759

发布时间:2026-02-15 19:15:12

|

1023人浏览过

|

来源于php中文网

原创

最简Python流水线需用python:3.11-slim镜像,命令依次执行cd ${DRONE_WORKSPACE}、pip install -U pip setuptools wheel、pip install -e .、pytest tests/ -v --tb=short -s。

python drone ci 的轻量 python 流水线

Drone CI 里怎么写最简 Python 流水线

能跑 python -m pytest 和 pip install -e . 的最小可行流水线,核心就两步:选对镜像、写清命令。别用 python:latest,它不带 pip 或版本太新导致 setuptools 冲突;优先用 python:3.11-slim 这类带完整 pip 且体积小的官方镜像。

常见错误是直接写 pip install . 而不是 pip install -e .——本地开发依赖(比如 tests/ 下的模块)会找不到;还有人漏掉 WORKDIR /drone/src,结果 setup.py 找不到。

  • image: python:3.11-slim(比 alpine 兼容性好,少踩编译坑)
  • 命令块里第一行必须是 cd ${DRONE_WORKSPACE},Drone 不自动切工作目录
  • 测试前加 pip install -U pip setuptools wheel,避免旧项目因打包工具过旧失败

Drone 中如何传环境变量给 Python 脚本

Drone 默认不把 secrets 当环境变量透传进容器,得显式声明。比如你有个 API_KEY secret,想让 main.py 读到 os.getenv("API_KEY"),光在 UI 里加 secret 不够,还得在 .drone.yml 里写 environment: 块。

容易踩的坑是大小写混淆:environment: 下写的键名必须全大写,且和 Python 里 getenv 的参数完全一致;另外,secret 名本身不能含下划线以外的符号,否则 Drone 解析失败报 invalid secret name。

立即学习“Python免费学习笔记(深入)”;

Python Hardener
Python Hardener

通过完整的安全审查、代码整洁重构、健壮的错误处理、正确的日志记录以及完整的文档字符串覆盖,强化 Python 脚本。

下载
  • 在 .drone.yml 的 step 下加 environment:,再缩进写 API_KEY: {secret: api_key}
  • 不要用 export API_KEY=xxx 在 script 里硬编码,secrets 就失效了
  • 敏感值若需用于 pip install -i https://xxx:${API_KEY}@pypi.org/simple,得确保该 step 的 environment 包含它,且 URL 编码处理好特殊字符

Python 单元测试失败时,Drone 怎么看详细报错

默认 pytest 在 Drone 里只输出 summary,失败时看不到 traceback。根本原因是没开详细输出,也没捕获 stdout/stderr。解决方法很简单:加参数、重定向、别让 pytest 静默吞掉错误。

另一个常见问题是测试用例里调用了 print(),但 Drone 日志里看不到——因为 pytest 默认 capture 输出,得显式关掉或用 -s。

  • 命令写成 pytest tests/ -v --tb=short -s(-v 显式开启详细模式,--tb=short 防止堆栈过长截断)
  • 如果用 tox,得在 tox.ini 里配 setenv = PYTHONUNBUFFERED=1,否则日志延迟刷出
  • CI 上时间敏感测试(如 time.sleep(0.1))容易偶发失败,建议改用 freezegun 或跳过,别靠重试掩盖

Drone 构建慢?Python 依赖缓存怎么配才真正生效

Drone 默认每次都是干净容器,pip install 从头下包,3 分钟起步很常见。缓存不是加个 cache: 就完事——Python 的 pip 缓存路径、wheel 构建目录、虚拟环境位置都得对上,否则缓存形同虚设。

最容易被忽略的是:Drone 的 cache key 必须包含 requirements.txt 的 hash,否则文件一变缓存就错乱;而且 pip install 必须加 --find-links 和 --no-index 才会复用本地 wheel。

  • 在 .drone.yml 顶层加 cache: 块,路径填 ~/.cache/pip(不是 /root/.cache/pip,镜像用户是 root,但 ~ 自动展开)
  • 安装命令拆两步:pip wheel --no-deps --wheel-dir /tmp/wheels -r requirements.txt,再 pip install --find-links /tmp/wheels --no-index -r requirements.txt
  • cache key 推荐用 key: '{{ arch }}-{{ repo.owner }}-{{ repo.name }}-{{ checksum "requirements.txt" }}',checksum 必须指向文件,不是 glob

缓存命中的标志是日志里出现 Using cached xxx.whl,而不是 Downloading xxx.tar.gz。如果一直没看到,八成是 wheel 目录没挂对,或者 cache key 没随依赖文件变化。

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

3470

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

7883

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

9542

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

5007

2025.07.23

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

3320

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

269

2026.02.03

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6707

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2788

2023.08.10

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn