Favorita: Containerized Workflow & CI/CD

The reproducibility layer: a Dockerfile, docker-compose, a Makefile of common commands, and GitHub Actions for CI and docs. The boring scaffolding that decides whether a project runs on one machine or every machine.

Primary Outcome

A reproducible project setup where anyone can build, test, and run the stack with a single command.

Solution

Docker, a Makefile, and GitHub Actions that make the project reproducible, testable on every push, and runnable with one command.

Deliverables

  • A Dockerfile and docker-compose.yml for a consistent environment

  • A Makefile wrapping the common build, test, and run commands

  • A CI workflow (ci.yml) that lints and tests on every push

  • A docs workflow (docs.yml) that builds and publishes dbt docs

  • Pinned requirements files for reproducible installs

Strategic Context

Reproducibility is the difference between a project and a liability. Without it, the original author becomes a single point of failure and onboarding takes days. Containers and CI are unglamorous, and they're what lets a data project outlive the person who wrote it.

Technical Architecture

Reproducibility is the difference between a project and a liability. Without it, the original author becomes a single point of failure and onboarding takes days. Containers and CI are unglamorous, and they're what lets a data project outlive the person who wrote it.

Problem Statement

Projects that only run on the author's machine become a single point of failure and take days to onboard onto.

Links

What's Included

Root-level Dockerfile, docker-compose.yml, Makefile, requirements*.txt/.in, and the .github/workflows CI and docs pipelines.

FAQs

Do I need Docker to use the other templates?

No, but it makes them reproducible. The dbt and model layers run without it; the container just guarantees the same environment.

What does CI actually run?

Linting and tests on each push, plus a separate workflow that builds and publishes the dbt docs site.

Tech Stack

Tool 1

Tool 4

Tool 4

Tool 3

Tool 2

Tool 4

Primary Outcome

A reproducible project setup where anyone can build, test, and run the stack with a single command.

Problem Statement

Projects that only run on the author's machine become a single point of failure and take days to onboard onto.

Solution

Docker, a Makefile, and GitHub Actions that make the project reproducible, testable on every push, and runnable with one command.

Links

Deliverables

  • A Dockerfile and docker-compose.yml for a consistent environment

  • A Makefile wrapping the common build, test, and run commands

  • A CI workflow (ci.yml) that lints and tests on every push

  • A docs workflow (docs.yml) that builds and publishes dbt docs

  • Pinned requirements files for reproducible installs

What's Included

Root-level Dockerfile, docker-compose.yml, Makefile, requirements*.txt/.in, and the .github/workflows CI and docs pipelines.

Strategic Context

Reproducibility is the difference between a project and a liability. Without it, the original author becomes a single point of failure and onboarding takes days. Containers and CI are unglamorous, and they're what lets a data project outlive the person who wrote it.

FAQs

Do I need Docker to use the other templates?

No, but it makes them reproducible. The dbt and model layers run without it; the container just guarantees the same environment.

What does CI actually run?

Linting and tests on each push, plus a separate workflow that builds and publishes the dbt docs site.

Technical Architecture

Reproducibility is the difference between a project and a liability. Without it, the original author becomes a single point of failure and onboarding takes days. Containers and CI are unglamorous, and they're what lets a data project outlive the person who wrote it.

Tech Stack

Tool 1

Tool 4

Tool 4

Tool 3

Tool 2

Tool 4