You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab CICD中通过环境变量筛选CSV指定日期与项目记录

实现方案

1. 适配Python脚本的参数逻辑

修改现有采集脚本,优先从环境变量读取过滤参数,空值自动走全量采集逻辑:

  • 读取三个核心参数:FROM_DATE(起始日期)、TO_DATE(截止日期)、PROJECT_ID(项目ID)
  • 参数判空规则:所有参数传入空字符串、全空格时,视为未传参,不启用对应过滤条件
  • 增加基础格式校验:日期强制要求YYYY-MM-DD格式,项目ID支持多值传入时用英文逗号分隔即可
  • 保持原有CSV输出逻辑不变,最终固定生成git_commit_report.csv文件,表头沿用原有定义
    参考参数读取代码片段:
import os
from datetime import datetime

# 读取CI传入的环境变量,空值统一转为None
FROM_DATE = os.getenv("FROM_DATE", "").strip() or None
TO_DATE = os.getenv("TO_DATE", "").strip() or None
PROJECT_ID = os.getenv("PROJECT_ID", "").strip() or None

# 日期格式校验
def parse_date(date_str):
    if not date_str:
        return None
    try:
        return datetime.strptime(date_str, "%Y-%m-%d")
    except ValueError:
        raise RuntimeError("日期格式错误,请使用YYYY-MM-DD格式,例如2024-01-01")

# 转换为脚本逻辑可用的参数
filter_from_date = parse_date(FROM_DATE)
filter_to_date = parse_date(TO_DATE)
filter_projects = [pid.strip() for pid in PROJECT_ID.split(",")] if PROJECT_ID else None

# 后续接入原有提交采集逻辑,传入上述三个过滤参数即可

2. 编写GitLab CI流水线配置

在仓库根目录创建/更新.gitlab-ci.yml,配置手动触发的作业,将三个参数设为运行时可输入项:

stages:
  - gen_report

generate_commit_report:
  stage: gen_report
  image: python:3.11-slim
  variables:
    FROM_DATE:
      description: "起始日期(YYYY-MM-DD),留空则拉取最早的提交记录"
      value: ""
    TO_DATE:
      description: "截止日期(YYYY-MM-DD),留空则拉取到最新的提交记录"
      value: ""
    PROJECT_ID:
      description: "待统计的项目ID,多个项目用英文逗号分隔,留空则统计所有项目"
      value: ""
  before_script:
    # 安装脚本依赖,替换为你实际用到的依赖包
    - pip install --no-cache-dir python-gitlab pandas
  script:
    # 运行采集脚本,环境变量会自动注入到脚本进程
    - python collect_git_commits.py
  artifacts:
    name: "git_commit_report_${CI_PIPELINE_IID}"
    expire_in: 30d
    paths:
      - git_commit_report.csv
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"' # 仅允许手动从网页触发流水线时运行

3. 配置固定CI变量

进入GitLab项目的「设置」-「CI/CD」-「变量」页面,提前配置两个全局固定变量,不要硬编码在脚本里:

  • GITLAB_PRIVATE_TOKEN:拥有所有待统计项目读取权限的GitLab访问令牌,开启Masked、Protected选项
  • GITLAB_HOST:你的GitLab实例访问地址,例如https://gitlab.your-company.com,开启Masked选项
    脚本里直接读取这两个变量调用GitLab API即可。

4. 运行逻辑

  • 用户打开流水线运行页面时,会自动弹出三个参数输入框
  • 填写对应日期、项目ID后运行,脚本会按传入的过滤条件生成指定范围的提交CSV
  • 所有参数留空直接运行,脚本自动拉取全量项目、全时间范围的提交记录生成CSV
  • 流水线运行完成后,在作业产物里即可直接下载生成的CSV文件

注意:如果待统计的提交量较大,建议在脚本里增加API分页拉取逻辑,避免单次拉取数据量过大导致内存溢出。


内容的提问来源于stack exchange,提问作者The Tester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:48:22