mirror of https://github.com/kubernetes/kops.git
1.4 KiB
1.4 KiB
Bazel builds
Overview
Building with bazel offers a deterministic, faster build, including creating smaller docker images.
While bazel works well for small projects, building with kubernetes still has a few challenges. We take the following approach:
- We don't yet generate files in bazel - we use external scripts (for now)
- We vendor our dependencies, rather than relying on gazelle (although actually gazelle works, the issue is when external dependencies like apimachinery include bazel files that confuse gazelle)
- We strip bazel files from external dependencies, so we don't confuse gazelle
Bazel versions:
For building kops release branches 1.14 and older, you may need to run an older version of bazel such as 0.24.0. kops 1.15 and newer should be able to use more recent versions of bazel due to deprecation fixes that have not be backported.
How to run
make bazel-build
make bazel-build-cli
# To build end to end and upload to s3
make bazel-upload
Test:
make bazel-test
Regenerate bazel files using gazelle:
make gazelle
Other changes needed
- By default the
go_testcommand doesn't allow tests to use data. So we need to usedata = glob(["testdata/**"]),or similar. We add# keepto stop gazelle from removing it.datadoesn't make it easy to access files in a parent directory, so we'll have to clean up some of the test / package structure.