factor10 Solution Designer

Field notes

Automations

The ability to deliver often and reliably rests on automation. What a human runs gets run rarely, irregularly and with varying care; what a pipeline runs gets run every time, the same way, and can therefore be trusted. The purpose of the Automations tab is to force a deliberate choice about which checks must pass on every push, and which are moved to a nightly run instead. Likewise which cleanup jobs are needed, backups and other kinds of batch jobs.

Here you define your automations, split into two categories: pipelines and batches.

 

Feedback cycles and pipelines

Prioritise fast feedback. Use a Tag to mark which executions and checks are to run before a push, and which are moved to a nightly run. What is critical for an individual push should run on the push; what is expensive or less time-critical can wait until the night.

Then use Time budget in minutes as the steering variable to re-balance. The first thing done every morning (or possibly after lunch, if a lunch run exists) is to check whether the night's run passed without problems.

If an expensive check goes red in a nightly run it needs to be optimised and moved to the "before push" run as soon as possible. Otherwise future regressions are discovered too late.

 

Further reading