Installation¶
Each makefile is self-contained (the IaC makefiles pull in shared logic from the
base/ directory).
There are two ways to use one in your project.
Option 1 — git submodule + symlink (recommended)¶
Adding the repo as a git submodule and symlinking the makefile you want keeps it easy to pull in later fixes and improvements.
# from your project root, add the submodule
git submodule add https://github.com/serpro69/devex-makefile.git
# symlink the makefile you want into place, e.g. terraform-gcp:
ln -s devex-makefile/terraform-gcp/Makefile Makefile
# try it out
make help
Keep the base/ directory reachable
The IaC makefiles include files from devex-makefile/base/ using a path
relative to the real makefile location. As long as you symlink the
makefile out of a cloned/submoduled copy of this repo (so ../base/ still
resolves), includes work automatically. Copying a single Makefile out on
its own will break those includes — see Option 2.
To pull the latest changes later:
Option 2 — download the raw file¶
You can also grab the raw makefile and drop it into your project:
curl -o Makefile \
https://raw.githubusercontent.com/serpro69/devex-makefile/master/terraform-gcp/Makefile
You also need base/
The IaC makefiles are thin wrappers that include ../base/tf.mk. If you take
this route, download the matching base/*.mk files too and preserve the
relative directory layout (base/ next to the directory holding your
Makefile), or the include will fail.
Requirements¶
Every makefile checks for its required tools on startup and prints an install link if something is missing. The exact list depends on the makefile — see each makefile's page for details. Common dependencies across the IaC makefiles:
jq— JSON processing- the underlying tool:
terraform,tofu, orpulumi gcloud— for the GCP-backed makefiles
Nerd Font (optional)
The help output and some prompts use Nerd Font glyphs. Everything works without one — the glyphs just render as tofu boxes.