google-cloud-platform - 在不破坏构建日志的情况下并行化谷歌云构建步骤

标签 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/代码覆盖率

我们在 cloudbuild.yaml 中用 docker id 标记了这些步骤,并使用 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 东西是最好的答案吗?

最佳答案

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

中出现的顺序

您所看到的是构建并行化的结果,因为标记为能够并发运行的每个步骤在其执行过程中处于不同的步骤。

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

关于google-cloud-platform - 在不破坏构建日志的情况下并行化谷歌云构建步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55502264/

相关文章:

java - SpannerOptions 处的 Google Spanner NullPointerException

python - cloudsql 数据库与 django on 'new' 灵活的谷歌应用引擎

continuous-integration - 运行 UI SeleniumRC 测试作为 CI 过程的一部分

docker - Kubernetes 上的暂存和生产

kubernetes - 基于 Kubernetes 指标的 Google 云 GKE 水平 Pod 自动缩放

google-cloud-platform - 空闲 Kubernetes 集群上的高内存消耗

ssl - 在 IIS 上设置多个站点并添加 SSL - GCP 虚拟机

c++ - 有没有跨平台持续集成的工具(c++ Win32和linux)

selenium - 使用 BDD 加快持续集成流程

kubernetes - 启用Istio的GKE群集无法与Google Service Infrastructure API可靠地通信