A super small and powerful framework for building CI pipelines using Makefile and Docker for isolation.
mkdkr is a framework for building CI/CD pipelines using Makefile scripts and Docker containers. It solves the problem of platform-specific pipeline configuration by allowing developers to define jobs in a portable Makefile format and run them in isolated Docker environments. This enables local testing and seamless execution across multiple CI engines.
Developers and DevOps engineers who need to create portable, reproducible CI/CD pipelines that can run locally and on various CI platforms without vendor lock-in.
Developers choose mkdkr for its simplicity, using only two files (Makefile and .mkdkr) to define complex pipelines, and for its ability to run the same pipeline locally and on any CI service, reducing learning curves and increasing flexibility.
mkdkr = Makefile + Docker
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Requires only a Makefile and a .mkdkr file, reducing repository clutter and setup complexity, as emphasized in the README's 'Two files only' approach.
Pipelines can be exported to run on multiple CI engines like GitHub Actions and GitLab CI via the exporter tool, enabling vendor-agnostic deployments without rewriting jobs.
Jobs run in isolated Docker containers locally, allowing thorough testing before remote execution, aligning with the philosophy of 'easy to test locally and deploy anywhere.'
The service: function spins up dependent containers like databases, automatically networking them with job instances for realistic testing environments, as shown in examples.
Requires Docker, Make, Bash, and Git installed, which can be a barrier in environments where these tools are unavailable or restricted, limiting adoption in container-less setups.
Relies on Makefile for job definitions, which can be error-prone and less intuitive than YAML for those unfamiliar with Make, increasing the learning curve and debugging effort.
The ecosystem of reusable includes is small, with only a few collections listed, meaning teams may need to build more from scratch compared to mature CI platforms.