Polling SCM is a Jenkins build trigger that periodically checks the version control system for changes and initiates a build when new commits are detected, providing a simpler but less efficient alternative to webhooks
Polling SCM (Source Code Management) is a built-in build trigger mechanism in Jenkins that automatically checks your repository at regular intervals to detect code changes. When changes are found, Jenkins triggers a new build. This approach contrasts with webhooks, where the repository notifies Jenkins immediately upon changes. Poll SCM is particularly useful in environments where Jenkins cannot be exposed to the internet for webhooks, or when working with repositories that don't support webhooks .
When configured with a cron-like schedule, Jenkins periodically compares the current state of the repository with the last known state from the previous build. If differences are detected, it automatically triggers a new build. The polling operation requires Jenkins to scan the entire workspace and communicate with the SCM server each time, making it more resource-intensive than webhook-based triggers . The schedule uses standard cron syntax with Jenkins' "H" notation to distribute load evenly across time .
Simple setup: No external configuration required—just enable the trigger and set a schedule
Works in any network environment: Doesn't require Jenkins to be publicly accessible, unlike webhooks
Universal compatibility: Works with any SCM system supported by Jenkins (Git, SVN, etc.) without requiring webhook support
Fine-grained control: Schedule can be customized to match development patterns (e.g., more frequent checks during work hours)
No external dependencies: Functions entirely within Jenkins without relying on repository webhook configuration
Resource intensive: Each poll requires scanning the repository and checking for changes, consuming CPU and network resources
Delayed builds: Changes are only detected at the next poll interval, causing delay between commit and build
Schedule must be balanced: Too frequent polling wastes resources; too infrequent delays feedback
Multiple repositories: When pipelines check out additional repos, each poll still scans the main repository, potentially triggering unnecessary builds
Network load: Frequent polling adds network traffic, especially problematic for large repositories or slow connections
Webhooks are generally preferred over Poll SCM for production CI/CD pipelines. Webhooks provide real-time triggering with minimal resource usage—the repository notifies Jenkins immediately when changes occur, eliminating both the delay and the overhead of constant polling . However, webhooks require Jenkins to be accessible from the internet (or VPN) and additional configuration on the repository side. Poll SCM remains valuable as a fallback when webhooks aren't feasible, such as in locked-down network environments or with legacy SCM systems that lack webhook support .
When using Poll SCM, set reasonable intervals based on your team's commit frequency—every 5-15 minutes is typical for active development . Use the 'H' notation in cron expressions to avoid overloading the SCM server at exact times . For pipelines that check out additional repositories, disable polling on those checkouts using poll: false to prevent unnecessary triggers . Consider hybrid approaches where Poll SCM serves as backup for webhook failures, ensuring builds still run even if the webhook system experiences issues.