NukeBuild脚本调用Octokit.Net创建GitHub Release遇NotFoundException排查
以下是几种核心排查方向及解决办法:
目标Git标签未推送到远程仓库
GitHub创建Release必须关联一个已存在的远程标签。如果你的代码中指定的标签仅在本地创建、未推送到GitHub,Octokit调用API时会返回404错误。
操作:执行git tag确认本地存在目标标签,运行git push origin <你的标签名>推送到远程;检查代码中标签名称的大小写、拼写是否和远程完全一致。个人访问令牌(PAT)权限不足
虽然能获取默认分支,但创建Release需要额外权限。GitHub API在权限不足时有时会返回404而非403,以此隐藏仓库存在性。
操作:检查PAT是否包含repo(私有仓库)或public_repo(公有仓库)权限;若为组织仓库,确认令牌拥有该仓库的写入权限,且组织未限制第三方应用访问。标签名称不符合GitHub规范
标签名包含空格、/、\等特殊字符时,API可能无法识别该标签,导致404。
操作:确保标签名仅使用字母、数字、-、.、_;对比仓库已存在的标签格式,保持一致。Octokit版本与GitHub API不兼容
旧版Octokit可能使用了已废弃的API端点,引发请求被拒绝返回404。
操作:更新Octokit到最新稳定版本;确认代码中创建Release的方法正确设置了TagName参数(而非其他字段)。标签关联的提交未推送到远程
若标签绑定的提交仅在本地、未同步到GitHub,API无法找到该标签对应的提交,也会返回404。
操作:运行git show <你的标签名>查看关联提交,执行git push origin <对应分支名>将提交推送到远程;确保该提交存在于仓库的某个已推送分支中。
内容的提问来源于stack exchange,提问作者Xilconic

