15

I'm New to Jenkins. I have a job which i need to schedule every 1 hour.

I am using

* */1 * * * 

but it is not working effectively.

Please provide any other solution.

  • 3
    you should explain what "but it is not working effectively." means. And add in your distro & cronttab entries – Sathyajith Bhat May 8 '14 at 6:43
  • use @hourly or 0 * * * * – Renju Chandran chingath May 8 '14 at 7:42
  • Thanks. Please mention the syntax,if i want to schedule every 3 hours. – Ajay May 8 '14 at 12:06
  • Use: H/60 * * * * – Eyal Sooliman Sep 8 '16 at 9:05
29

Jenkins use cron expression as explained here

To schedule every hour, then you can put

0 * * * *

Then your job will be executed every hour (07:00, 08:00, 09:00 and so on)

UPDATE

As explanation on your original configuration, syntax

* */1 * * *

will executed job every minutes.

UPDATE 2

As requested in the comment, here syntax for schedule it every 3 hours

0 */3 * * *

The syntax */n means the jobs will scheduled every n hours

  • Thanks for the answer.It is working fine. But my job is taking more than one hour to execute. For instance if i want to schedule this job for every 3 hours what would be the syntax.please share. – Ajay May 8 '14 at 11:59
  • Check my updated answer :) – masegaloeh May 8 '14 at 12:15
  • @Ajay If this answer work for your problem, please consider to accept this answer :) – masegaloeh May 8 '14 at 15:06
12

Jenkins suggests this way:

H * * * *
  • 2
    Same answer as other answers to a question that is 1+ years old. – JakeGould Dec 14 '15 at 17:39
  • This duplicates another answer and adds no new content. Please don't post an answer unless you actually have something new to contribute. – DavidPostill Dec 15 '15 at 13:47
  • 4
    The advantage of this approach is that jenkins will manage the tasks in a queue. Maybe somebody else already had the answer but it is still useful. Why be so harsh if it is useful? the answer with 20 likes is NOT so good.... bah – juan Isaza Oct 21 '16 at 14:56
  • I have to go with @juanIsaza . This is not a duplicate but actually a better answer. Jenkins clearly suggests to prefer the usage of H instead of hardcoded values – derHugo Feb 15 '18 at 15:47
7

I know this is an old thread but I'm answering because apparently people still land here.

The top answer shouldn't be used anymore.

Jenkins introduced a value H.

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

  • MINUTE Minutes within the hour (0–59)
  • HOUR The hour of the day (0–23)
  • DOM The day of the month (1–31)
  • MONTH The month (1–12)
  • DOW The day of the week (0–7) where 0 and 7 are Sunday.

To specify multiple values for one field, the following operators are available. In the order of precedence,

  • * specifies all valid values
  • M-N specifies a range of values
  • M-N/X or */X steps by intervals of X through the specified range or whole valid range
  • A,B,...,Z enumerates multiple values

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.

The H symbol can be used with a range. For example, H H(0-7) * * * means some time between 12:00 AM (midnight) to 7:59 AM. You can also use step intervals with H, with or without ranges.

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.

Beware that for the day of month field, short cycles such as */3 or H/3 will not work consistently near the end of most months, due to variable month lengths. For example, */3 will run on the 1st, 4th, …31st days of a long month, then again the next day of the next month. Hashes are always chosen in the 1-28 range, so H/3 will produce a gap between runs of between 3 and 6 days at the end of a month. (Longer cycles will also have inconsistent lengths but the effect may be relatively less noticeable.)

So the correct answer for building once an hour is

H * * * *

for every 3 hours

H H/3 * * *

The difference between * and H could be also explained as

  • * translates to EVERY
  • H translates to ANY

So e.g.

* * * * *

translates to: Build every minute, every hour, every day of month, every month, doesn't matter what day of week it is.

H * * * *

translates to: Build once every hour (x), doesn't matter what exact minute it is (can be any minute between x:00 and x:59)

H H * * *

translates to: Build once every day, doesn't matter what time it is (can be any minute and any hour between 00:00 and 23:59)


The reason why you should prefer using H instead of hardcoded time values is also explained as before

If you have 100 jobs configured with

0 0 * * *

they all will try to start at the same time causing for example a lot of poll and pull traffic at midnight.

If you have them instead all configured with

H H * * *

they all will be built once a day but not all at the same time but distributed over the day.


Schedule time range

You can than plan the schdedule better by using the time ranges e.g.

H H(18-23) * * *

All jobs will be built every day at any time between 18:00 and 23:59.


Schedule time range crossing midnight

It is even also possible to schedule jobs crossing midnight e.g. to build between 19:00pm and 5:00am.

But since cron usually doesn't allow this you can use a trick using a shiftet timezone.

E.g. I'm living in the timezone MEZ which is GMT+1 and I want to build all jobs between 19:00pm and 5:00am. In order to do that I shift my complete timezone by 5 hours using

TZ=Etc/GMT+6

Than I use a shiftet range for the hours starting at 14:00 (-> +5 = 19:00pm) and ending at 23:59 (-> +5 = 4:59am)

H H(14-23) * * *
-1
* */1 * * *

is correct it runs every hour

Try using H function so that all job does not poll at same time to svn

H H/1 * * *

It should do magic. If job takes more time to finish or you are doing build trigger functionality. Either increase time or use jenkins pluggin to stop build until previous build is finished.

https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin

  • The first one runs every minutes between 1:00 am and 2:00 am, right? – Eric Wang Dec 22 '17 at 2:16
  • @EricWang : No. It is the same as * * * * * => running every minute. For running in between a certain range you use it like * 1-2 * * * <- this runs every minute between 1:00am and 1:59am – derHugo Feb 15 '18 at 15:52
  • @derHugo You mean * * 1-2 * * ? – Eric Wang Feb 16 '18 at 4:01
  • 1
    @EricWang No I mean * 1-2 * * *. The first position is for Minute of our, the second one for hour of day, the third one day of month, fourth month of year and fifth day of week (in special cases it also allows a sixth one year). So your line * * 1-2 * * translates "Every Minute, Every hour, the first and second day of every month and any day of week. – derHugo Feb 16 '18 at 7:08
  • 1
    The difference which the author of this answer missed is that * translates to every while H translates to any. So while * * * * * means every minute, H * * * * means build once every hour but I don't care the exact minute (can be anywhere between 0-59 if not defined by a range) and H H * * * means build once per day but I don't care what time. – derHugo Feb 16 '18 at 7:15
-5

The syntax is :


MINUTE  Minutes within the hour (0-59)
HOUR    The hour of the day (0-23)
DOM     The day of the month (1-31)
MONTH   The month (1-12)
DOW     The day of the week (0-7) where 0 and 7 are Sunday.

If you want to schedule for every 3 hours, the syntax should look:

* 3 * * * *
  • 4
    This will schedule for 3 AM every day, and not every 3 hour – lony Jun 30 '15 at 12:38

protected by JakeGould Dec 14 '15 at 17:39

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.