How do I configure SCM Polling in a Pipeline Template?

Article ID:205028534
1 minute readKnowledge base

Issue

How do I configure SCM polling when creating a pipeline template?

Environment

  • CloudBees Jenkins Enterprise

  • Pipeline

  • Templates

Resolution

Create a new Job Template.

Set Type to be "Groovy template for pipeline"

Create a General job definition template based on Template Groovy Transformer syntax that specifies the Polling Interval.

  1. The easiest way to achieve this, is to create a regular pipeline job, configuring the polling interval

  2. Copy the contents of <flow definition=""> element from the generated config.xml. This can be accessed from the browser by navigating to <jobname>/config.xml

  3. Replace with any required templating - eg if the Polling Interval is to be configurable per instance

  4. Remove the <definition> element from the copied XML as this will be substituted in by the templating engine

Create a Flow Script

First ensure that the SCM step has polling enabled - eg: git poll: true, url: 'https://github.com/harniman/hello-world-simple-mvn'

Example 1

Configure a 5 minute polling interval for all instances of a pipeline:

General job definition:

<flow-definition plugin="workflow-job@1.8"> <actions/> <description>A test pipeline</description> <keepDependencies>false</keepDependencies> <properties/> <triggers> <hudson.triggers.SCMTrigger> <spec>5 * * * *</spec> <ignorePostCommitHooks>false</ignorePostCommitHooks> </hudson.triggers.SCMTrigger> </triggers> </flow-definition>

Pipeline Script:

node('linux') {
  git poll: true, url: 'https://github.com/harniman/hello-world-simple-mvn'
  ensureMaven()
  sh "cd hello-world-simple-mvn; mvn package"
}

def ensureMaven() {
  env.PATH = "${tool 'Maven 3.x'}/bin:${env.PATH}"
}

Example 2

Allow per job instance configuration of the polling interval

Pipeline Attributes:

ID: interval

Type: Text-field

Help: Interval will be set as the required polling interval, i.e: "5 * * * *" in the job instance

General job definition:

<flow-definition plugin="workflow-job@1.8">
  <actions/>
  <description>A test pipeline</description>
  <keepDependencies>false</keepDependencies>
  <properties/>
  <triggers>
    <hudson.triggers.SCMTrigger>
    <spec>${interval}</spec>
    <ignorePostCommitHooks>false</ignorePostCommitHooks>
    </hudson.triggers.SCMTrigger>
  </triggers>
</flow-definition>

Pipeline Script:

node('linux') {
  git poll: true, url: 'https://github.com/harniman/hello-world-simple-mvn'
  ensureMaven()
  sh "cd hello-world-simple-mvn; mvn package"
}

def ensureMaven() {
  env.PATH = "${tool 'Maven 3.x'}/bin:${env.PATH}"
}
This article is part of our Knowledge Base and is provided for guidance-based purposes only. The solutions or workarounds described here are not officially supported by CloudBees and may not be applicable in all environments. Use at your own discretion, and test changes in a safe environment before applying them to production systems.