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_test
command doesn't allow tests to use data. So we need to usedata = glob(["testdata/**"]),
or similar. We add# keep
to stop gazelle from removing it.data
doesn't make it easy to access files in a parent directory, so we'll have to clean up some of the test / package structure.