Open-Source Wikis

/

etcd

/

How to contribute

/

Tooling

etcd-io/etcd

Tooling

The build, lint, generate, release, and analysis tools that make up etcd's developer experience.

Build

Path Purpose
Makefile Human-friendly entry point (build, test, verify, fix, ...).
scripts/build.sh Builds etcd, etcdctl, etcdutl into ./bin; respects GO_BUILD_FLAGS.
scripts/build_lib.sh Shared helpers (run-as-correct-go-version, set ldflags, ...).
scripts/build_tools.sh Builds developer tools under tools/.
scripts/build-binary.sh, scripts/build-docker.sh, scripts/build-release.sh Release-time variants used by scripts/release.sh.

Makefile PLATFORMS=linux-amd64 linux-386 linux-arm linux-arm64 linux-ppc64le linux-s390x darwin-amd64 darwin-arm64 windows-amd64 windows-arm64 controls cross-builds.

Test

Path Purpose
scripts/test.sh Mega-script: dispatches on PASSES=... to run unit, integration, e2e, lint, mod-tidy, shellcheck, etc.
scripts/test_lib.sh Helpers shared between passes.
scripts/codecov_upload.sh Uploads coverage to Codecov.
tests/robustness/Makefile Sub-targets for the robustness harness (linearizable, lazyfs, antithesis, ...).

Lint and verify

Path Purpose
tools/.golangci.yaml golangci-lint config (line length, errcheck, govet, revive, gomodguard, ...).
scripts/verify_golangci-lint_version.sh Pins the linter version.
tools/.markdownlint.jsonc Markdown lint rules.
tools/.yamllint, tools/.yamlfmt YAML lint and format settings.
scripts/verify_*.sh (12 of them) One per make verify-* target.
scripts/fix/*.sh Auto-fix counterparts (bom.sh, mod-tidy.sh, shell_ws.sh, yamllint.sh).
scripts/markdown_diff_lint.sh Markdown linter that only checks files in the current diff.

Code generation

Path Purpose
scripts/genproto.sh Regenerates *.pb.go, *.pb.gw.go, _grpc.pb.go from .proto files; uses the pinned protoc 3.20.3.
scripts/verify_genproto.sh Re-runs the generation in a temp tree and diffs against committed output.
scripts/verify_proto_annotations.sh / update_proto_annotations.sh Maintains scripts/etcd_version_annotations.txt, the matrix of which RPCs first appeared in which release.
scripts/sync_go_toolchain_directive.sh Keeps Go toolchain directives in sync across modules.
scripts/update_go_workspace.sh Regenerates go.work after adding a module.

Tools directory

tools/ is itself a small ecosystem:

  • tools/benchmark/ — load generator (go install ./tools/benchmark); make bench-put is a wrapper.
  • tools/etcd-dump-db/ — read raw bolt buckets.
  • tools/etcd-dump-logs/ — decode WAL files.
  • tools/etcd-dump-metrics/ — render the full set of registered Prometheus metrics; CI uses it to detect metric drift.
  • tools/local-tester/ — tiny Procfile-driven multi-member cluster with deterministic faults.
  • tools/mod/ — auxiliary go.mod that pins build tools (e.g. protoc-gen-grpc-gateway, gofail) to specific versions.
  • tools/proto-annotations/ — Go program backing verify-proto-annotations.
  • tools/rw-heatmaps/ — visualizes throughput heatmaps from benchmark output.
  • tools/testgrid-analysis/ — analyzes Prow testgrid history for flake hotspots.
  • tools/check-grpc-experimental/ — scans for // grpc.experimental.* use; counterpart of make verify-grpc-experimental.

Release

scripts/release.sh orchestrates the entire release: it runs the verifiers, builds binaries for every platform, signs them, builds Docker images, and produces release notes from scripts/release_notes.tpl.txt. scripts/cherrypick.sh automates back-porting changes to release-3.5 / release-3.6 branches.

CI

Workflow Purpose
.github/workflows/codeql-analysis.yml GitHub CodeQL static analysis.
.github/workflows/scorecards.yml OpenSSF Scorecard.
.github/workflows/stale.yaml Auto-closes stale issues/PRs.
.github/workflows/cherrypick-bot-ok-to-test.yaml Re-runs CI for cherry-pick PRs after /ok-to-test.
.github/workflows/measure-testgrid-flakiness.yaml Periodic flake report.
.github/workflows/antithesis-test.yml, antithesis-verify.yml, antithesis.debugger.yml Deterministic-simulation runs.
.github/workflows/verify-released-assets.yaml Sanity-checks the binaries published to GitHub Releases.
.github/workflows/gh-workflow-approve.yaml Gate for first-time-contributor workflow runs.

The bulk of etcd-io/etcd CI runs on Kubernetes Prow (https://prow.k8s.io/?repo=etcd-io%2Fetcd); the GitHub-Actions slice is for Actions-only concerns like CodeQL.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Tooling – etcd wiki | Factory