如何使用wget获取GitHub私有仓库?附变更日志生成需求
使用wget访问GitHub私有仓库并抓取PR/Commit生成变更日志
一、用wget访问GitHub私有资源的核心:添加认证头
GitHub私有仓库的API或资源访问需要认证,最简便的方式是使用个人访问令牌(PAT),wget通过--header参数携带认证信息即可访问。
步骤1:生成GitHub个人访问令牌
在GitHub设置中创建PAT,需勾选repo权限(确保能访问私有仓库的PR、Commit等数据),生成后妥善保存令牌(仅显示一次)。
步骤2:用wget请求GitHub API(抓取PR/Commit)
直接用wget请求GitHub REST API,带上认证头即可获取私有仓库的PR和Commit数据:
- 抓取已合并的PR列表(以main分支为基准):
wget --header="Authorization: token YOUR_GITHUB_PAT" -O prs.json "https://api.github.com/repos/OWNER/REPO/pulls?state=closed&base=main&sort=updated&direction=desc" - 抓取指定分支的Commit列表:
注:将wget --header="Authorization: token YOUR_GITHUB_PAT" -O commits.json "https://api.github.com/repos/OWNER/REPO/commits?sha=main&per_page=100"OWNER替换为仓库所属用户/组织,REPO替换为仓库名,调整参数可筛选PR状态、Commit范围等。
二、解析数据生成变更日志
获取的JSON数据可以用jq工具快速提取关键信息,生成符合需求的变更日志格式:
- 提取PR信息生成Markdown格式:
jq '.[] | "- #\(.number) \(.title)(提交者:\(.user.login))"' prs.json > changelog.md - 提取Commit信息追加到日志:
jq '.[] | "- \(.sha[:7]) \(.commit.message | split("\n")[0])(作者:\(.commit.author.name))"' commits.json >> changelog.md
三、上传至Confluence
通过Confluence的REST API上传生成的变更日志,示例(wget也可实现类似POST请求,以下用curl作参考):
curl -u YOUR_CONFLUENCE_USER:YOUR_CONFLUENCE_TOKEN -X POST \ -H "Content-Type: application/json" \ -d '{ "type": "page", "title": "项目变更日志", "space": {"key": "SPACE_KEY"}, "body": { "storage": { "value": "<h1>近期变更</h1>"'"$(cat changelog.md | sed 's/-/\\*/g')"'", "representation": "storage" } } }' \ https://your-confluence-domain/rest/api/content/
注:替换Confluence的用户、令牌、空间键和域名。
四、处理分页(可选)
GitHub API默认每页返回30条数据,若PR/Commit数量较多,可通过page参数手动分页获取,或解析响应头中的Link字段自动处理分页。
内容的提问来源于stack exchange,提问作者Ozzy
相关产品推荐
相关产品推荐

