How do I schedule jobs in Jenkins?

Sangram Anand picture Sangram Anand · Sep 18, 2012 · Viewed 670.2k times · Source

I added a new job in Jenkins, which I want to schedule periodically.

From Configure job, I am checking the "Build Periodically" checkbox and in the Schedule text field added the expression:

15 13 * * *

But it does not run at the scheduled time.

Is it the correct procedure to schedule a job?

Enter image description here

The job should run at 4:20 AM, but it is not running.

Answer

Cédric Julien picture Cédric Julien · Sep 18, 2012

By setting the schedule period to 15 13 * * * you tell Jenkins to schedule the build every day of every month of every year at the 15th minute of the 13th hour of the day.

Jenkins used a cron expression, and the different fields are:

  1. MINUTES Minutes in one hour (0-59)
  2. HOURS Hours in one day (0-23)
  3. DAYMONTH Day in a month (1-31)
  4. MONTH Month in a year (1-12)
  5. DAYWEEK Day of the week (0-7) where 0 and 7 are sunday

If you want to schedule your build every 5 minutes, this will do the job : */5 * * * *

If you want to schedule your build every day at 8h00, this will do the job : 0 8 * * *

For the past few versions (2014), Jenkins have a new parameter, H (extract from the Jenkins code documentation):

To allow periodically scheduled tasks to produce even load on the system, the symbol H (for “hash”) should be used wherever possible.

For example, using 0 0 * * * for a dozen daily jobs will cause a large spike at midnight. In contrast, using H H * * * would still execute each job once a day, but not all at the same time, better using limited resources.

Note also that:

The H symbol can be thought of as a random value over a range, but it actually is a hash of the job name, not a random function, so that the value remains stable for any given project.

More example of using 'H'