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 | bash
This command downloads and runs an installation script that:
- Fetches the latest
remake
binary. - Places it in under
/usr/local/bin
.
Make sure your Go bin
directory is in your PATH
:
go install github.com/TrianaLab/remake@latest
Alternatively, clone and build from source:
git clone https://github.com/TrianaLab/remake.git
cd remake
make install
All 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 themake
command (can be repeated).
Print the current configuration (registry, cache directory, credentials).
remake config
Redirect to file to export settings:
remake config > config.yaml
Show 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
*.mk
includesinstall
,status
/run
targets. - 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.