Skip to content

GitHub Release 发布指南

Release 是 GitHub 提供的版本发布功能,用于标记项目的重要里程碑版本,并分发编译好的文件给用户。

什么是 Release

Release 基于 Git Tag 创建,主要用途:

  • 标记项目的正式版本(如 v1.0.0、v2.0.0)
  • 提供版本更新说明(Release Notes)
  • 分发编译好的二进制文件、安装包等
  • 让用户无需克隆仓库或自行编译即可使用

什么是 Assets

Assets 是附加在 Release 中的文件资源,通常包括:

  • 编译好的可执行文件(.exe、.app、.deb 等)
  • 安装包(.msi、.dmg、.pkg 等)
  • 压缩包(.zip、.tar.gz 等)
  • 文档、配置文件等

GitHub 还会自动生成两个源码压缩包:

  • Source code (zip)
  • Source code (tar.gz)

创建 Release

方法 1:通过 GitHub 网页创建

这是最常用的方法,适合大多数场景。

步骤

  1. 进入仓库页面,点击右侧 "Releases"(或直接访问 https://github.com/用户名/仓库名/releases

  2. 点击 "Create a new release" 或 "Draft a new release"

  3. 填写版本信息:

    Tag version(标签版本)

    • 输入版本号,如 v1.0.0
    • 如果 Tag 不存在,会自动创建
    • 可以选择基于哪个分支创建(默认是主分支)

    Release title(版本标题)

    • 版本的显示名称,如 "Version 1.0.0" 或 "首个正式版本"
    • 可以使用中文或英文

    Description(版本说明)

    • 详细的更新内容
    • 支持 Markdown 格式
    • 建议包含:新功能、Bug 修复、破坏性变更、升级说明等
  4. 上传 Assets 文件:

    • 点击 "Attach binaries by dropping them here or selecting them" 区域
    • 选择要上传的文件(可以多选)
    • 支持拖拽上传
    • 单个文件最大 2GB
  5. 选择发布选项:

    • Set as the latest release:标记为最新版本(推荐)
    • ⚠️ Set as a pre-release:标记为预发布版本(测试版、Beta 版)
    • 📝 Create a discussion for this release:为此版本创建讨论话题
  6. 点击 "Publish release" 发布

    或点击 "Save draft" 保存为草稿,稍后再发布

示例:Release 说明模板

markdown
## 🎉 新功能

- 添加了深色模式支持
- 新增用户设置页面
- 支持导出数据为 CSV 格式

## 🐛 Bug 修复

- 修复了登录页面在移动端显示异常的问题
- 解决了数据加载时的内存泄漏
- 修复了文件上传失败的问题

## 💥 破坏性变更

- API 接口 `/api/v1/users` 已废弃,请使用 `/api/v2/users`
- 配置文件格式从 JSON 改为 YAML

## 📦 下载说明

- **Windows 用户**:下载 `myapp-v1.0.0-windows-x64.exe`
- **macOS 用户**:下载 `myapp-v1.0.0-macos-arm64.dmg`
- **Linux 用户**:下载 `myapp-v1.0.0-linux-amd64.tar.gz`

## 🔧 升级指南

1. 备份现有配置文件
2. 下载对应平台的安装包
3. 运行安装程序
4. 参考文档更新配置文件格式

## 📝 完整更新日志

查看 [CHANGELOG.md](https://github.com/用户名/仓库名/blob/main/CHANGELOG.md)

方法 2:通过命令行创建

适合自动化发布流程或 CI/CD 集成。

使用 GitHub CLI

首先安装 GitHub CLI

bash
# Windows (使用 winget)
winget install --id GitHub.cli

# macOS
brew install gh

# Linux
# 参考官方文档:https://github.com/cli/cli/blob/trunk/docs/install_linux.md

登录 GitHub:

bash
gh auth login

创建 Release:

bash
# 基本用法
gh release create v1.0.0 \
  --title "Version 1.0.0" \
  --notes "Release notes here"

# 上传 Assets
gh release create v1.0.0 \
  --title "Version 1.0.0" \
  --notes "Release notes here" \
  ./build/app.exe \
  ./build/installer.msi \
  ./build/app.zip

# 从文件读取 Release Notes
gh release create v1.0.0 \
  --title "Version 1.0.0" \
  --notes-file RELEASE_NOTES.md \
  ./dist/*

# 创建预发布版本
gh release create v1.0.0-beta.1 \
  --title "Version 1.0.0 Beta 1" \
  --notes "Beta release" \
  --prerelease

# 创建草稿
gh release create v1.0.0 \
  --title "Version 1.0.0" \
  --notes "Draft release" \
  --draft

使用 Git Tag + 手动上传

bash
# 1. 创建 Tag
git tag -a v1.0.0 -m "Release version 1.0.0"

# 2. 推送 Tag 到远程
git push origin v1.0.0

# 3. 在 GitHub 网页上基于这个 Tag 创建 Release

方法 3:通过 GitHub Actions 自动发布

适合需要自动化构建和发布的项目。

创建 .github/workflows/release.yml

yaml
name: Release

on:
  push:
    tags:
      - 'v*'  # 当推送 v 开头的 tag 时触发

jobs:
  build-and-release:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v3
    
    - name: Build project
      run: |
        # 你的构建命令
        npm install
        npm run build
    
    - name: Create Release
      uses: softprops/action-gh-release@v1
      with:
        files: |
          dist/app.exe
          dist/installer.msi
          dist/app.zip
        body: |
          ## 更新内容
          
          - 新功能 1
          - Bug 修复 1
        draft: false
        prerelease: false
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

使用方法:

bash
# 创建并推送 Tag,自动触发发布
git tag v1.0.0
git push origin v1.0.0

版本号规范

推荐使用 语义化版本(Semantic Versioning)

格式

v主版本号.次版本号.修订号[-预发布标识]

示例:
v1.0.0
v1.2.3
v2.0.0-beta.1
v1.0.0-rc.2

版本号含义

  • 主版本号(Major):不兼容的 API 修改
  • 次版本号(Minor):向下兼容的功能新增
  • 修订号(Patch):向下兼容的问题修正

版本号示例

版本号说明
v1.0.0首个正式版本
v1.1.0新增功能,向下兼容
v1.1.1Bug 修复
v2.0.0重大更新,可能不兼容旧版本
v1.0.0-alpha.1Alpha 测试版
v1.0.0-beta.1Beta 测试版
v1.0.0-rc.1Release Candidate(候选版本)

版本号递增规则

  1. 修复 Bug:v1.0.0v1.0.1
  2. 新增功能(兼容):v1.0.1v1.1.0
  3. 重大更新(不兼容):v1.1.0v2.0.0

Assets 管理

上传 Assets

在创建 Release 时上传:

  • 直接在创建页面上传文件

在已发布的 Release 中添加:

  1. 进入 Release 页面
  2. 点击对应版本的 "Edit release"
  3. 上传新文件
  4. 点击 "Update release"

Assets 命名建议

清晰的文件命名可以帮助用户快速找到需要的版本:

格式:项目名-版本号-平台-架构.扩展名

示例:
myapp-v1.0.0-windows-x64.exe
myapp-v1.0.0-windows-x86.exe
myapp-v1.0.0-macos-arm64.dmg
myapp-v1.0.0-macos-x64.dmg
myapp-v1.0.0-linux-amd64.tar.gz
myapp-v1.0.0-linux-arm64.tar.gz
myapp-v1.0.0-source.zip

常见平台和架构

平台架构说明
Windowsx6464位 Windows
Windowsx8632位 Windows
Windowsarm64ARM64 Windows
macOSx64Intel Mac
macOSarm64Apple Silicon (M1/M2/M3)
Linuxamd6464位 Linux
Linuxarm64ARM64 Linux
Linuxarmv7ARM v7 Linux

删除 Assets

  1. 进入 Release 页面
  2. 点击 "Edit release"
  3. 点击文件旁边的 ❌ 删除
  4. 点击 "Update release"

下载 Release 文件

通过网页下载

  1. 访问仓库的 Releases 页面:https://github.com/用户名/仓库名/releases
  2. 找到需要的版本
  3. 在 Assets 区域点击文件名下载

直接链接下载

格式:

https://github.com/用户名/仓库名/releases/download/标签名/文件名

示例:

https://github.com/tibold/svg-explorer-extension/releases/download/v1.2.0/SvgSee-x64.msi

使用命令行下载

bash
# 使用 wget
wget https://github.com/用户名/仓库名/releases/download/v1.0.0/app.zip

# 使用 curl
curl -L -O https://github.com/用户名/仓库名/releases/download/v1.0.0/app.zip

# 使用 GitHub CLI 下载最新版本
gh release download --repo 用户名/仓库名

管理 Release

编辑 Release

  1. 进入 Release 页面
  2. 点击对应版本的 "Edit release"
  3. 修改标题、说明或上传新文件
  4. 点击 "Update release"

删除 Release

  1. 进入 Release 页面
  2. 点击对应版本的 "Edit release"
  3. 滚动到底部,点击 "Delete this release"
  4. 确认删除

注意

删除 Release 不会删除对应的 Git Tag,需要单独删除:

bash
# 删除本地 Tag
git tag -d v1.0.0

# 删除远程 Tag
git push origin :refs/tags/v1.0.0

标记为 Latest Release

GitHub 会自动将最新的非预发布版本标记为 "Latest"。

手动修改:

  1. 进入 Release 页面
  2. 点击要标记的版本的 "Edit release"
  3. 勾选 "Set as the latest release"
  4. 点击 "Update release"

最佳实践

1. 保持版本号一致

确保以下位置的版本号一致:

  • Git Tag
  • Release 标题
  • 代码中的版本号(package.json、setup.py 等)
  • 文档中的版本号

2. 编写详细的 Release Notes

好的 Release Notes 应该包含:

  • ✅ 新功能列表
  • ✅ Bug 修复列表
  • ✅ 破坏性变更说明
  • ✅ 升级指南
  • ✅ 已知问题
  • ✅ 下载说明

3. 提供多平台支持

为不同平台的用户提供对应的安装包:

  • Windows:.exe、.msi
  • macOS:.dmg、.pkg
  • Linux:.deb、.rpm、.tar.gz

4. 使用 Changelog

在仓库中维护 CHANGELOG.md 文件,记录每个版本的详细变更。

5. 自动化发布流程

使用 GitHub Actions 或其他 CI/CD 工具自动化构建和发布流程。

6. 测试后再发布

  • 使用 Draft(草稿)功能先创建 Release
  • 测试下载链接和文件完整性
  • 确认无误后再正式发布

7. 预发布版本

对于测试版本,使用 Pre-release 标记:

  • v1.0.0-alpha.1:内部测试版
  • v1.0.0-beta.1:公开测试版
  • v1.0.0-rc.1:候选发布版

常见问题

如何修改已发布的 Release?

点击 "Edit release" 即可修改标题、说明和上传新文件。

如何删除 Release 但保留 Tag?

删除 Release 不会删除 Tag,Tag 会保留在仓库中。

如何删除 Tag?

bash
# 删除本地 Tag
git tag -d v1.0.0

# 删除远程 Tag
git push origin --delete v1.0.0

Assets 文件大小限制?

单个文件最大 2GB。

如何让用户自动获取最新版本?

可以使用 GitHub API 获取最新 Release 信息:

bash
# 获取最新 Release 信息
curl https://api.github.com/repos/用户名/仓库名/releases/latest

# 获取最新版本号
curl -s https://api.github.com/repos/用户名/仓库名/releases/latest | grep "tag_name"

如何在 README 中显示最新版本徽章?

使用 shields.io:

markdown
![GitHub release](https://img.shields.io/github/v/release/用户名/仓库名)

效果:GitHub release

相关资源