
Remake CLI π
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.
ποΈ Catalog
This repository includes a Makefile catalog under catalog/, providing reusable OCI-published Makefiles organized by category:
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
π Benefits
- 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.
π οΈ Installation
Via Installer Script
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.
Go Installation
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
π Usage
All commands share the same global options and configuration (default: ~/.remake/config.yaml).
π Login
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.
π¦ Push
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).
π₯ Pull
Download and display a Makefile artifact.
remake pull <registry/repo:tag> [--no-cache]
--no-cache: Force re-download, bypassing local cache.
π Run
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 the make command (can be repeated).
βοΈ Config
Print the current configuration (registry, cache directory, credentials).
remake config
Redirect to file to export settings:
remake config > config.yaml
π Version
Show the installed Remake CLI version.
remake version
π€ Contributing
- Fork the repository.
- Create a new branch:
git checkout -b feature/<YourFeature>.
- Add or update Makefile artifacts under
catalog/, setting VERSION := x.y.z.
- Ensure new/updated
*.mk includes install, status/run targets.
- Commit and pushβCI will publish artifacts automatically to GHCR.
- Open a Pull Request describing your changes.
π License
MIT Β© TrianaLab. See the LICENSE file for details.
π NOTICE
See NOTICE.md for additional legal and licensing details.