1

我使用gcr.io/cloud-builders/bazel在Google容器構建上構建我的圖像。如何加快谷歌雲平臺上的bazel構建

從日誌看來,它似乎花費大部分時間爲bazel設置工作區。這個工作空間不會因構建而改變,所以我認爲可以預先計算並存儲在一個新的圖像中。

如何加快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}'] 
+0

你如何運行它?發佈完整的命令? –

+0

添加了我正在使用的cloudbuild文件 – fabrizioM

+0

從最初查看所有可用文檔的信息可以看出,在這種情況下,緩存或卷沒有任何功能可以幫助您。所以最好的是要求Google支持 –

回答

4

集裝箱生成器不提供這是一個內置在這個時候,但你可以自己做。

  1. 將一個或多個volumes添加到構建步驟,以輸出您希望在以後的構建中還原的信息。 (請參閱documentation on volumes。)
  2. 如有必要,請修改這些構建步驟以將要保留的數據輸出到卷提供的路徑中。
  3. 在隨後的構建步驟中,使用gsutilbuild step將卷中的所有數據保存到GCS存儲桶。 (你當然也可以使用一些其他的工具將它保存到其他地方,如果你想。)

在以後的版本中,使用gsutil將數據恢復到所需的量,並裝入容積爲後續建立一步。