怎么使用github actions自动构建并上传到release

举报
yd_236198820 发表于 2026/10/02 14:25:02 2026/10/02
【摘要】 在 GitHub Actions 里自动构建并上传到 Release,最省心的方法是使用现成的开源 Action,其中 **`softprops/action-gh-release`** 是目前社区里最主流、最推荐的选择。### 🎯 最快上手方案:使用 softprops/action-gh-release这个 Action 用起来很简单,只要在构建步骤完成后加上几行配置,它就会自动帮你创...

在 GitHub Actions 里自动构建并上传到 Release,最省心的方法是使用现成的开源 Action,其中 **`softprops/action-gh-release`** 是目前社区里最主流、最推荐的选择。

### 🎯 最快上手方案:使用 softprops/action-gh-release

这个 Action 用起来很简单,只要在构建步骤完成后加上几行配置,它就会自动帮你创建 Release 并把文件上传上去。

**一个完整的最小工作流示例**(保存为 `.github/workflows/release.yml`):

```yaml
name: Build and Release

on:
  push:
    tags:
      - 'v*' # 只在推送 v 开头的标签时触发,比如 v1.0.0

jobs:
  build-and-release:
    runs-on: ubuntu-latest
    # 关键:必须给工作流写入内容的权限,否则无法创建 Release
    permissions:
      contents: write

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      # --- 这里放你的构建步骤 ---
      - name: Build your project
        run: |
          # 示例:假设构建产物是 dist/my-app.zip
          mkdir -p dist
          echo "Hello" > dist/my-app.zip

      # --- 核心:上传到 Release ---
      - name: Upload to Release
        uses: softprops/action-gh-release@v2
        with:
          files: dist/my-app.zip  # 支持通配符,如 dist/*.zip
```

### 💡 几个关键点

**1. 权限设置(最容易踩坑)**
必须在工作流级别或 job 级别设置 `permissions: contents: write`。如果不加,GitHub 默认只给 Token 读权限,上传 Release 会失败并报错 “Resource not accessible by integration”。

**2. 触发方式**
通常用 **推送标签(tag)** 来触发发布,比如 `git tag v1.0.0 && git push origin v1.0.0`。`on: push: tags: ['v*']` 这种写法可以确保只有版本标签才会触发发布。

**3. 上传多个文件**
`files` 参数支持多行路径或通配符,例如:
```yaml
files: |
  dist/*.zip
  dist/*.tar.gz
  README.md
```

### 🔧 替代方案

如果你需要更精细的控制(比如在同一个工作流里先创建草稿、上传所有文件、再发布),可以考虑:

*   **`ncipollo/release-action`**:功能类似,也支持通过 `tag` 参数一步到位创建 Release 并上传。
*   **直接用 `gh` CLI**:如果只是想灵活控制,可以用 `gh release create` 和 `gh release upload` 命令组合,适合有特殊流程的场景。

你是打算用这个工作流来发布什么类型的项目(比如 Rust 二进制、Python 包、还是普通的 ZIP 压缩包)?告诉我构建产物长什么样,我可以帮你把 `files` 路径改得更精确。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。