You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置GitHub Actions仅在main分支变更或PR合并后发布包?

问题描述

我正在尝试用GitHub Actions构建持续部署(CD)工作流,这是一个Clojure/ClojureScript项目,作为动态Web应用的依赖项。我希望每当project.clj文件变更时自动将Maven包发布到GitHub Packages——因为这个文件存储项目版本,修改它通常意味着要发布新版本。

目前我已经接近实现目标,但发现仅提交Pull Request(PR)时也会触发包发布。我希望只在以下两种情况触发CD:

  • 直接修改main分支后;
  • Pull Request合并后;
    不想在仅提交PR时触发。

我的cd.yml配置如下:

name: 'cd'

on:
  workflow_dispatch:
  push:
    branches:
      - main
    paths:
      - 'project.clj'
  pull_request:
    paths:
      - 'project.clj'

请问需要如何修改工作流配置?仅删除最后三行即可解决问题吗?

解决方案

是的,删除配置里的最后三行(即pull_request相关的触发规则)就能解决问题。

原因如下:

  • PR合并到main分支时,本质是向main分支发起了一次push操作,这会触发已配置的push规则(针对main分支且project.clj变更),覆盖你需要的第二种触发场景。
  • 直接向main分支提交修改的场景,原本就由现有的push规则覆盖。
  • 删除pull_request规则后,PR提交(未合并)时不会再触发CD工作流,避免不必要的包发布。

修改后的完整配置:

name: 'cd'

on:
  workflow_dispatch:
  push:
    branches:
      - main
    paths:
      - 'project.clj'

内容的提问来源于stack exchange,提问作者Pedro Delfino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:01:07