How to schedule a build in Jenkins?

304,042

Solution 1

Please read the other answers and comments, there’s a lot more information stated and nuances described (hash functions?) that I did not know when I answered this question.

According to Jenkins' own help (the "?" button) for the schedule task, 5 fields are specified:

This field follows the syntax of cron (with minor differences). Specifically, each line consists of 5 fields separated by TAB or whitespace: MINUTE HOUR DOM MONTH DOW

I just tried to get a job to launch at 4:42PM (my approximate local time) and it worked with the following, though it took about 30 extra seconds:

42 16 * * *

If you want multiple times, I think the following should work:

0 16,18,20,22 * * *

for 4, 6, 8, and 10 o'clock PM every day.

Solution 2

In the job configuration one can define various build triggers. With periodically build you can schedule the build by defining the date or day of the week and the time to execute the build.

The format is as follows:

MINUTE (0-59), HOUR (0-23), DAY (1-31), MONTH (1-12), DAY OF THE WEEK (0-6)

The letter H, representing the word Hash can be inserted instead of any of the values, it will calculate the parameter based on the hash code of your project name, this is so that if you are building several projects on your build machine at the same time, lets say midnight each day, they do not all start there build execution at the same time, each project starts its execution at a different minute depending on its hash code. You can also specify the value to be between numbers, i.e. H(0,30) will return the hash code of the project where the possible hashes are 0-30

Examples:

start build daily at 08:30 in the morning, Monday - Friday:

  • 30 08 * * 1-5

weekday daily build twice a day, at lunchtime 12:00 and midnight 00:00, Sunday to Thursday:

  • 00 0,12 * * 0-4

start build daily in the late afternoon between 4:00 p.m. - 4:59 p.m. or 16:00 -16:59 depending on the projects hash:

  • H 16 * * 1-5

start build at midnight:

  • @midnight

or start build at midnight, every Saturday:

  • 59 23 * * 6

every first of every month between 2:00 a.m. - 02:30 a.m. :

  • H(0-30) 02 01 * *

more on CRON expressions

Solution 3

This example is everyday, once around 9am and once around 5pm. (edited per comments).

H 9,17 * * * 

Solution 4

The steps for schedule jobs in Jenkins:

  1. click on "Configure" of the job requirement
  2. scroll down to "Build Triggers" - subtitle
  3. Click on the checkBox of Build periodically
  4. Add time schedule in the Schedule field, for example, @midnight

enter image description here

Note: under the schedule field, can see the last and the next date-time run.

Jenkins also supports predefined aliases to schedule build:

@hourly, @daily, @weekly, @monthly, @midnight

@hourly --> Build every hour at the beginning of the hour --> 0 * * * *

@daily, @midnight --> Build every day at midnight --> 0 0 * * *

@weekly --> Build every week at midnight on Sunday morning --> 0 0 * * 0

@monthly --> Build every month at midnight of the first day of the month --> 0 0 1 * *

Solution 5

To build once a day between say 4PM to 6PM you can use

H H(15-17) * * *

Share:
304,042

Related videos on Youtube

deadfish
Author by

deadfish

Updated on July 05, 2022

Comments

  • deadfish
    deadfish almost 2 years

    How do I schedule a Jenkins build such that it would be able to build only at specific hours every day?

    For example to start at 4 PM

    0 16 1-7 * *
    

    I understand that as, "at 0 minutes, at 4 o'clock PM, from Monday to Sunday, every month", however it builds every minute :(

    I would be grateful for any advice. Thanks!

    • brodie31k
      brodie31k over 11 years
      Where does one actually enter this to schedule a job?
    • Youssef Boudaya
      Youssef Boudaya about 3 years
      In config of your project section "Build triggers" choose "build periodically"
  • deadfish
    deadfish almost 13 years
    Right, too much stars. My bad in question. I will fix my topic.
  • Zach Young
    Zach Young almost 13 years
    Hi Michal, Are still having trouble with the scheduling? You accepted my answer, but your comment only concerned fixing the question, which I see you've done. Thanks.
  • egrunin
    egrunin almost 10 years
    Not exactly. That will run once between 9:00am and 9:59am, plus once between 5:00pm and 5:59pm.
  • Stephan Schielke
    Stephan Schielke over 9 years
    To be more precise: That job will start once between 9:00am and 9:59am, and start once between 5:00pm and 5:59pm. The job will not be terminated if it takes longer.
  • DrUseful
    DrUseful over 9 years
    Note that "will run once between 0900 and 0959": the H stands for "hash" - it's a hash based on the project, so that this project will ALWAYS run on the same minute in the 9th hour and the 17th hour. If the hash algorithm generates the number "16" for your project, then your project job will always start at 0916 and 1716.
  • user836846
    user836846 about 8 years
    I think start build daily in the late afternoon between 4:00 p.m. - 4:59 p.m. or 16:00 -16:59 depending on the projects hash: should be H 16 * * * (Not H 16 * * 1-5)
  • vikingsteve
    vikingsteve over 7 years
    Thanks but are you sure 1-6 is monday to friday? Isn't it 1-5 ? etc.
  • inaitgaJ
    inaitgaJ over 7 years
    If 1-6 is Mon - Sat, then 0-5 should be Sun - Fri. +1 for so many useful examples.
  • Sander de Jong
    Sander de Jong about 5 years
    Correction:H(0,30) 02 01 * * should be H(0-30) 02 01 * *