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

PR中[skip ci]/NO_CI不生效,如何阻止PR触发CI流水线?

问题解决:PR触发流水线时通过[skip ci]跳过执行

为什么当前配置不生效

当流水线由PR触发时,Build.SourceVersionMessage变量存储的是PR合并时自动生成的默认提交信息(如Merge pull request #xxx from ...),而非PR的标题或描述内容。你在PR中填写的[skip ci]不会被这个变量捕获,导致条件判断失效,流水线始终运行。

正确配置方案

修改Job的条件判断逻辑,同时覆盖直接推送master和PR触发两种场景的[skip ci]检查:

trigger:
  batch: true
  branches:
    include:
      - master

pool: 
  vmImage: windows-latest

jobs:
  - job: Build
    condition: |
      and(
        succeeded(),
        not(or(
          # 检查直接推送master时的提交信息
          contains(variables['Build.SourceVersionMessage'], '[skip ci]'),
          # 检查PR触发时的标题或描述
          and(eq(variables['Build.Reason'], 'PullRequest'), 
              or(contains(variables['System.PullRequest.Title'], '[skip ci]'), contains(variables['System.PullRequest.Description'], '[skip ci]'))
          )
        ))
      )
    steps:
      - script: echo "Hello world"!
        displayName: 'Echo Hello world'

      - script: echo "$(Build.SourceVersionMessage)"!
        displayName: 'Echo Build.SourceVersionMessage'

配置说明

  • 针对直接推送master分支的情况:依然检查提交信息中的[skip ci],符合官方文档的逻辑
  • 针对PR触发的情况:先通过Build.Reason判断是否为PR触发,再检查PR的标题或描述中是否包含[skip ci],任一满足则跳过Job执行
  • 只有当上述两种跳过条件都不满足时,才会执行Build Job

额外方案:完全禁止PR触发流水线

如果你的需求是直接禁止PR触发该流水线,无需通过[skip ci]控制,可以直接修改trigger配置:

trigger:
  batch: true
  branches:
    include:
      - master
pr: none # 禁止所有PR触发该流水线

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:45:57