Calendaring - When can a Job run?
Clarive continuous delivery is as much about letting teams release their changes whenever they deem them to be ready, as it is about letting the organization plan and execute a carefully organized delivery process.
The Clarive Calendaring System sits in the middle between these two approaches or speeds, working as the arbiter between the organizational requirements and the agility of teams working around the clock to compete.
Not all Jobs can run whenever they are scheduled. There are external constraints to be observed, which is key to avoiding disruption to applications and services being delivered.
Clarive jobs can include automated and manual deployment and provisioning tasks. Therefore, plan your calendar slots carefully to prevent both deployment and provisioning tasks at a given time:
- Environment Calendars.
- Nature (technology) Calendars.
- Project Calendars.
- Calendar for other Resources.
Weekly Plan¶
Clarive calendars follow a seven-day layout that repeats weekly.
There can also be specific slots for specfic dates, such as holidays.
Slot Types¶
There are four slot types:
Empty
- no slot has been defined, so no Jobs can run.Normal
- normal deployment slot.Urgent
- urgent deployments only.No Job
- no Jobs can run during this slot.
The difference between Empty
and No Job
is the way they act in a merge. See below for more details.
Global Calendar¶
The Global Calendar is the default calendar that will be used in the event that no other calendar matches.
Environment Slots¶
These are the simplest calendars to set up.
Create one calendar per environment in the system. This is not mandatory, although it may be best to start with one calendar per environment. Morevover, this will make it easier in the future, should you plan to have different calendars for at least one environment.
If no environment calendars have been set up, then the Global Calendar will be applied.
Calendar Merge¶
Let us suppose Release 2.0 is going to deploy two different projects into the Production Environment, projects A and B.
Project A only allows scheduling of jobs to PROD after 10pm.
Project B has a similar constraint, but after 11pm.
If you try to schedule Release 2.0 to deploy to Production, the first slot available will be 11pm. That is because Clarive intersects slots restrictively to determine which is the next available slot.
Implementation guidelines:
- Set merge priorities for every calendar you create.
- Only use
No Job
if you want to block the slot at a high-precedence slot.
Precedence¶
The calendar precedence sets the order in which merge is applied. A higher precedence means it is more important than lower precedence numbers.
If two slots have the same precedence, the precedence will be defined by the alphabetical order of each calendar name.
Wildcard Slots¶
The Empty
slot is a wildcard slot, and even a higher precedence slot that is Empty
can be filled with data from
lower precedence.
Use Empty
to denote that deployment could take place at a given time if needed by any calendar. Use No Job
to
effectively deny deployment for higher precedence Jobs.
Calendaring Constraints Through Rules¶
You can also prevent a Job from running by putting a control checking during a pipeline rule CHECK
step.
For example, you could check the existence of a file in a directory in the Clarive server to prevent a Job from being
created. Simply fail (use the FAIL
op) during the CHECK
step to prevent a Job from being created.
Outward Calendaring Integrations¶
The rule can also call other tools for checking Calendaring constraints during the CHECK
step of the rule.