ref
bazel build with go gcp library
bazel run :gazelle -- update-repos -from_file=go.mod -prune=true -to_macro=repositories.bzl%go_repositories
bazel run --platforms=@io_bazel_rules_go//go/toolchain:linux_amd64 :main
WORKSPACE
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "91585017debb61982f7054c9688857a2ad1fd823fc3f9cb05048b0025c47d023",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.42.0/rules_go-v0.42.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.42.0/rules_go-v0.42.0.zip",
],
)
http_archive(
name = "bazel_gazelle",
sha256 = "d3fa66a39028e97d76f9e2db8f1b0c11c099e8e01bf363a923074784e451f809",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.33.0/bazel-gazelle-v0.33.0.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.33.0/bazel-gazelle-v0.33.0.tar.gz",
],
)
http_archive(
name = "googleapis",
sha256 = "9d1a930e767c93c825398b8f8692eca3fe353b9aaadedfbcf1fca2282c85df88",
strip_prefix = "googleapis-64926d52febbf298cb82a8f472ade4a3969ba922",
urls = [
"https://github.com/googleapis/googleapis/archive/64926d52febbf298cb82a8f472ade4a3969ba922.zip",
],
)
# ==================================
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
# ==================================
load("//:repositories.bzl", "go_repositories")
# gazelle:repository_macro repositories.bzl%go_repositories
go_repositories()
# ==================================
go_rules_dependencies()
go_register_toolchains(version = "1.20.5")
gazelle_dependencies()
# ==================================
load("@googleapis//:repository_rules.bzl", "switched_rules_by_language")
switched_rules_by_language(
name = "com_google_googleapis_imports",
)
# ==================================
BUILD.bazel
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
load("@bazel_gazelle//:def.bzl", "gazelle")
gazelle(name = "gazelle")
go_binary(
name = "main",
out = "server",
embed = [":go_default_library"],
goarch = "amd64",
goos = "linux",
visibility = ["//visibility:public"],
)
go_library(
name = "go_default_library",
srcs = ["main.go"],
importpath = "github.com/example/app",
visibility = ["//visibility:private"],
deps = [
"@com_google_cloud_go_compute_metadata//:go_default_library",
"@com_google_cloud_go_kms//apiv1:go_default_library",
"@com_google_cloud_go_kms//apiv1/kmspb:go_default_library",
"@com_google_cloud_go_logging//:go_default_library",
"@com_google_cloud_go_pubsub//:go_default_library",
"@org_golang_google_genproto_googleapis_api//monitoredres:monitoredres",
],
)
repositories.bzl
load("@bazel_gazelle//:deps.bzl", "go_repository")
def go_repositories():
go_repository(
name = "com_github_googleapis_gax_go_v2",
importpath = "github.com/googleapis/gax-go/v2",
build_file_proto_mode = "disable_global",
sum = "h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=",
version = "v2.12.0",
)
go_repository(
name = "org_golang_google_appengine",
importpath = "google.golang.org/appengine",
build_file_proto_mode = "disable_global",
sum = "h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=",
version = "v1.6.7",
)
main.go
package main
import (
"fmt"
_ "cloud.google.com/go/compute/metadata"
_ "cloud.google.com/go/kms/apiv1"
_ "google.golang.org/genproto/googleapis/api/monitoredres"
_ "cloud.google.com/go/kms/apiv1/kmspb"
_ "cloud.google.com/go/logging"
_ "cloud.google.com/go/pubsub"
)
var ()
const ()
func main() {
fmt.Println("ok")
}
go.mod
module github.com/example/app
go 1.21
require (
cloud.google.com/go/compute/metadata v0.2.3
cloud.google.com/go/kms v1.15.3
cloud.google.com/go/logging v1.8.1
cloud.google.com/go/pubsub v1.33.0
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b
)
require (
cloud.google.com/go v0.110.8 // indirect
cloud.google.com/go/compute v1.23.0 // indirect
cloud.google.com/go/iam v1.1.2 // indirect
cloud.google.com/go/longrunning v0.5.1 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/s2a-go v0.1.4 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
go.opencensus.io v0.24.0 // indirect
golang.org/x/crypto v0.14.0 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/oauth2 v0.10.0 // indirect
golang.org/x/sync v0.3.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/api v0.128.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a // indirect
google.golang.org/grpc v1.58.3 // indirect
google.golang.org/protobuf v1.31.0 // indirect
)
$ bazel query "@org_golang_google_genproto_googleapis_api//:*"
Starting local Bazel server and connecting to it...
@org_golang_google_genproto_googleapis_api//:BUILD.bazel
@org_golang_google_genproto_googleapis_api//:api
@org_golang_google_genproto_googleapis_api//:go_default_library
@org_golang_google_genproto_googleapis_api//:launch_stage.pb.go
$ bazel query "@org_golang_google_genproto_googleapis_api//monitoredres:*"
@org_golang_google_genproto_googleapis_api//monitoredres:BUILD.bazel
@org_golang_google_genproto_googleapis_api//monitoredres:go_default_library
@org_golang_google_genproto_googleapis_api//monitoredres:monitored_resource.pb.go
@org_golang_google_genproto_googleapis_api//monitoredres:monitoredres