How to set two different scheduler for single Jenkins job - jenkins

I just want to run the job twice per week. Every Sunday 11 PM and every Friday 11 pm I just want to trigger the job automatically. I successfully implemented for one scheduler but not sure how to use two in single .
Sunday scheduler :
H 11 * * 0
Friday scheduler:
H 11 * * 6

For scheduling the job below pattern need to be followed:-
0 - Sun Sunday
1 - Mon Monday
2 - Tue Tuesday
3 - Wed Wednesday
4 - Thu Thursday
5 - Fri Friday
6 - Sat Saturday
7 - Sun Sunday
For your case you can follow the below:-
0 23 * * 0,5
You better understanding of "H" in Jobs Scheduler follow this:

Maybe something like this. Note there's a couple changes from your example, changed 11 to 23, 11 is 11am, 23 is 11pm and using 5 instead of 6 for Friday.
H 23 * * 0,5
But note with the "H" it isn't going to run at exactly 11pm, from the Jenkins docs:
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.
If you want it to run closer to 11pm, maybe something like this
H(1-5) 23 * * 0,5

Related

Jenkins build periodically every 2 hours after 10 PM to next day 7AM

H H(22-7)/2 * * 1-5 ----- not working
Please let me know correct example
0 0,2,4,6,22 * * *
This will trigger the job at 10 PM, 12 AM, 2 AM, 4 AM and 6 AM everyday.
In case you need to distribute load, you can replace the first 0 with an H.

Schedule job to run periodically

I am trying to run Jenkins job everyday at 10 AM and 10 PM . How do i do that?
Currently i use the below to run at 12 AM and 12 PM . Am not aware how to change it.
0 0-23/12 * * *
Its difficult to acheive it with just a single crontab entry, what you can do is to have a 2 crontab entry like below :-
for job which you want to run daily at 10 AM :-
0 10 * * *
And for 10 PM job 0 22 * * *.
Here first entry denotes the minute, second denotes the hour and then day,month and week.
Just click the "?" icon to the right of the "Schedule" field, and you'll see a detailed explanation of the syntax available there.
If you want it to run at 12am and 12pm, I would guess you would just do this:
0 0,12 * * *
Suppose you want to run a jenkins job at 4:30 AM , monday to saturday, then you can use below script under your jenkins build trigger:
30 04 * * 1-6
1-6 denotes monday to saturday
Coming back to your question, you can configure 2 entries under your build trigger to run Jenkins job everyday at 10 AM and 10 PM in jenkins as shown below:
00 10 * * 1-7
00 22 * * 1-7

Why Jenkins does not run a job as scheduled?

I have this 'Build periodically' option with the following 'Schedule':
H 6,13 * * *
Meaning that I want this job to be run everyday at 6:00 and 13:00.
I noticed that it does not run at the specified time but 34 minutes later instead. These are the last builts:
#3​06 12-feb-2015 6:34
#3​05 11-feb-2015 13:34
#3​04 11-feb-2015 6:34
#3​03 10-feb-2015 13:34
#3​02 10-feb-2015 6:34
Plus, under the 'Schedule' text area there is a note saying:
Would last have run at Thursday, February 12, 2015 6:34:42 AM CET;
would next run at Thursday, February 12, 2015 1:34:42 PM CET.
This is not a big deal, but it is a bit annoying that there is a 34 minutes delay. Does anyone know why this is happening and how to solve it (without manually adding this delay on the schedule)?
Replace the H by 0 to have 6:00.
The H is intended to distribute tasks over the hour, so not all Jenkins tasks start exactly at 06:00 etc. (so it is not a delay, but a different way of scheduling).
Two different tasks scheduled both at H 13 * * * will start at different minutes but still between 13:00 and 13:59:59, so they won't make your system too slow. The H value is the job specific hash value, so it will still be a constant within the job, but different between jobs.

Jenkins SCM Polling - Biweekly (Every Two Weeks)

Currently I am polling SCM
H H(0-8) * * 5
Which I intend to mean: poll between midnight and 8am on Friday.
What I would like is to poll every OTHER Friday.
The accepted answer does not work in Jenkins:
Invalid input: "0 0-8 * * 5/2": line 1:12: unexpected token: /
So take a look at this answer (and vote that up in case it helps):
H H 8-14,22-28 * 5
"Run at some hour and some minute (see here for the meaning of H) every Friday (=the 5th day, see here), if that Friday happens to be between day 8-14 or 22-28 of month." Looks good in my local Jenkins, skipping the run on January 31st:
Would last have run at Friday, January 24, 2020 12:39:59 AM UTC; would next run at Friday, February 14, 2020 12:39:59 AM UTC.
I haven't tried this in Jenkins, but I believe the normal cron syntax would be: 0 0-8 * * 5/2
The following statement helps you to run it bi-weekly at 08:00 A.M on Friday.
00 08 */2 * 5

Can I set Jenkins' "Build periodically" to build every other Tuesday starting March 13?

I want to schedule Jenkins to run a certain job at 8:00 am every Monday, Wednesday Thursday and Friday and 8:00 am every other Tuesday.
Right now, the best I can think of is:
# 8am every Monday, Wednesday, Thursday, and Friday:
0 8 * * 1,3-5
# 8am on specific desired Tuesdays, one line per month:
0 8 13,27 3 2
0 8 10,24 4 2
0 8 8,22 5 2
0 8 5,19 6 2
0 8 3,17,31 7 2
0 8 14,28 8 2
0 8 11,25 9 2
0 8 9,23 10 2
0 8 6,20 11 2
0 8 4,18 12 2
which is is fine (if ugly) for the remainder of 2012, but it almost certainly won't do what I want in 2013.
Is there a more concise way to do this, or one that's year-independant?
This is something that comes up quite often, see e.g. this document, this forum thread or this stackoverflow question.
The answer is basically no. What I would do in your situtation is to run the job every Tuesday and have the first build step check whether to actually run by e.g. checking whether a file exists and only running if it doesn't. If it exists, it would be deleted so that the job can run the next time this check occurs. You would of course also have to check whether it's Tuesday.
I got you fam: crontab.guru
10 22 1-7,14-21,28-31 * 6
If you abandon every other Tuesday, and can be satisfied with the first and third Tuesdays a month, the following should work:
0 9 1-7 * 2
0 9 15-21 * 2
You're running every day from 1-7, but only on Tuesday, and every day from 15-21, again only on Tuesday. A Tuesday will occur only once in each of those intervals.
Yes, it's not strictly every other week, as a 5-Tuesday month will throw off your cadence, but here you have a predictable job schedule that doesn't need to be adjusted in Jenkins as time goes on.
I use Excel to generate the cron expressions. The following formulas generate every other Monday at 8:00 AM starting from Oct 22.
A B C D
1 41204 =MONTH(A1) =DAY(A1) =CONCATENATE("0 8 ", C1, " ", B1, " 1")
2 =A1+14 =MONTH(A2) =DAY(A2) =CONCATENATE("0 8 ", C2, " ", B2, " 1")
This generates
A B C D
1 22-Oct 10 22 0 8 22 10 1
2 5-Nov 11 5 0 8 5 11 1
Just auto fill Row 2 to get additional days. I'm not sure how many separate expressions you can give to Jenkins. I know it works with 26 expressions.

Resources