通过 Gitee API 实现 CHANGELOG.md 文件的自动化上传至指定分支

在软件开发过程中,维护一个清晰的变更日志(CHANGELOG.md)是项目管理和版本控制中不可或缺的一部分。随着项目的进展,经常需要更新 CHANGELOG 文件来记录新功能、修复和变更。然而,手动将本地的 CHANGELOG.md 文件推送到 Gitee 仓库可能会变得繁琐,特别是在持续集成(CI)环境中。幸运的是,Gitee 提供了强大的 API,允许我们自动化这一过程。

步骤 1: 获取 Gitee API 访问令牌

首先,你需要在 Gitee 上创建一个访问令牌(Access Token),以便你的脚本可以安全地访问 Gitee API。

  1. 登录到 Gitee。
  2. 进入"设置" -> "安全设置" -> "私人令牌"。
  3. 点击"生成新令牌",输入令牌描述并选择相应的权限(至少需要仓库的读写权限)。
  4. 复制生成的令牌,并在你的脚本或环境变量中安全地存储它。

步骤 2: 编写 Python 脚本

接下来,我们将编写一个 Python 脚本来处理文件的读取、编码和上传过程。

python 复制代码
import requests
import base64
import os

# 从环境变量中获取必要的配置
GITEE_ACCESS_TOKEN = os.environ.get('GITEE_ACCESS_TOKEN')
REPO_OWNER = 'your_repo_owner'  # 仓库所有者
REPO_NAME = 'your_repo_name'    # 仓库名称
BRANCH_NAME = 'your_target_branch'  # 目标分支名
CHANGELOG_PATH = 'CHANGELOG.md'  # CHANGELOG 文件路径

def upload_changelog(access_token, owner, repo, branch, file_path):
    url = f"https://gitee.com/api/v5/repos/{owner}/{repo}/contents/CHANGELOG.md"

    # 读取文件并转换为 base64 编码
    with open(file_path, "rb") as file:
        encoded_content = base64.b64encode(file.read()).decode('utf-8')

    # 构建请求头部和请求体
    headers = {
        'Authorization': f'token {access_token}',
        'Content-Type': 'application/json'
    }
    data = {
        "message": "ci: update CHANGELOG.md",
        "content": encoded_content,
        "sha": "",  # 初始提交时不需要提供 SHA
        "branch": branch,
        "encoding": "base64"
    }

    # 发送 POST 请求
    response = requests.put(url, headers=headers, json=data)
    if response.status_code == 201:
        print("CHANGELOG.md uploaded successfully!")
    else:
        print("Failed to upload CHANGELOG.md:", response.json())

# 调用函数上传 CHANGELOG.md
upload_changelog(GITEE_ACCESS_TOKEN, REPO_OWNER, REPO_NAME, BRANCH_NAME, CHANGELOG_PATH)

注意 :上述脚本使用 PUT 方法直接更新文件。如果你的目标分支已经存在 CHANGELOG.md 文件,并且你希望更新它,则可以使用此方法。如果你只是想在分支上创建一个新文件(而不管它是否已存在),你可能需要先检查文件是否存在,或者使用其他方法(如通过 Git 提交)。然而,Gitee API 通常通过直接更新文件内容来处理这种情况,如果文件不存在,则会创建它。

步骤 3: 运行脚本

将上述 Python 脚本保存为文件(例如 upload_changelog_to_gitee.py),并在包含 CHANGELOG.md 文件的目录中运行它。确保你的环境变量 GITEE_ACCESS_TOKEN 已经设置正确,并且 Python 环境已经安装。

注意事项

  1. 权限问题:确保你的 Gitee 访问令牌具有足够的权限来修改仓库内容。
  2. 文件编码:Gitee API 需要文件内容以 base64 编码的形式发送。
  3. 分支存在性 :确保目标分支已经在 Gitee 仓库中存在。如果不存在,你可能需要先创建它,或者使用默认的分支(如 mastermain)。
  4. 安全性:不要将敏感信息(如访问令牌)硬编码在脚本中,而应使用环境变量或安全的配置管理系统。

参考链接

相关推荐
wanhengidc3 分钟前
云手机大规模出现的趋势 巨 椰
运维·服务器·科技·智能手机·云计算
秋刀鱼 ..7 分钟前
第二届机器学习、计算智能与模式识别国际学术会议(MLCIPR 2025)
运维·人工智能·python·科技·机器学习·自动化
喂我花生(๑•̀ㅂ•́)و✧12 分钟前
网络中的一些基本概念
运维·服务器
拾光Ծ12 分钟前
【Linux】深入理解“进程”:进程状态 -> Linux内核O(1)调度算法
linux·运维·服务器·算法
运维行者_12 分钟前
PostgreSQL 十大性能问题及解决方案
运维·服务器·网络·数据库·postgresql·智能路由器·snmp
卓码软件测评13 分钟前
Gatling WebSocket测试支持:ws、wsConnect、sendText、checkTextMessage详解
网络·websocket·网络协议·测试工具·ci/cd·自动化
晨非辰14 分钟前
C++ 波澜壮阔 40 年:引用、内联函数与现代空指针,效率跃升三基石
运维·c++·人工智能·后端·python·深度学习
草莓熊Lotso14 分钟前
企业级 Git 分支管理模型实战:从 Git Flow 到 DevOps 落地
运维·服务器·开发语言·c++·人工智能·git·devops
fiveym21 分钟前
PXE 装机引导文件提取与验证(Debian 9.13 适配,含 TFTP 传输测试)
运维·debian
wanhengidc23 分钟前
云手机 多开无忧 科技运行
运维·服务器·科技·游戏·智能手机