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

Jenkins流水线无法检测GitHub SCM变更,自动触发失败求助

排查Jenkins流水线无法检测SCM变更的原因

1. 先解决轮询目录不存在的核心报错

报错ERROR: polling failed in /home/jenkins/test on sk-node(83) java.io.IOException: error=2, No such file or directory是问题根源:

  • 注意轮询时尝试访问的是/home/jenkins/test,但你流水线脚本里用的是/home/jenkins/test4/,路径完全不匹配
  • 要么是Jenkins节点(sk-node)上根本没有/home/jenkins/test这个目录,要么是轮询配置的工作路径和构建脚本里的路径不一致

2. 修正流水线脚本的目录使用方式

你当前用了绝对路径的dir块,这会让Jenkins轮询时找不到对应仓库:

  • 轮询SCM是在构建前执行的,默认基于流水线的工作空间,而非你指定的绝对路径
  • 手动构建时可能自动创建了/home/jenkins/test4/,但轮询过程不会自动创建目录,也未必有权限这么做

推荐修改为相对路径(更稳妥)

pipeline {
    agent { label 'my-node' }
    stages {
        stage('Clone repository') {
            environment {
                GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
            }
            steps {
                // 用工作空间内的相对目录,避免绝对路径带来的节点差异问题
                dir('test4') {
                    git branch: 'master', credentialsId: 'github-cred', url: 'https://github.com/example/example.git'
                }
            }
        }
    }
}

若必须用绝对路径

先在my-node节点上手动创建目录并设置权限:

mkdir -p /home/jenkins/test4/
chown jenkins:jenkins /home/jenkins/test4/

3. 让Jenkins正确识别SCM配置

你启用了GitHub hook trigger for GITScm polling,但这个触发器需要Jenkins能自动关联流水线的SCM配置。现在你是在steps里手动调用git命令,Jenkins没法自动跟踪变更,建议把SCM移到流水线顶层:

pipeline {
    agent { label 'my-node' }
    options {
        skipDefaultCheckout(true) // 跳过默认检出,手动控制位置
    }
    // 顶层声明SCM,让Jenkins自动关联轮询
    scm {
        git branch: 'master', credentialsId: 'github-cred', url: 'https://github.com/example/example.git'
    }
    stages {
        stage('Clone repository') {
            environment {
                GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
            }
            steps {
                dir('test4') {
                    checkout scm // 使用顶层的SCM配置检出
                }
            }
        }
    }
}

这样配置后,Jenkins就能正确轮询SCM变更了。

4. 检查节点一致性与权限

  • 确认报错里的sk-node(83)是不是你指定的my-node?如果是不同节点,得在sk-node上创建对应目录,或者修正流水线的节点标签配置
  • 检查Jenkins agent进程的用户(一般是jenkins)对目标目录有没有读写权限,权限不足也会导致访问失败

5. 手动验证轮询功能

在流水线页面点击「轮询SCM」按钮,手动触发一次轮询:

  • 如果日志出现scm changes detected in pipeline. Triggering #buildNumber,说明配置修复成功,Webhook后续就能正常触发
  • 如果还是失败,回头检查目录权限和SCM配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:41:07