如何加快谷歌云平台上的bazel构build

我正在使用gcr.io/cloud-builders/bazel在Google容器构build上构build我的图像。

从日志看来,似乎大部分时间都是为bazel设置工作区。 这个工作空间不会从构build变成构build,所以我认为可以预先计算并存储在一个新的图像。

如何加快Google云端平台上的这些bazel版本?

 Already have image (with digest): gcr.io/cloud-builders/bazel Extracting Bazel installation... ........................ Loading: Loading: 0 packages loaded Loading: 0 packages loaded Loading: 0 packages loaded Loading: 0 packages loaded Loading: 0 packages loaded WARNING: /builder/home/.cache/bazel/_bazel_root/eab0d61a99b6696edb3d2aff87b585e8/external/io_bazel_rules_go/go/def.bzl:137:3: DEPRECATED: com_github_golang_protobuf : new_go_repository is deprecated. Please migrate to go_repository soon. WARNING: /builder/home/.cache/bazel/_bazel_root/eab0d61a99b6696edb3d2aff87b585e8/external/io_bazel_rules_go/go/def.bzl:137:3: DEPRECATED: com_github_golang_glog : new_go_repository is deprecated. Please migrate to go_repository soon. WARNING: /builder/home/.cache/bazel/_bazel_root/eab0d61a99b6696edb3d2aff87b585e8/external/io_bazel_rules_go/go/def.bzl:137:3: DEPRECATED: org_golang_google_grpc : new_go_repository is deprecated. Please migrate to go_repository soon. WARNING: /builder/home/.cache/bazel/_bazel_root/eab0d61a99b6696edb3d2aff87b585e8/external/io_bazel_rules_go/go/def.bzl:137:3: DEPRECATED: org_golang_x_net : new_go_repository is deprecated. Please migrate to go_repository soon. WARNING: /builder/home/.cache/bazel/_bazel_root/eab0d61a99b6696edb3d2aff87b585e8/external/io_bazel_rules_go/go/def.bzl:137:3: DEPRECATED: com_github_gogo_protobuf : new_go_repository is deprecated. Please migrate to go_repository soon. WARNING: /builder/home/.cache/bazel/_bazel_root/eab0d61a99b6696edb3d2aff87b585e8/external/io_bazel_rules_go/go/def.bzl:137:3: DEPRECATED: com_github_grpc_ecosystem_grpc_gateway : new_go_repository is deprecated. Please migrate to go_repository soon. WARNING: /builder/home/.cache/bazel/_bazel_root/eab0d61a99b6696edb3d2aff87b585e8/external/io_bazel_rules_go/go/def.bzl:137:3: DEPRECATED: org_golang_google_genproto : new_go_repository is deprecated. Please migrate to go_repository soon. Analyzing: target //:docker (4 packages loaded) Analyzing: target //:docker (5 packages loaded) Analyzing: target //:docker (6 packages loaded) Analyzing: target //:docker (76 packages loaded) Analyzing: target //:docker (78 packages loaded) Analyzing: target //:docker (78 packages loaded) Analyzing: target //:docker (79 packages loaded) Analyzing: target //:docker (79 packages loaded) Analyzing: target //:docker (80 packages loaded) Analyzing: target //:docker (160 packages loaded) Analyzing: target //:docker (160 packages loaded) Analyzing: target //:docker (160 packages loaded) Analyzing: target //:docker (160 packages loaded) Analyzing: target //:docker (174 packages loaded) Analyzing: target //:docker (174 packages loaded) Analyzing: target //:docker (211 packages loaded) INFO: Analysed target //:docker (286 packages loaded). INFO: Found 1 target... [0 / 1] BazelWorkspaceStatusAction stable-status.txt [17 / 19] SHA256 external/golang/image/002.tar.gz.nogz.sha256 [42 / 281] no action running [51 / 290] no action running [63 / 302] no action running [80 / 319] no action running [101 / 340] no action running [118 / 358] no action running [138 / 378] no action running [168 / 407] Compiling external/com_github_google_protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.cc [for host]; 0s linux-sandbox [200 / 439] Compiling external/com_github_google_protobuf/src/google/protobuf/extension_set.cc [for host]; 1s linux-sandbox INFO: From ProtoCompile assets/assets/assets.pb.gw.go: assets/assets/assets.proto: warning: Import recipes.proto but not used. INFO: From ProtoCompile assets/assets/assets.swagger.json: assets/assets/assets.proto: warning: Import recipes.proto but not used. INFO: From ProtoCompile assets/assets/assets.pb.go: assets/assets/assets.proto: warning: Import recipes.proto but not used. [522 / 697] GoCompile vendor/github.com/gorilla/mux/~lib~/go_default_library.o; 0s linux-sandbox Target //:docker up-to-date: bazel-bin/docker-layer.tar INFO: Elapsed time: 331.343s, Critical Path: 13.73s INFO: Build completed successfully, 737 total actions 

编辑:添加cloudbuild文件

cloudbuild.yaml:

 steps: - name: gcr.io/cloud-builders/bazel args: ['run', '//:docker'] - name: gcr.io/cloud-builders/docker args: ['tag', 'bazel:docker', '${_IMAGE_TAG}'] images: ['${_IMAGE_TAG}'] 

容器生成器目前不提供这个内置的,但你可以自己做。

  1. 将一个或多个volumes添加到构build步骤,以输出要在稍后的构build中还原的信息。 (请参阅卷的文档 。)
  2. 如有必要,请修改这些构build步骤以将要保留的数据输出到卷提供的path中。
  3. 在随后的构build步骤中,使用gsutil 构build步骤将卷中的所有数据保存到GCS存储桶。 (如果你愿意的话,你当然也可以使用其他工具将它保存到其他地方。)

在以后的版本中,使用gsutil将数据恢复到所需的卷,然后将卷装入到后续的构build步骤中。