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

Semaphore CI/CD流水线:仅docs目录变更时跳过任务配置求助

解决方案:仅/docs目录变更时跳过Semaphore CI/CD流程

要实现仅修改docs目录时不执行任何CI/CD步骤,你需要调整semaphore.yml的执行条件配置,以下是两种可行方案:

方案1:为每个任务块添加执行条件

给每个block的run.when设置条件,确保只有当变更涉及docs之外的内容时才执行任务:

blocks:
  - name: Linting
    dependencies: []
    run:
      when: "change_in('**', {exclude: ['docs/**']})"
    task:
      agent:
        machine:
          type: e1-standard
          os_image: ubuntu
        containers:
          # 你的容器配置内容
  # 构建、部署等其他block也需要添加相同的when条件

关键说明:

  • **用于匹配项目内所有文件和目录,exclude: ['docs/**']会排除docs目录下的所有内容(包括子目录)
  • 路径不要以/开头,Semaphore的路径规则是相对项目根目录的,直接写docs/**即可正确匹配目标目录

方案2:全局跳过整个工作流(推荐)

如果希望仅docs目录变更时直接跳过整个CI流程,可在workflow层面设置全局条件:

version: v1.0
name: 你的工作流名称
agent:
  machine:
    type: e1-standard
    os_image: ubuntu
# 全局条件:仅当存在docs之外的变更时才执行整个工作流
when: "change_in('**', {exclude: ['docs/**']})"
blocks:
  - name: Linting
    dependencies: []
    task:
      # 你的任务配置内容
  # 其他任务块配置

原配置失效的原因

你之前的配置change_in('/', {exclude: ['/docs']})存在两个问题:

  1. 路径写法错误:/和/docs是绝对路径写法,Semaphore要求使用相对项目根目录的路径,即docs或docs/**
  2. change_in('/')仅匹配根目录下的文件变更,不会递归检测子目录,无法正确识别其他目录的修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:05:30