containerd/containerd
Tooling
The repository ships and uses the following developer tools.
Build
makedrives everything (Makefileplus per-OS overlaysMakefile.linux,Makefile.windows,Makefile.darwin,Makefile.freebsd).go≥ 1.26 (pergo.mod).buffor protobuf — install viascript/setup/install-dev-tools. Used bymake protos,make proto-fmt,make check-protos.
Code generators
bin/protoc-gen-go-fieldpath— built fromcmd/protoc-gen-go-fieldpath/. Generates*_fieldpath.pb.gofor events.bin/go-buildtag— built fromcmd/go-buildtag/. Adds//go:buildconstraints to generated_grpc.pb.goso the shim build can drop gRPC.bin/gen-manpages— built fromcmd/gen-manpages/. Renders man pages from urfave/cli definitions.go-md2man(third-party) — converts the long-form Markdown manpages underdocs/man/to roff.
Lint
golangci-lintwith.golangci.yml. Pinned viascript/setup/install-dev-tools.buffor.protoformatting and breaking-change detection.lychee(.lycheeignore) checks links indocs/.
Vendoring
containerd is fully vendored. make vendor runs go mod tidy && go mod vendor && go mod verify, then does the same for api/. make verify-vendor repeats the process in a tmp dir and diffs — used in CI to catch missed updates. make remove-replace strips the local replace directive on the api module so the vendor tree stays consistent for releases.
CI scripts
script/setup/— install scripts for runc, CNI, critools, seccomp, dev-tools, cni-windows, etc.script/test/— test orchestration:cri-integration.sh,windows-integration-test.ps1, etc.script/release/— release helpers.script/verify-go-modules.sh— sanity-check that the API submodule and main module agree.
Docker & Vagrant
Dockerfile.testandcontrib/Dockerfile.testbuild images for testing.Vagrantfileprovides a Linux VM (Fedora) preinstalled with all dependencies for developers on macOS/Windows.vagrant up && vagrant sshand you canmakedirectly inside..devcontainer/devcontainer.jsonconfigures GitHub Codespaces / VS Code dev containers.
Fuzzing
contrib/fuzz/ and .github/workflows/fuzz.yml integrate with the OSS-Fuzz project. Each fuzzer uses github.com/AdaLogics/go-fuzz-headers to feed deterministic inputs into containerd internals.
Release tooling
releases/contains both per-version*.tomlnotes and the deprecated cri-containerd note files..github/workflows/release.ymlandrelease/cut binaries on tag push, sign artifacts, and upload to GitHub Releases.make releasebuildsreleases/<version>.tar.gzlocally;make static-releasedoes the same with a static link.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.