ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

告别手动操作:github-release 一键搞定 GitHub Releases 全流程

告别手动操作:github-release 一键搞定 GitHub Releases 全流程 告别手动操作github-release 一键搞定 GitHub Releases 全流程【免费下载链接】github-releaseCommandline app to create and edit releases on Github (and upload artifacts)项目地址: https://gitcode.com/gh_mirrors/gi/github-release每次发版都要手动打 tag、写发布说明、再逐个传二进制文件填错一个字段就推倒重来。github-release 是一个用 Go 写的轻量命令行工具直接对接 GitHub Releases API建发布、传资产、改信息几条命令全部搞定。为什么用它 release子命令一条命令完成「打开浏览器 → New release → 填表 → 关联 tag」的全套动作还能顺手指定 draft 或 pre-release 状态。upload直接把二进制挂到 release 上省掉了手动查 release id、拼上传地址的麻烦——Releases API 本身要求你先查询 id 才能上传资产这些细节它都替你处理了。发布后写错了用edit原地改名称和描述即可不必删掉整个 release 再把资产重新传一遍。核心逻辑集中在两个文件github-release.go 定义了所有子命令和参数解析每个命令的具体 API 请求逻辑则在 cmd.go 里实现。安装步骤 配置访问令牌从零跑通 ⚙️开工前只需要确认三件事Go 1.23版本要求见 go.modGit 客户端一个带repo权限的 GitHub 个人访问令牌PAT方式 A源码编译有 Go 环境的话一条命令装完go install github.com/github-release/github-release可执行文件会落在$(go env GOPATH)/bin确认这个目录在PATH里即可。如果想顺便看看代码也可以克隆下来编译git clone https://gitcode.com/gh_mirrors/gi/github-release cd github-release make编译产物github-release就生成在仓库根目录把它挪进PATH就能用。方式 B预编译二进制不需要 Go 环境去项目的 Releases 页面下载对应平台的二进制这些二进制本身就是由项目里的 Makefile 交叉编译、再用 bzip2/zip 压缩打包的然后加执行权限并放进系统路径chmod x github-release-linux-amd64 sudo mv github-release-linux-amd64 /usr/local/bin/github-release装好之后第一件事是配置访问令牌。推荐直接走环境变量export GITHUB_TOKEN你的令牌github-release启动时会自动从环境读取GITHUB_TOKEN、GITHUB_USER、GITHUB_REPO见 github-release.go 里的init函数所以 export 一次后面每条命令都不用再手动传-s参数。顺手把GITHUB_USER、GITHUB_REPO也设上连-u/-r都可以省了。配置完立刻验证它认不认你的仓库github-release info --user your_username --repo your_repo能打印出仓库的 tag 列表和已有 release 列表说明 token、网络、权限整条链路都通了。实战发布流程建发布、传资产、查结果 下面走一次完整的发版。场景是你刚在本地合完代码准备把 v1.0.0 推出去。第一步打 tag 并推到远端git tag v1.0.0 git push --tagsrelease 是挂在 tag 上的所以 tag 必须先存在于远端仓库。第二步创建 releasegithub-release release \ --user your_username \ --repo your_repo \ --tag v1.0.0 \ --name Version 1.0.0 \ --description 首个稳定版新功能A、新功能B--description传-时可以改为从标准输入读取发布说明Makefile 里就用这个技巧把git log的内容直接灌进 release。创建逻辑实现在 cmd.go 的releasecmd函数中。第三步上传编译好的二进制github-release upload \ --user your_username \ --repo your_repo \ --tag v1.0.0 \ --name app-linux-amd64 \ --file ./bin/app-linux-amd64--name是用户最终看到的资产名建议带上平台和架构后缀同名资产已存在时加-R可以覆盖注意覆盖不是原子操作。上传前工具会先通过ReleaseOfTag把 tag 解析成 release避免你手填 id 出错。第四步回查结果github-release info --user your_username --repo your_repo --tag v1.0.0输出里包含 release 的名称、发布时间、draft/prerelease 状态以及每个资产的类型、大小和下载数和预期一致这次发版就算收尾了。Release 的数据模型和 API 路径定义在 releases.go 中。接到 CI 里推送即发版 手动跑通一遍之后自然想把流程搬进 CI。思路很简单一旦推送了版本号 tag自动安装工具、建 release、传 Linux 二进制。把下面这份配置放进.github/workflows/release.ymlon: push: tags: [v*] jobs: release: runs-on: ubuntu-latest steps: - run: | go install github.com/github-release/github-release \ github-release release -u your_username -r your_repo -t v1.0.0 \ github-release upload -u your_username -r your_repo -t v1.0.0 -n app-linux-amd64 -f ./bin/app-linux-amd64 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}GitHub Actions 会自动注入GITHUB_TOKEN工具从环境变量直接读取无需额外参数。公司内网用 GitHub Enterprise 的话再通过GITHUB_API环境变量指定 API 端点即可。踩坑速查403、大文件、tag 冲突 ⚠️现象任何命令都返回 403 Forbidden→ 原因令牌没有repo权限或令牌无权访问该私有仓库 → 解法重建带repo范围的 PAT 并重新export GITHUB_TOKEN报错解析逻辑见 error.go。现象上传大文件失败→ 原因GitHub 对单个资产有 2GB 上限 → 解法先压缩再传Makefile 里把 ~9MB 的 Go 二进制用 bzip2/zip 压到 ~2MB就是标准做法。现象release命令返回 422→ 原因该 tag 已存在一个 release → 解法别重复release改用edit原地更新名称和描述已上传的资产完全不受影响。命令速查 命令作用github-release info查看仓库现有 tag、全部 release 及其资产支持-j输出 JSONgithub-release release基于指定 tag 创建 release支持 draft、pre-releasegithub-release upload把二进制等资产上传到指定 release-R可覆盖同名资产github-release download从 release 下载资产加-l直接取最新版github-release edit修改指定 release 的名称与描述不影响已上传资产另外还有delete用于整条删除 release完整参数见github-release --help。回到开头那个场景以后发版不用再开浏览器填表传文件了直接把第一条github-release release命令敲进终端剩下的交给它。更多用法示例、环境变量说明和贡献指南看 README.md 就够了。【免费下载链接】github-releaseCommandline app to create and edit releases on Github (and upload artifacts)项目地址: https://gitcode.com/gh_mirrors/gi/github-release创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表