GitHub Actions 手动触发 workflow
如何手动触发 GitHub Actions workflow,特别是针对已有 release 补充二进制文件
#type / howto
#status / evergreen
#tech / ops
#tech / ops / git
#platform / github
[!info] related notes
- 前置笔记: github-actions
- 相关 MOC: ci-cd-moc
GitHub Actions 手动触发 workflow
目标
手动触发 GitHub Actions workflow,特别是为已存在的 release 补充二进制文件(如 Windows/Linux 构建产物),而不影响 release-please 的版本状态。
适用场景
- 已有 release/tag(如 v0.1.0),但缺少二进制文件
- 需要为现有 release 补充构建产物
- 避免手动创建新 tag 导致 release-please 版本基线混乱
步骤
1. 通过 GitHub 网页界面触发
- 打开仓库的 Actions 页面
- 在左侧找到 Release Assets 这个 workflow
- 点击右上角 Run workflow 按钮
- 在弹出的表单中:
- tag:输入已存在的 tag(如
v0.1.0) - branch:选择
main或其他目标分支
- tag:输入已存在的 tag(如
- 点击 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
验证
触发成功后,检查:
- Actions 页面:workflow 是否正在运行或已完成
- Release 页面:现有 release(如 v0.1.0)是否新增了二进制文件
- 预期产物:
- Windows:
*Setup.exe,*Setup.zip - Linux:
*.AppImage,*.deb,*.rpm
- Windows:
常见问题
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