In a lot of projects, this is usually done via README. It tells you what running dependencies to install and how to run certain commands.
This can get harder to maintain as things change, the project grows, and complexity increases.
I see two parts to automate here: actually setting up the environment, and running the application or orchestrating multiple apps.
How do you address this?
I work primarily on the JVM & the projects (personal/corporate) I work w/ can be summarised as below:
docker-compose.yml
.However one approach that I’ve always been fond of (& apply/advocate wherever I can) is to replace (3) w/ a
Makefile
containing a bunch of standard targets shared across all repos, egtest
,integration-test
. Then Makefiles are thinly customised to fit the repo’s particular repo.This has proven to be very helpful wrt congnitive load (and also CI/CD pipelines): ALL projects, regardless of the toolchain, use the same set of commands, namely
make test
make integration-test
make compose-up
make run
In short (quoting myself here):