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-putis 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 backingverify-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 ofmake 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.