Tools
Essentials
- Bazel ( latest stable) / Bazelisk (will pick up version automatically)
-
- optional:
ibazelto watch for changes
- optional:
- optionally: current Go version (see
go.mod) - Any Docker daemon1
- kubectl (v1.30.0+.)
- Access to a Kubernetes v1.30.+ cluster2
All other tools are managed via Bazel either as go tool or with the help of rules_multitool.
Recommended
Although not strictly necessary, it is a lot more convenient if you also have direnv set up.
When set up correctly, it is enough to run bazel run //tools:bazel_env to make all the necessary tools available in your $PATH.
- uv to manage a virtual environment to work on the docs
Language server
You can use a local version of gopls if you prefer, but to be sure that the gopls version is compatible with the Go SDK used by this project, it's recommended to use the Bazel managed version of gopls as well.
To determine the path to the local binary, you can use the following command:
bazel cquery --output files @org_golang_x_tools_gopls//:gopls 2>/dev/null
# Example output
# bazel-out/darwin_arm64-fastbuild/bin/external/gazelle++go_deps+org_golang_x_tools_gopls/gopls_/gopls
Alternatively you can also customize the binary for the language server to bazel run --run_in_cwd @org_golang_x_tools_gopls//:gopls to let Bazel take care of the path.