【问题标题】:Cloud Build fails with timeout when build starts with Fetch instead of Pre-Build Pack.How to make Cloud build run from Pre-Build Pack instead of fetch当使用 Fetch 而不是 Pre-Build Pack 开始构建时,Cloud Build 会因超时而失败。如何让 Cloud Build 从 Pre-Build Pack 而不是 fetch 运行
【发布时间】:2021-12-22 20:57:48
【问题描述】:

由于构建期间超时,我的 gcloud 应用部署失败。查看日志后,它需要超过 10 分钟,并且无法更改 App Engine 标准超时。但是之前我的所有构建都很好,我注意到成功和失败构建日志之间的唯一变化是:

  1. 失败的构建正在使用并从 gae_runtime 获取源和图像 拉取镜像:asia.gcr.io/gae-runtimes/utilities/buildpack-shim:base_20211020a_18_04_RC00
  2. 成功构建正在从 拉取镜像:asia.gcr.io/fn-img/utilities/buildpack-shim:base_20211020a_18_04_RC00。

如何使构建从 fn-img 而不是 gae-runtimes 中提取这些图像?

【问题讨论】:

    标签: google-app-engine build fetch timeout runtime


    【解决方案1】:

    事实证明,如果您使用的是柔性环境,则只能为 App Engine 构建配置超时。您可以使用 Cloud Build 来配置超时,以部署您的 App Engine Standard 服务。因此,您可以避免 10 分钟的超时限制。

    this documentation page 中有一个分步指南,但基本上关键步骤是这个:

    args 字段中,调用 gcloud app deploy 命令并设置一个 timeout 供 App Engine 在调用 Cloud Build 时使用。这是必需的,因为 Cloud Build 构建步骤和构建的默认超时时间为 10 分钟,并且 App Engine 部署可能需要更长的时间才能完成。如果gcloud app deploy 的完成时间超过 10 分钟,指定更长的超时时间将确保构建不会超时。

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: 'bash'
      args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
    timeout: '1600s'
    

    另一方面,App Engine 标准环境不允许配置构建超时。如果您使用 Cloud Build 在 App Engine 标准环境上进行部署,并且您的构建因超时错误而失败,请考虑使用 App Engine 柔性环境或 Cloud Run 而不是 App Engine 标准环境。

    【讨论】:

    • 能否告诉我使用 gcloud app deploy 命令在 args 字段中设置超时。或者您可以提供一个示例 config.yaml 文件来配置带有超时的参数。
    • 我使用 config.yaml sn-p 编辑了我的答案,但也请注意,这仅在灵活环境中才有可能。
    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 2022-08-23
    • 2015-05-15
    • 2017-08-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多