For my own projects written in Rust, I'm using cargo-make as a task runner. This way I can write build my build logic in one file and use it both locally and on CI/CD server. It works quite well to the point I used it in my Rust projects template here which is then used by cargo-generate.

Cargo-make uses YAML file to define all the build steps. Today I learned about similar tool called mask which allows defining build steps in Markdown.

I find it super cool. It's like documentation which at the same time can build your project! Didn't use it yet, but I'm waiting for the opportunity to do so.