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

如何通过Jenkins Casc配置流水线的SCM仓库轮询功能

Jenkins Casc 配置SCM轮询触发流水线方案

一、用Jenkins Casc配置带SCM轮询的流水线任务

以下是完整的Casc配置示例,实现你在Web UI中完成的功能:指定Git仓库、每2分钟轮询变更、发现变更时触发流水线:

jobs:
  - script: >
      pipelineJob('test-jenkins-polling') {
        definition {
          cpsScm {
            scm {
              git {
                remote {
                  url('https://github.com/my-user/test-jenkins')
                }
                branches('*/main') // 替换为你需要监控的分支
              }
            }
            scriptPath('Jenkinsfile') // 指向仓库中Jenkinsfile的路径
          }
        }
        triggers {
          pollSCM('H/2 * * * *') // 每2分钟轮询一次,H用于避免所有节点同时触发的负载问题
        }
      }

配置说明

  • cpsScm:表示流水线的定义来自SCM仓库中的Jenkinsfile
  • pollSCM('H/2 * * * *'):设置轮询的Cron表达式,H/2表示每2分钟随机时间点执行轮询,避免集中调度压力
  • 若你需要在发现变更后重复执行任务(比如每分钟运行一次),可额外添加cron触发器,但通常轮询到变更后仅触发一次流水线,重复执行需结合任务重试逻辑或额外调度。

二、直接为流水线配置SCM轮询(无需外层任务)

你可以直接在流水线脚本中内嵌SCM配置和轮询规则,无需通过外层任务调用,分两种场景实现:

1. 声明式流水线脚本中直接配置

在仓库的Jenkinsfile中使用声明式语法,同时指定SCM和轮询触发器:

pipeline {
  agent any
  triggers {
    pollSCM('H/2 * * * *') // 轮询调度规则
  }
  scm {
    git url: 'https://github.com/my-user/test-jenkins', branch: '*/main'
  }
  stages {
    stage('Build') {
      steps {
        echo '执行构建逻辑...'
      }
    }
  }
}

2. Casc中直接定义内嵌式流水线

如果需要在Casc中直接定义完整的流水线(而非引用仓库中的Jenkinsfile),可使用以下配置:

jobs:
  - script: >
      pipelineJob('direct-pipeline-polling') {
        definition {
          cps {
            script("""
              pipeline {
                agent any
                triggers {
                  pollSCM('H/2 * * * *')
                }
                scm {
                  git url: 'https://github.com/my-user/test-jenkins', branch: '*/main'
                }
                stages {
                  stage('Build') {
                    steps {
                      echo '执行构建逻辑...'
                    }
                  }
                }
              }
            """)
            sandbox() // 根据安全策略决定是否启用沙箱
          }
        }
      }

关键说明

你之前遇到的“无法设置要监控的Git仓库”问题,核心是需要在流水线的scm块中明确配置Git仓库的地址和分支,仅设置pollSCM调度是不够的,两者结合才能实现完整的SCM轮询触发逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:07:28