CheckMarx中文网站 > 热门推荐 > Checkmarx拉取请求不触发扫描怎么办 Checkmarx PR触发条件怎么设置
教程中心分类
Checkmarx拉取请求不触发扫描怎么办 Checkmarx PR触发条件怎么设置
发布时间:2026/06/01 13:37:51

  同样是提一个PR,有的仓库能自动出扫描结果和评论,有的却一点动静都没有,常见原因不是规则写错,而是触发链路断在了更前面,例如Webhook没创建成功、Scan Trigger没开、Protected Branches没把目标分支纳入,或你用的是CI触发但流水线事件根本没命中。Checkmarx One这类代码仓库集成通常依赖仓库事件与Webhook来触发扫描,触发条件本质上由Scan Trigger与Protected Branches共同决定。

  一、Checkmarx拉取请求不触发扫描怎么办

 

  排查不触发,先别急着改扫描参数,先把你走的是哪条触发链路确认清楚,是Checkmarx One代码仓库集成的Webhook触发,还是GitHub Actions与GitLab CI这类流水线触发。两条链路的故障点完全不同,先分型能少走很多弯路。

 

  1、先确认当前仓库是Webhook触发还是CI触发。

 

  在Checkmarx One里看该仓库对应的项目来源,如果是从代码仓库导入并开启自动扫描,通常是Webhook触发;如果你们是通过GitHub Actions或GitLab CI调用扫描,则优先去看工作流或流水线是否在PR事件上启动。

 

  2、核对Scan Trigger是否包含Pull request且处于开启状态。

 

  在Checkmarx One集成配置里找到权限设置区域,确认Scan Trigger显示为Push与Pull request,并且处于开启;这类开关关闭时,PR与Push事件即使到达仓库侧,也不会在Checkmarx One侧触发自动扫描。

 

  3、核对Protected Branches是否包含本次PR的目标分支。

 

  进入仓库集成配置的分支选择步骤,确认目标分支被选为Protected Branches;很多团队只选了main或master,结果PR目标是release或develop时不会触发扫描。Protected Branches会直接影响PR与Push的触发与反馈通知。

 

  4、检查仓库侧Webhook是否创建成功且事件范围包含PR。

 

  在GitHub仓库进入【Settings】→【Webhooks】,在GitLab仓库进入【Settings】→【Webhooks】,确认有指向Checkmarx的Webhook,并且事件订阅包含Pull request或Merge request相关事件;若Webhook根本没创建或事件没勾选,Checkmarx One就收不到触发信号。

 

  5、排查是否因为权限不足导致Webhook无法由Checkmarx创建。

 

  如果集成账号没有满足要求的仓库或组织权限,Checkmarx One可能无法创建组织级或仓库级Webhook,进而出现Push与Pull request事件无法触发自动扫描的现象;这类情况要从权限与集成方式上解决,而不是在扫描器里改参数。

 

  6、用PR评论区作为触发是否到达的第一信号。

 

  如果你走的是代码仓库集成触发,按预期在PR的Comment区域会出现扫描进行中与扫描完成的提示,同时Checkmarx One页面也会出现对应扫描记录;评论与扫描记录都没有时,优先回到Webhook与分支触发条件去查。

 

  二、Checkmarx PR触发条件怎么设置

 

  PR触发条件设置时,建议把它当作两层闸门来理解,第一层是Scan Trigger决定是否响应Push与Pull request事件,第二层是Protected Branches决定哪些分支上的事件会触发扫描。把这两层配置成可解释的口径,后续仓库分支一多也不容易乱。

 

  1、在Checkmarx One里把Scan Trigger明确设为Push与Pull request。

 

  进入对应仓库的集成配置或项目创建流程,在权限设置区域找到Scan Trigger,将其设为对Push与Pull request都自动触发,并保存配置,避免只开了Push导致PR阶段没有扫描。

  2、在Protected Branches里把目标分支选全并与分支策略对齐。

 

  在分支选择页面把main或master、release、develop等实际会被作为PR目标的分支选为Protected Branches;因为Protected Branches会影响扫描触发、合规策略判定以及反馈通知,分支选少了最常见的表现就是部分PR永远不触发。

 

  3、需要覆盖一类分支时用通配模式把规则写清。

 

  如果你们大量使用feature分支或按环境命名分支,可以在分支设置里用通配模式将匹配到的分支视为受保护分支,从而让该类分支上的触发事件都能启动扫描,避免每新增一个分支都要手动补配置。

 

  4、按仓库维度确认至少选了一个扫描器并与触发一起启用。

 

  在集成配置里通常需要为全部仓库或指定仓库选择扫描器,至少保证有一个扫描器被勾选,否则即使触发事件到达,也可能出现没有实际扫描任务可执行的情况。

 

  5、如果你走的是CI触发,把PR事件写进工作流触发器而不是只写默认分支。

 

  GitHub Actions场景下,扫描是否触发取决于工作流触发事件配置,示例工作流会在Pull Requests与对主分支的提交上触发;GitLab场景下,触发取决于.gitlab-ci.yml的规则,示例会在Merge Requests与对master的变更上触发。你要把PR对应的事件与分支条件写进流水线规则里,单靠Checkmarx端开关解决不了。

 

  三、Checkmarx触发链路怎么核对

 

  把触发条件配好后,仍然不触发时,最有效的是按链路逐段核对,从仓库事件有没有发出,到Webhook有没有送达,再到Checkmarx有没有接单,最后到PR装饰或评论有没有回写。这样定位出来的结论能直接指导你该改权限、改分支还是改流水线。

 

  1、在仓库Webhook页面看最近一次投递是否成功。

 

  GitHub进入【Settings】→【Webhooks】点进对应Webhook查看最近投递记录与返回状态;GitLab进入【Settings】→【Webhooks】查看最近触发与响应。如果仓库侧没有投递记录或响应失败,优先处理网络可达性、Webhook地址与事件订阅范围。

 

  2、在PR页面核对是否出现Checkmarx扫描进行中与完成提示。

 

  代码仓库集成触发时,PR的Comment区域按预期会出现扫描进行中与扫描完成的提示;如果仓库Webhook投递成功但评论区完全没有提示,说明问题可能在Checkmarx侧接收与处理环节或权限不足导致无法回写。

 

  3、在Checkmarx One里回到项目扫描列表看是否生成了对应PR扫描记录。

 

  在Checkmarx One平台找到该项目的扫描记录或结果页面,确认是否出现以PR触发的扫描,并留意是否只对Protected Branches触发;如果只看到主分支扫描而看不到PR扫描,通常是分支选择或触发开关仍未覆盖到目标分支。

 

  4、CI触发场景补查PR来源与凭据可用性。

 

  如果你用GitHub Actions触发扫描,PR来自外部fork时常见现象是工作流能跑但拿不到需要的密钥,导致扫描步骤被跳过或直接失败;这时应回到仓库【Actions】与工作流运行记录核对触发事件、权限与凭据注入方式,而不是只盯着Checkmarx端。

  总结

 

  围绕Checkmarx拉取请求不触发扫描怎么办,Checkmarx PR触发条件怎么设置,处理顺序可以固定为先分清Webhook触发还是CI触发,再在Checkmarx One里把Scan Trigger设为Push与Pull request并把目标分支纳入Protected Branches,同时核对仓库侧Webhook是否创建成功且事件订阅包含PR,最后用Webhook投递记录、PR评论提示与Checkmarx扫描记录三处对照把问题定位到具体一段链路上。

135 2431 0251