GitHub Actions 手动触发 workflow

如何手动触发 GitHub Actions workflow,特别是针对已有 release 补充二进制文件

#type / howto #status / evergreen #tech / ops #tech / ops / git #platform / github

[!info] related notes

GitHub Actions 手动触发 workflow

目标

手动触发 GitHub Actions workflow,特别是为已存在的 release 补充二进制文件(如 Windows/Linux 构建产物),而不影响 release-please 的版本状态。

适用场景

  • 已有 release/tag(如 v0.1.0),但缺少二进制文件
  • 需要为现有 release 补充构建产物
  • 避免手动创建新 tag 导致 release-please 版本基线混乱

步骤

1. 通过 GitHub 网页界面触发

  1. 打开仓库的 Actions 页面
  2. 在左侧找到 Release Assets 这个 workflow
  3. 点击右上角 Run workflow 按钮
  4. 在弹出的表单中:
    • tag:输入已存在的 tag(如 v0.1.0
    • branch:选择 main 或其他目标分支
  5. 点击 Run workflow 确认

2. 通过命令行触发(使用 gh CLI)

gh workflow run release.yml -f tag=v0.1.0

关键点

  • tag 输入的是”已存在的 Git tag”,不是新建 tag
  • workflow 会使用这个 tag checkout 对应代码,然后上传构建产物到同名 GitHub Release
  • 不会改动 release-please 的版本状态,也不会重新生成 changelog

验证

触发成功后,检查:

  1. Actions 页面:workflow 是否正在运行或已完成
  2. Release 页面:现有 release(如 v0.1.0)是否新增了二进制文件
  3. 预期产物
    • Windows: *Setup.exe, *Setup.zip
    • Linux: *.AppImage, *.deb, *.rpm

常见问题

Q1: Actions 页面没有 Run workflow 按钮?

可能原因:

  • 没有仓库写权限
  • 默认分支上还没有包含 workflow_dispatch 触发器
  • 打开的不是正确的 workflow

Q2: 为什么不能手动创建新 tag?

  • release-please 靠”上一个 release tag”决定下一次版本和 changelog 基线
  • 手动创建 semver tag(尤其是落在 main 上的新版本 tag)可能打乱 release-please 的基线
  • 导致后续版本或 changelog 计算异常

Q3: 什么时候可以手动创建 tag?

只在以下情况考虑:

  • 一次性历史补录
  • tag 格式必须与 release-please 配置一致:vX.Y.Z
  • 必须指向正确的发布提交
  • 确认不会和 release-please 下一次准备发的版本冲突

Q4: 补资产 vs 补版本的区别?

  • 补资产:为已有 release 添加二进制文件 → 使用 workflow_dispatch 手动触发
  • 补版本:创建新的 release/tag → 让 release-please 自动处理

相关配置

  • release-please 配置:release-please-config.json
  • workflow 文件:.github/workflows/release.yml
  • 确保 workflow 包含 workflow_dispatch 触发器:
on:
  workflow_dispatch:
    inputs:
      tag:
        description: 'Tag to build assets for'
        required: true
        type: string
创建于 2026/3/29 更新于 2026/5/27