minio/minio
Tooling
The tools the build, test, and release process rely on, plus how the repo configures them.
Make
The single entry point. Makefile declares ~40 phony targets. The headline ones:
| Target | What it does |
|---|---|
make help |
Lists every documented target. |
make checks |
Runs buildscripts/checkdeps.sh to verify Go and required tools. |
make getdeps |
Installs golangci-lint into .bin/golangci/<version>/. |
make build |
Compiles ./minio with version stamps from buildscripts/gen-ldflags.go. |
make install |
Same as build but installs into $GOPATH/bin/minio. |
make install-race |
Race-instrumented build (CGO_ENABLED=1 -race). |
make crosscompile |
Cross-compiles for every supported platform via buildscripts/cross-compile.sh. |
make verifiers |
Lint + check-gen. |
make test |
go test ./... with -tags kqueue,dev. |
make test-race |
Race-instrumented unit tests. |
make verify*, make test-* |
The integration test buckets covered in Testing. |
make hotfix |
One-off patched build using Dockerfile.hotfix and the pkger packager. |
make docker |
Build a Docker image with the local ./minio. |
make clean |
Remove ./minio, build artefacts, release scratch directories. |
Linters
golangci-lint— driven by.golangci.yml. Pinned viamake getdeps, downloaded into.bin/golangci/<version>/so CI and local runs match.typos— optional. If the binary is on PATH,make lintruns it with the allowlist in.typos.toml.
Code generation
Two go generate tools, both declared in the tool block of go.mod so they ship with the module:
github.com/tinylib/msgp— MessagePack encoder/decoder generation. Triggered by//go:generate msgpdirectives. Produces<file>_gen.goand<file>_gen_test.go.golang.org/x/tools/cmd/stringer— generatesString()methods for typed enums. Triggered by//go:generate stringer -type=<T> -output=<T>_string.godirectives.
make verifiers runs go generate ./... and fails if any _gen.go or _string.go file changed but wasn't committed (Makefile:check-gen).
Build version stamping
buildscripts/gen-ldflags.go produces the -ldflags value used at build time. It encodes the release timestamp, git SHA, and any hotfix marker into compiled-in symbols read by cmd/build-constants.go.
CI
Workflows live in .github/workflows/. They cover:
- Lint + unit tests on push and pull request.
- Resiliency suites and integration tests for the bigger feature areas.
- Release tag handling.
Local reproduction is just make verifiers && make test && make verify.
Docker
| Dockerfile | Use |
|---|---|
Dockerfile |
Community image. Expects a pre-built ./minio binary. |
Dockerfile.cicd |
Image used by CI for running shell-based suites. |
Dockerfile.release |
Released community image (per-release). |
Dockerfile.release.old_cpu |
Build for older AMD64 CPUs without modern ISA extensions. |
Dockerfile.hotfix |
Hotfix-tagged image produced by make hotfix. |
Dockerfile.scratch |
"From scratch" image; no shell or package manager. |
docker-buildx.sh and dockerscripts/docker-entrypoint.sh are the runtime wrappers that the images use.
Release packager
pkger (a MinIO-internal Debian packager) is downloaded by the make hotfix target and produces .deb artefacts. Hotfix binaries are signed with minisign (the minisign Go package) using a key checked in only to MinIO's own release infrastructure.
Helm
helm/minio/ is the community-maintained chart. helm-releases/ keeps every prior chart bundle for reproducibility. helm-reindex.sh regenerates index.yaml after a new chart is added.
Misc
update-credits.shregeneratesCREDITS(a 1.8 MB textual list of every dependency's licence)._config.ymltells GitHub Pages how to render the README in the project landing page.CNAMEpins the documentation domain.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.