如何为 SoundCleod 搭建自动更新服务?Nuts + GitHub Releases 完整部署教程
如何为 SoundCleod 搭建自动更新服务?Nuts + GitHub Releases 完整部署教程
【免费下载链接】soundcleodSoundCloud for macOS and Windows项目地址: https://gitcode.com/gh_mirrors/so/soundcleod
SoundCleod 是一款专为 macOS 和 Windows 打造的 SoundCloud 桌面客户端,让你无需浏览器就能畅听海量音乐。想为 SoundCleod 搭建自动更新服务?本教程将带你从零开始,使用 Nuts 更新服务器与 GitHub Releases 构建一套完整的自动更新部署方案,让每次发布新版本都能自动推送到用户桌面,真正实现一键发布、全量升级。整个流程全部基于免费开源工具,适合任何想学习 Electron 应用自动更新机制的开发者。
SoundCleod 的自动更新是如何工作的?
在动手部署前,先理解 SoundCleod 的更新机制。它的更新逻辑写在 app/auto-updater.js 中:应用启动时会向更新服务器请求${baseUrl}/update/${platform}/${version}这个地址,服务器根据操作系统和当前版本号,返回最新的安装包下载地址。
更新服务器的角色由Nuts扮演。Nuts 是一个专门为 GitHub Releases 设计的轻量更新服务:你只需要把新版本安装包上传到 GitHub Releases,Nuts 就会自动生成对应的更新元数据,SoundCleod 客户端便能发现并下载新版本。
搭建自动更新服务的前置条件
开始部署前,请确认你已经准备好以下材料:
- ✅ 一个 GitHub 账号(用于存放发布包)
- ✅ 一个 Heroku 账号(用于托管 Nuts 服务,免费即可)
- ✅ 本地已安装 Git 与 Node.js
- ✅ 一份 SoundCleod 源码(可克隆
https://gitcode.com/gh_mirrors/so/soundcleod仓库获取)
整个过程大约需要 20 分钟,全程可视化操作,无需编写任何服务器代码。
第一步:一键部署 Nuts 服务到 Heroku
Nuts 项目提供了一键部署按钮,这是整个教程中最简单的一步:
- 打开 Nuts 项目主页,点击Deploy to Heroku按钮
- 在弹窗中为应用起一个名字,例如
soundcleod-updates - 选择部署区域后点击Deploy App,等待构建完成
- 部署成功后,访问
https://你的应用名.herokuapp.com/,看到正常响应即代表 Nuts 服务已上线
这里只需要在 Heroku 控制台填写GitHub 仓库地址(格式为用户名/仓库名),Nuts 会自动读取该仓库 Releases 中的安装包信息。
第二步:生成 GitHub Token 与配置密钥
Nuts 需要访问你的 GitHub Releases 来拉取版本信息,因此需要一个 Token:
- 打开 GitHub 设置页面的Developer settings → Personal access tokens
- 点击Generate new token,勾选
public_repo权限即可,无需其他权限 - 复制生成的 Token,填入 Heroku 应用的环境变量
GITHUB_TOKEN - 再生成一个随机字符串(可用
openssl rand -hex 16生成),填入环境变量GITHUB_SECRET,这个密钥用于验证 Webhook 请求来源
配置完成后,Nuts 就能访问你的 Releases 了。
第三步:配置 GitHub Webhook 实现自动刷新
为了做到"发布即更新",还需要让 GitHub 在发布新版本时主动通知 Nuts:
- 进入你的仓库设置页面,点击Webhooks → Add webhook
- Payload URL填写:
https://你的应用名.herokuapp.com/refresh - Content type选择
application/json - Secret填写上一步生成的
GITHUB_SECRET随机字符串 - 在Which events中只勾选Release published(发布版本)事件
- 点击Add webhook保存
配置完成后,每当你在 GitHub 发布新版本,Nuts 都会自动刷新更新信息,SoundCleod 用户下次启动应用时就会收到更新提示。
第四步:让 SoundCleod 指向你的更新服务
SoundCleod 默认的更新服务器地址是https://updates.soundcleod.com,想使用自己的服务,只需在启动时通过参数覆盖即可。
在 app/options.js 中可以看到,更新地址由--auto-updater-base-url参数控制。你可以:
- 开发调试时直接运行:
electron ./app --auto-updater-base-url=https://你的应用名.herokuapp.com - 正式发布时,在打包命令中带上该参数,或修改 app/auto-updater.js 中的地址逻辑
这样你的 SoundCleod 客户端就会从自建服务获取更新了。
第五步:发布新版本并验证更新流程
一切就绪后,按照项目维护文档 MAINTENANCE.md 中的流程发布新版本:
- 使用 release.sh 脚本提升版本号并生成更新日志
- 执行打包命令生成对应平台的安装包(macOS 生成
.dmg,Windows 生成 Squirrel 安装包,配置见 package.json) - 将安装包上传到 GitHub Releases,填写版本说明后发布
- Webhook 自动通知 Nuts 刷新更新信息
- 在已安装旧版本的机器上启动 SoundCleod,观察控制台输出
autoUpdater update available,即代表更新流程已打通
常见问题排查
更新请求 404?检查 Nuts 的GITHUB_TOKEN是否配置正确,以及仓库名是否填写为用户名/仓库名格式。
Webhook 发送失败?确认 Payload URL 末尾的/refresh路径拼写正确,且 Secret 与 Heroku 环境变量中的GITHUB_SECRET完全一致。
Windows 上无法自动更新?SoundCleod 的 Windows 版使用 Squirrel 更新机制,需要确认打包时使用了squirrel目标,且更新元数据(RELEASES 文件)随安装包一起发布。
只想跳过自动更新?可以在 main.js 中看到,通过useAutoUpdater开关即可控制是否启用自动更新模块。
总结
通过 Nuts + GitHub Releases,你可以在半小时内为 SoundCleod 搭建一套完整的自动更新服务:Nuts 负责生成更新元数据,GitHub Releases 负责存放安装包,Webhook 负责自动化通知,三者配合实现"发布新版本 → 用户自动升级"的闭环体验。这套方案同样适用于其他基于 Electron 的桌面应用,学会了它,你就掌握了桌面应用自动更新服务的完整部署方法。
【免费下载链接】soundcleodSoundCloud for macOS and Windows项目地址: https://gitcode.com/gh_mirrors/so/soundcleod
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
