Task and Taskfiles
If you’ve been around a project for any length of time, you’re familiar with the need for automation – specifically, something to keep track of all the little tasks that need to be done over and over again. These tasks are typically at least somewhat deterministic, don’t vary from run to run, and are run by more than one person.
The classic solution here is to use make and a Makefile. For older
codebases where you’re only worried about building C or C++ code, this is very
acceptable – it’s what make was designed for, after all. make is nearly
universally available on Unix-like systems, and it’s relatively simple to use
for basic tasks. The challenge comes in when you need to execute
non-deterministic tasks; things like running tests, linting code, bringing
test environments up and down, and so on. make can handle these tasks but
it’s not always the best tool for the job. 1




