In this post, we’ll show you how to schedule Jenkins jobs, and we’ll review some specific scenarios.
Let’s first have a look at the Jenkins task scheduling setup. You don’t need to be familiar with Linux’s command line environment to understand it, but it resembles the cron syntax quite a bit.
Five fields that are separated by whitespace make up a scheduling item. By adding more than one entry, you can schedule a job for more than one time.
|Minute||Hour||Day of Month||Month||Day of week|
MINUTE (0-59), HOUR (0-23), DAY (1-31), MONTH (1-12), DAY OF THE WEEK (0-6)
Each field can contain an exact value or use a set of special expressions:
- The asterisk * indicates all valid values. So, a job that runs every day has a * in the third field.
- A dash separates ranges of values. For example, a job that runs every hour from 9:00 a.m. to 5:00 p.m. would have 9-17 in the second field.
- Intervals are specified with a slash /. A job that runs every 15 minutes has H/15 in the first field. Note that the H in the first field has a special meaning. If you wanted a job to run every 15 minutes, you could configure it as 0/15, which would make it run at the start of every hour. However, if you configure too many jobs this way, you can overload your Jenkins controller. Ultimately, the H tells Jenkins to pick a minute based on a hash of the job name.
- Finally, you can specify multiple values with a comma. So, a job that runs Monday, Wednesday, and Friday would have 1,3,5 in the fifth field.
Here are the several special predefined values which can be used to substitute the expressions in Jenkins cron.
|@yearly||Run at any time during the year||H H H H *|
|@annually||Run at any time during the year||H H H H *|
|@monthly||Run at any time during the month||H H H * *|
|@weekly||Run at any time during the week||H H * * H|
|@daily||Run at any time during the day||H H * * *|
|@hourly||Run at any time during the hour||H * * * *|
Here are the most common examples of cron job schedules that can be found in almost any
crontab on Linux (use
H in the examples below to spread the load evenly in Jenkins):
|* * * * *||Run cron job every minute|
|H/5 * * * *||Run cron job every 5 minutes|
|H/30 * * * *||Run cron job every 30 minutes|
|0 * * * *||Run cron job every hour|
|0 H/3 * * *||Run cron job every 3 hours|
|0 13 * * *||Run cron job every day at 1pm|
|30 2 * * *||Run cron job every day at 2:30 am|
|0 0 * * *||Run cron job every day at midnight|
|0 0 * * 0||Run cron job every Sunday|
|0 0 * * 1||Run cron job every Monday|
|0 0 1 * *||Run cron job every first day of every month|
|0 0 1 1 *||Run cron job every first of January every year|
Add a Schedule to a Jenkins Job
Step 1: Create a new project using the Maven project plugin.
In the General section, enter the project description in the Description box.
Step 2: Go to the Build section of the new job.
- In the Root POM textbox, enter the full path to pom.xml
- In the Goals and options section, enter “clean test”
Click on Apply and Save buttons.
Step 3: Go to the Build Triggers
Select the Build periodically option and mention the schedule.
This will open the scheduling text area.
H/5 * * * *
This schedule means that the job will run every 5 minutes.
Click on the Apply and Save buttons.
Step 4: Verify the Build History
Here is a screenshot of a couple of builds on our system. The timestamps show that you’ve scheduled a job to run every five minutes.
Below is the Build History.
In this post, we covered Jenkin’s job scheduling abilities, and we covered how to configure jobs for different intervals.