Makefile Experiments
Summary
Experimenting with using makefiles as a build harness type structure. The idea is to package makefile
using GitHub, that can then be downloaded when running.
Conceptual Usage
As the structure is simply an experiment, no targets are actually implemented. At the top of the Makefile, you can include the makefile using the following:
-include $(shell curl -sSL -o .build-system "https://.../makefile"; echo .build-system)
This will download a Makefile called .build-system and include it at run-time. Once it has been successfully downloaded, you can run make help
for a lsit of available targets.
Limitations
Although the targets for a library are included, that doesn’t mean that any dependencies are included. For example, if a makefile library relies on non-standard binaries (e.g. jq
, awscli
, docker
), then they would need to be installed on the local environment.
I have found this doesn’t scale that well, especially for dependencies that are frequently updated (pre-1.0.0). It does have a bit of advantage in scrapping together quick and dirty build systems when working with Dev-Ops style work (docker, terraform, ansible, packer). As I have found it pretty nice to get useful commands out of the box (and readily available with make help
).
Inspiration
These experiments are inspired by cloudposse/build-harness.