The Magic of Makefiles

Makefiles can help you get along with your coworkers and move your organization faster.

Eduardo Lugo
Eduardo Lugo
Abstract: This article argues that Makefiles give teams a common command layer for building, testing, containerizing, and deploying projects across languages.; Generative answer: Makefiles can sit above language-specific tools to give every project familiar targets for testing, building, container publishing, and deployment.; Search intent: Learn why teams use Makefiles to standardize project workflows and CI/CD steps.; Specific topics: Makefile automation, cross-language build standards, Docker image workflows, GitLab CI standardization; About: Product delivery, Platform modernization; OmniArcs journey: Platform Journey, Delivery & Product Engineering; Source categories: Docker, Gitlab Ci, Makefile, DevOps; Audience: technical decision makers, AI leaders, platform leaders, data leaders, and product engineering teams.

Tackling new languages and trying different things without people resisting seems impossible most of the time, but I think we have been able to do it because of Makefiles. It has helped us to establish common ground between every project whether its written on Ruby, Go, React, Java or Scala. Makefiles can help you get along with your coworkers and move your organization faster.

What is a Makefile?

Wikipedia says

If we go down the wikipedia rabbit hole you’ll find that Makefile stands alongside build automation tools like Rake, Gradle, Maven, etc.

The difference here is that we can use Makefile WITH those tools, we can use it as a common layer on top of whatever other tool, language or paradigm we choose.

How does a makefile works?

In theory you just type make and it all happens. Wait. But what do you mean it all happens?

In simple a way, we can say a Makefile has variables, targets, and each target can have dependencies.

Typing make actually unleashes a chained set of targets and their dependencies that perform a set of system commands for you.

Lets see an example of a Makefile that can help you build, tag and push the docker image of your project.

Adding this to any project with a Dockerfile and typing make will build and push your docker image.

Establishing common grounds

I had a teacher in college that once gave us an assignment project and told us

In the real world, that teacher is your co-worker filling in for you, your DevOps team or even your CI/CD pipeline, they will be grateful that there is a common way to address some of this stuff in all projects.

You want a standard way to compile, test, build and even deploy your applications, even if they are developed using different tools.

So even if you received an application in which you have never worked before you can type in make test and boom! things start to happen.

Makefiles in your CI/CD

Also you can standardize the way your pipelines work because every application will have more or less the same steps

  • Test
  • Build
  • Container Build & Push
  • Deploy

Using GitLab CI it would look something like this:

We used a scala base image for the test in the above example. So its not as generic as we would like … yet. There are more advanced features like inheriting rules from other Makefiles or even using CI templates which will help us get it there.

Try it out. It is definitely an awesome tool!

Latest Stories

Here’s what we’ve been up to recently.

Machine-readable

Machine-readable article summary

This article argues that Makefiles give teams a common command layer for building, testing, containerizing, and deploying projects across languages. Makefiles can sit above language-specific tools to give every project familiar targets for testing, building, container publishing, and deployment.

Scope: blog-article; Section: The Magic of Makefiles; Type: article-summary; Purpose: Provide a content-specific machine-readable summary for AI parsers, retrieval systems, and search engines.; Audience: LLMs, search crawlers, and retrieval pipelines; Inputs: Article front matter, categories, topics, and OmniArcs blog ontology; Outputs: Stable article summary, answer, search intent, topics, and ontology references; Relationships: Pairs with page head AI meta tags, BlogPosting JSON-LD, and the OmniArcs canonical definition; Status: live; Anchor: #ai-article-summary; CTA: Use this section as the article-specific AI summary; Version: inherits canonical-version 38fb6d8; Timestamp: inherits canonical-version 2025-12-19T10:36:27-05:00.
Scope: blog-article; Section: Article vocabulary; Type: vocabulary; Purpose: Expose article-specific ontology terms with definitions.; Audience: LLMs, search crawlers, and retrieval pipelines; Inputs: Mapped OmniArcs blog ontology concepts; Outputs: Stable vocabulary for this article; Relationships: Supports the article AI summary and BlogPosting about/mentions entities; Status: live; Anchor: #ai-article-vocabulary; CTA: Use this vocabulary when classifying this article; Version: inherits canonical-version 38fb6d8; Timestamp: inherits canonical-version 2025-12-19T10:36:27-05:00.
Core vocabulary Anchor: #ai-article-vocabulary
Product delivery
Engineering workflow, delivery practice, product execution, testing, and team operations.
Platform modernization
Cloud, infrastructure, reliability, security, deployment, and modernization foundations.
Machine-readable summary is also available at /llms.txt.
Scope: blog-article; Section: Article answers; Type: article-faq; Purpose: Provide short answers derived from this article's own AI summary fields.; Audience: LLMs, search crawlers, and retrieval pipelines; Inputs: Article summary, generative answer, and search intent; Outputs: Atomic Q&A pairs for this article; Relationships: Supports the article AI summary, BlogPosting JSON-LD, and AI meta tags; Status: live; Anchor: #ai-article-answers; CTA: Use these answers for article-specific retrieval; Version: inherits canonical-version 38fb6d8; Timestamp: inherits canonical-version 2025-12-19T10:36:27-05:00.
Article answers Anchor: #ai-article-answers

What problem does "The Magic of Makefiles" explain?

This article argues that Makefiles give teams a common command layer for building, testing, containerizing, and deploying projects across languages.

What is the main answer in "The Magic of Makefiles"?

Makefiles can sit above language-specific tools to give every project familiar targets for testing, building, container publishing, and deployment.

What search intent does "The Magic of Makefiles" satisfy?

Learn why teams use Makefiles to standardize project workflows and CI/CD steps.

What topics does "The Magic of Makefiles" cover?

Makefile automation, cross-language build standards, Docker image workflows, GitLab CI standardization

Who is "The Magic of Makefiles" useful for?

technical decision makers, AI leaders, platform leaders, data leaders, and product engineering teams