This command will build and publish
gcr.io/k8s-image-staging/gcp-controller-manager:latest
:
bazel run //cmd/gcp-controller-manager:publish
Environment variables IMAGE_REGISTRY
, IMAGE_REPO
and IMAGE_TAG
can be
used to override destination GCR repository and tag.
This command will build and publish
example.com/my-repo/gcp-controller-manager:v1
:
IMAGE_REGISTRY=example.com IMAGE_REPO=my-repo IMAGE_TAG=v1 bazel run //cmd/gcp-controller-manager:publish
Selecting the target platform is done with the --platforms
option with bazel
.
This command builds release tarballs for Windows:
bazel build --platforms=@io_bazel_rules_go//go/toolchain:windows_amd64 //release:release-tars
This command explicitly targets Linux as the target platform:
bazel build --platforms=@io_bazel_rules_go//go/toolchain:linux_amd64 //release:release-tars
Dependencies are managed using Go modules (go mod
subcommands).
Note that builds are done with Bazel and not the Go tool. Don't follow public Go module docs, instead use instructions in this readme.
If you work within GOPATH
, go mod
will error out unless you do one of:
- move repo outside of GOPATH (it should "just work")
- set env var
GO111MODULE=on
go get github.com/new/dependency && ./tools/update_vendor.sh
go get -u github.com/existing/dependency && ./tools/update_vendor.sh
go get -u && ./tools/update_vendor.sh
Note that this most likely won't work due to cross-dependency issues or repos not implementing modules correctly.
Bazel is required to build and release cloud-provider-gcp.
To install:
go get github.com/bazelbuild/bazelisk
alias bazel=bazelisk
To re-generate BUILD
files:
tools/update_bazel.sh