gitee 流水线 如何使用

214 阅读3分钟

互联网公司的构建环境都是使用流水线,正好gitee也有,这里记录下使用方法。

举例:一个python tkinter的图形界面程序,主要功能根据文件类型查找文件,应该怎么写 .gitee-ci.yml文件,才能实现流水线

要为一个基于 Python 和 tkinter 的图形界面程序(功能是根据文件类型查找文件)配置 Gitee 流水线(Pipeline),你需要编写一个 .gitee-ci.yml 文件,用于定义流水线的各个阶段。


✅ 目标

我们要实现的功能:

  • 构建:安装依赖、打包成可执行文件(如使用 PyInstaller)
  • 可选测试:运行单元测试或简单检查
  • 打包完成后上传构建产物(如生成的 .exe 或其他平台的二进制文件)

🧩 前提条件

  1. 项目结构示例:
深色版本
my_file_search_app/
├── main.py            # tkinter 主程序
├── search_utils.py    # 文件搜索逻辑
├── requirements.txt   # Python 依赖
├── .gitee-ci.yml      # 流水线配置文件
└── README.md
  1. 使用 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 模式)
  • 上传构建产物供下载使用