Remake is a powerful CLI tool that packages, distributes, and runs Makefiles as OCI artifacts. It enables centralized management of build scripts, seamless integration into CI/CD pipelines, and consistent execution across environments.
This repository includes a Makefile catalog under catalog/, providing reusable OCI-published Makefiles organized by category:
-
Runtimes (
catalog/runtimes/):make-os.mk: Detect host OS, distribution, version, and architecture.make-podman.mk: Install and start Podman runtime from upstream binaries.
-
Services (
catalog/services/):make-redis.mk: Spin up a Redis container via Podman with configurable password, port, and data volume.
Each Makefile declares its own VERSION := x.y.z and bootstraps any lower-level dependencies automatically (OS detection, Podman). Simply invoke the highest-level Makefile:
remake run -f oci://ghcr.io/TrianaLab/make-os:latest detect
# Or if you feel lazy today, you can just run:
remake run -f trianalab/make-os detect- CI/CD Friendly: Easily integrate Makefile-based workflows into modern CI/CD systems. Keep your build logic versioned and reproducible across pipelines.
- Centralized Makefiles: Store your Makefiles in container registries for a single source of truth. Share and reuse build definitions across teams.
- Caching & Performance: Local cache reduces redundant downloads, speeding up builds and reducing registry load.
- Versioning & Rollback: Tag your build scripts via OCI tags. Roll back to previous versions with zero hassle.
- Secure Distribution: Leverage OCI registry authentication and transport security for safe artifact delivery.
curl -fsSL https://raw.githubusercontent.com/TrianaLab/remake/main/scripts/get-remake.sh | bashThis command downloads and runs an installation script that:
- Fetches the latest
remakebinary. - Places it in under
/usr/local/bin.
Make sure your Go bin directory is in your PATH:
go install github.com/TrianaLab/remake@latestAlternatively, clone and build from source:
git clone https://github.com/TrianaLab/remake.git
cd remake
make installAll commands share the same global options and configuration (default: ~/.remake/config.yaml).
Authenticate with an OCI registry (default: ghcr.io).
remake login [registry] -u <username> -p <password>registry: Optional OCI host (e.g.,docker.io).- Prompts for missing credentials interactively.
Upload a local Makefile to an OCI registry, tagging it as an artifact.
remake push <registry/repo:tag> [-f <path>]<registry/repo:tag>: e.g.,ghcr.io/myorg/myrepo:1.0.0.-f: Path to Makefile (default:makefile).
Download and display a Makefile artifact.
remake pull <registry/repo:tag> [--no-cache]--no-cache: Force re-download, bypassing local cache.
Execute targets from a local or remote Makefile artifact.
remake run [targets...] [-f <path|registry/repo:tag>] [--make-flag <flag>] [--no-cache]targets: One or more Makefile targets.-f: Specify Makefile path or OCI reference.--make-flag: Pass flags to themakecommand (can be repeated).
Print the current configuration (registry, cache directory, credentials).
remake configRedirect to file to export settings:
remake config > config.yamlShow the installed Remake CLI version.
remake version- Fork the repository.
- Create a new branch:
git checkout -b feature/<YourFeature>. - Add or update Makefile artifacts under
catalog/, settingVERSION := x.y.z. - Ensure new/updated
*.mkincludesinstall,status/runtargets. - Commit and push—CI will publish artifacts automatically to GHCR.
- Open a Pull Request describing your changes.
MIT © TrianaLab. See the LICENSE file for details.
See NOTICE.md for additional legal and licensing details.