并行化Google CloudBuild步骤,而不会破坏构建日志

时间:2019-04-03 18:47:04

标签: google-cloud-platform continuous-integration google-kubernetes-engine google-cloud-build continuous-testing

遵循以下指导:https://cloud.google.com/cloud-build/docs/configuring-builds/configure-build-step-order

我们已将构建拆分成多层docker映像,其中的层是

  1. 安装操作系统和第三方部门
  2. 安装我们的源代码并进行构建(根据docker ARG进行调试或发布)
  3. 运行ci /代码覆盖率

我们已经用docker id标记了cloudbuild.yaml中的步骤,并正在使用waitfor进行尝试,以便debugrelease版本可以并行运行

但是,当我们执行此操作时,构建日志会混杂在一起-用于发布和调试的构建日志混杂在一起,使其更难阅读。例如

Step #2 - "build-debug": �[0m�[91m  Downloaded colored v1.7.0
Step #5 - "build-release": �[0m�[91merror: couldn't read /tmp/mobilenode/src/attest/src/ias/../data/AttestationReportSigningCACert.pem: No such file or directory (os error 2)
Step #5 - "build-release":   --> /tmp/mobilenode/src/attest/src/ias/verify.rs:35:7
Step #5 - "build-release":    |
Step #5 - "build-release": 35 |     &[include_str!("../data/AttestationReportSigningCACert.pem")];
Step #5 - "build-release":    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Step #5 - "build-release": 
Step #2 - "build-debug": �[0m�[91m  Downloaded toml v0.4.10
[0m�[91m  Downloaded safemem v0.3.0
Step #2 - "build-debug": �[0m�[91m  Downloaded crunchy v0.1.6
Step #2 - "build-debug": �[0m�[91m  Downloaded grpcio-sys v0.4.4
Step #5 - "build-release": �[0m�[91merror: aborting due to previous error
Step #5 - "build-release": 
Step #5 - "build-release": �[0m�[91merror: Could not compile `attest`.
Step #5 - "build-release": warning: build failed, waiting for other jobs to finish...
Step #5 - "build-release": �[0m�[91merror: build failed
Step #5 - "build-release": �[0m�[91mmake: *** [src/enclave/target/release/libenclave.so] Error 101
Step #5 - "build-release": �[0mMakefile:90: recipe for target 'src/enclave/target/release/libenclave.so' failed
Step #2 - "build-debug": �[0m�[91m  Downloaded term v0.5.1
Step #2 - "build-debug": �[0m�[91m  Downloaded tiny_http v0.6.2
Step #2 - "build-debug": �[0m�[91m  Downloaded regex v0.1.80

是否有一种配置cloudbuild的方法,以便每个构建步骤都有单独的日志文件?最好的答案是对并行步骤使用不同的cloudbuild.yaml并跳过所有这些wait_for的东西吗?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但后来我发现通过 ConsoleHistory 下的 Cloud Build 查看构建可以让您单独查看每个步骤,或查看整个作业,就像您目前看到的一样(点击 Build Summary,侧边栏中的顶部条目)。 单击边栏中的步骤名称,每个步骤应由数字后跟冒号和步骤名称组成。该数字似乎基于职位在您的 cloudbuild.yaml

中出现的顺序

您所看到的是构建并行化的结果,因为标记为能够同时运行的每个步骤都在执行的不同步骤中。

Example Build 您可以阅读有关使用控制台 here 查看构建历史的更多信息。