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

打印 上一主题 下一主题

主题 1597|帖子 1597|积分 4791

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在软件开发过程中,维护一个清晰的变更日志(CHANGELOG.md)是项目管理和版本控制中不可或缺的一部门。随着项目标希望,经常需要更新 CHANGELOG 文件来记录新功能、修复和变更。然而,手动将当地的 CHANGELOG.md 文件推送到 Gitee 堆栈可能会变得繁琐,特别是在连续集成(CI)环境中。荣幸的是,Gitee 提供了强大的 API,答应我们自动化这一过程。
步骤 1: 获取 Gitee API 访问令牌

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

  • 登录到 Gitee。
  • 进入“设置” -> “安全设置” -> “私人令牌”。
  • 点击“生成新令牌”,输入令牌形貌并选择相应的权限(至少需要堆栈的读写权限)。
  • 复制生成的令牌,并在你的脚本或环境变量中安全地存储它。
步骤 2: 编写 Python 脚本

接下来,我们将编写一个 Python 脚原来处理文件的读取、编码和上传过程。
  1. import requests
  2. import base64
  3. import os
  4. # 从环境变量中获取必要的配置
  5. GITEE_ACCESS_TOKEN = os.environ.get('GITEE_ACCESS_TOKEN')
  6. REPO_OWNER = 'your_repo_owner'  # 仓库所有者
  7. REPO_NAME = 'your_repo_name'    # 仓库名称
  8. BRANCH_NAME = 'your_target_branch'  # 目标分支名
  9. CHANGELOG_PATH = 'CHANGELOG.md'  # CHANGELOG 文件路径
  10. def upload_changelog(access_token, owner, repo, branch, file_path):
  11.     url = f"https://gitee.com/api/v5/repos/{owner}/{repo}/contents/CHANGELOG.md"
  12.     # 读取文件并转换为 base64 编码
  13.     with open(file_path, "rb") as file:
  14.         encoded_content = base64.b64encode(file.read()).decode('utf-8')
  15.     # 构建请求头部和请求体
  16.     headers = {
  17.         'Authorization': f'token {access_token}',
  18.         'Content-Type': 'application/json'
  19.     }
  20.     data = {
  21.         "message": "ci: update CHANGELOG.md",
  22.         "content": encoded_content,
  23.         "sha": "",  # 初始提交时不需要提供 SHA
  24.         "branch": branch,
  25.         "encoding": "base64"
  26.     }
  27.     # 发送 POST 请求
  28.     response = requests.put(url, headers=headers, json=data)
  29.     if response.status_code == 201:
  30.         print("CHANGELOG.md uploaded successfully!")
  31.     else:
  32.         print("Failed to upload CHANGELOG.md:", response.json())
  33. # 调用函数上传 CHANGELOG.md
  34. 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 环境已经安装。
注意事项


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



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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表