上游原仓库发布新版本时能否触发fork仓库的GitHub Action?
解答
可以实现,GitHub本身不支持上游仓库的release事件直接触发fork仓库的Action,你在自己的fork仓库里加个轮询工作流就能搞定,不需要依赖任何外部服务。
具体实现方式:
- 新建一个定时调度的GitHub Action工作流,调度频率按需设置,比如要及时响应就设15分钟一次,对时效要求不高设每天一次也行,触发段配置参考:
on: schedule: - cron: '15 */4 * * *' # 示例为每4小时的15分执行一次 workflow_dispatch: {} # 保留手动触发入口,方便调试 permissions: contents: write actions: write
- 工作流内的执行逻辑分三步:
- 调用GitHub原生API拉取上游仓库最新的正式release版本号,不需要预发布版本的话记得加过滤条件
- 读取自己仓库里存储的上次已同步处理过的上游release版本号,存在仓库变量、Secret或者仓库内专门的记录文件里都可以
- 两个版本号比对不一致说明上游发了新版本,这时候直接执行你预先写好的业务逻辑,或者通过GitHub CLI触发你已经配置好的其他目标工作流,执行完后把最新的版本号更新到存储位,避免重复触发
- 几个容易踩的坑:
- 记得给工作流开够权限,没有写权限的话没法更新存储的版本记录,也没法触发其他工作流
- 轮询频率别设太高,公共仓库的免费Action额度有限,太高频容易跑超额度
- 不需要额外配置webhook或者第三方转发服务,所有逻辑都在仓库Action内闭环,稳定性更高
如果只是要在上游新版本发布时拉取最新代码做构建、打包这类操作,直接把对应步骤写在版本比对通过的逻辑分支里就行,不用额外拆分工作流。
内容的提问来源于stack exchange,提问作者Mostafa Farghaly
相关产品推荐
相关产品推荐

