Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
pipelight
Tiny automation pipelines. Bring CI/CD to the smallest projects. Self-hosted, Lightweight, CLI only.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
scripts-to-rule-them-all
Discontinued Set of boilerplate scripts describing the normalized script pattern that GitHub uses in its projects.
Make is not exactly made for task definition and running, but it can be used like so as long as you know its quirks and counter intuitive gotchas, of which there are many seeing as Make is meant for building sources first and foremost. I use it a lot. I've been meaning to convert at least my personal stuff to https://github.com/casey/just or another task runner for some time though, Make can really be annoying sometimes.
https://taskfile.dev/ - a mix of build tool and command runner. YAML for the Taskfiles which you might consider either a pro or con. :)
If you use Github actions, act is incredibly useful. It can be used to test your GH actions, but also serves as an interface for running tasks locally.
I am building a small cli (13mb) to address this very exactly problem and write pipelines in Toml, yaml, typescript and more. https://pipelight.dev/
https://github.com/adriancooney/Taskfile - my favourite for its simplicity. A shell alias and a shell script with a function for each "job". No need to learn yet another tool when you just want to run a few pre-defined commands from a project's root. I think, if you're going to complain about make, then maybe all you really need is a shell script.
Some competitors - Rake (ruby) - Bake - Earthly - SCons - doit
Some competitors - Rake (ruby) - Bake - Earthly - SCons - doit
Personally I like https://github.blog/2015-06-30-scripts-to-rule-them-all/ as a pattern and then let the authors do whatever crazy thing they want from there. In my experience, 99% of repos never move past using simple shell scripts with a few common functions with that pattern, and things are kept fairly simple. A select few repositories tend to mature enough that they are able to invest in swapping towards something more testable than shell scripts, and then you just have a couple people who stick to invoking `make` from the scripts but it's fine and nobody has to think about it except them. We don't stick to that exact set of scripts, but find that as long as you don't use more than like 10ish entrypoints in `script/*`, and have at least `script/bootstrap` it's fine.
You are right make is arcane. But it gets the job done. There are new exciting things happening in this area. Check out https://dagger.io.
I also really like rtx for installing tools and languages.
Make is pretty simple compared to some other CI/CD tools. Like Bazel (which K8s uses to build and release binaries) Edit: Used to use, it now uses only Make https://github.com/kubernetes/kubernetes/pull/99561