互联网公司的构建环境都是使用流水线,正好gitee也有,这里记录下使用方法。
举例:一个python tkinter的图形界面程序,主要功能根据文件类型查找文件,应该怎么写 .gitee-ci.yml文件,才能实现流水线
要为一个基于 Python 和 tkinter 的图形界面程序(功能是根据文件类型查找文件)配置 Gitee 流水线(Pipeline),你需要编写一个 .gitee-ci.yml 文件,用于定义流水线的各个阶段。
✅ 目标
我们要实现的功能:
- 构建:安装依赖、打包成可执行文件(如使用 PyInstaller)
- 可选测试:运行单元测试或简单检查
- 打包完成后上传构建产物(如生成的
.exe或其他平台的二进制文件)
🧩 前提条件
- 项目结构示例:
深色版本
my_file_search_app/
├── main.py # tkinter 主程序
├── search_utils.py # 文件搜索逻辑
├── requirements.txt # Python 依赖
├── .gitee-ci.yml # 流水线配置文件
└── README.md
- 使用 PyInstaller 打包(跨平台支持)
✅ 示例 .gitee-ci.yml 文件(适用于 PyInstaller 打包)
yaml
深色版本
# 定义流水线使用的镜像环境
image: python:3.10
# 定义流水线的几个阶段
stages:
- prepare
- build
- package
- artifacts
# 准备阶段:安装依赖
prepare_job:
stage: prepare
script:
- pip install --upgrade pip
- pip install -r requirements.txt
- pip install pyinstaller
# 构建阶段:使用 PyInstaller 打包
build_job:
stage: build
script:
- echo "开始打包程序..."
- pyinstaller --onefile --windowed --noconfirm main.py
artifacts:
paths:
- dist/
# 可选:上传构建产物(如 dist/main.exe)
artifacts_job:
stage: artifacts
script:
- echo "构建完成,准备上传构建产物"
artifacts:
paths:
- dist/
expire_in: 7 days
🔍 各阶段说明
| 阶段 | 功能 | 说明 |
|---|---|---|
prepare | 安装依赖 | 安装 requirements.txt 中的依赖和 pyinstaller |
build | 打包程序 | 使用 PyInstaller 将 main.py 打包为单个可执行文件,--windowed 表示不弹出终端窗口 |
artifacts | 保存构建产物 | 将打包好的文件(如 dist/main 或 dist/main.exe)保存下来供下载 |
📦 打包后的输出位置
- Linux/macOS:
dist/main - Windows:
dist/main.exe
你可以通过 Gitee 的 “构建产物” 页面下载这些文件。
✅ 如果你有图标文件(如 icon.ico)
可以修改 build_job 部分,加上图标参数:
yaml
深色版本
build_job:
stage: build
script:
- echo "开始打包程序并指定图标..."
- pyinstaller --onefile --windowed --icon=icon.ico --noconfirm main.py
artifacts:
paths:
- dist/
确保你的仓库中有 icon.ico 文件。
✅ 如果你想做自动化测试
可以在 test 阶段添加测试命令:
yaml
深色版本
test_job:
stage: test
script:
- python -m pytest tests/
前提是你有 tests/ 目录,并且写了单元测试。
✅ 注意事项
| 项目 | 说明 |
|---|---|
| 跨平台打包 | 上述脚本在 Linux 环境下运行,只能打包出 Linux 版本。如果想打包 Windows 或 macOS,需要使用对应系统的 CI 环境,或者使用 Docker。 |
| 图标支持 | 图标文件必须是 .ico 格式(Windows)或 .icns(macOS) |
| GUI 不显示黑框 | 使用了 --windowed 参数避免控制台窗口弹出 |
| 构建缓存 | 如果你希望缓存 pip 安装包,可以使用 cache: 关键字优化速度 |
✅ 示例:完整 .gitee-ci.yml(含注释)
yaml
深色版本
# 使用官方 Python 镜像
image: python:3.10
# 定义流水线阶段
stages:
- prepare
- build
- artifacts
# 准备阶段:安装依赖
prepare_job:
stage: prepare
script:
- pip install --upgrade pip
- pip install -r requirements.txt
- pip install pyinstaller
# 构建阶段:打包程序
build_job:
stage: build
script:
- echo "正在使用 PyInstaller 打包..."
- pyinstaller --onefile --windowed --icon=icon.ico --noconfirm main.py
artifacts:
paths:
- dist/
# 构建产物管理
artifacts_job:
stage: artifacts
script:
- echo "构建产物已就绪"
artifacts:
paths:
- dist/
expire_in: 7 days
✅ 总结
你现在有了一个完整的 .gitee-ci.yml 文件,它能够:
- 自动安装依赖
- 使用 PyInstaller 打包你的 tkinter 程序
- 不弹出终端窗口(GUI 模式)
- 上传构建产物供下载使用