【问题标题】:Invalid Argument Error in Google Cloud Build/GitHubGoogle Cloud Build/GitHub 中的无效参数错误
【发布时间】:2020-11-29 11:53:40
【问题描述】:

我一直在尝试将 Google Cloud Build 与我的 GitHub 帐户集成。过去,我已经为 GCP 上的其他项目设置了工作构建触发器——但是有了这个,我无法让它可靠地工作。这是我所做的:

  1. 在 GitHub 上安装 Google Cloud Build 应用并将其链接到我的 Google Cloud 帐户。
  2. 在 Google Cloud Build 中连接到我的 GitHub 存储库。作为源,我选择了“GitHub(Cloud Build GitHub App)”。
  3. 让 Cloud Build 为我创建其默认触发器 - 只是为了确保设置正确。

现在,当手动运行默认触发器时,我在选择我的分支后总是收到以下错误消息:“无法触发构建:请求包含无效参数。”看起来是这样的:

当通过 GitHub 存储库中的新提交调用时,触发器也不起作用。我通过 GitHub UI 发现了两个不同的错误:

  1. 手动调用构建时,GitHub Cloud Build Action 基本上报告了与 Cloud Build 本身相同的错误并立即失败:

  1. GitHub 云构建操作已排队/启动,但实际上从未执行任何操作。在这种情况下,Cloud Build 似乎甚至不知道由 GitHub 触发的构建。尽管默认情况下 Cloud Build 通常应在 10 分钟后取消构建,但该操作将保持此状态数小时。

到目前为止,我已经尝试过以下一些方法来缓解此问题:

  • 创建各种不同的触发器变体 - 它们似乎都不起作用。错误总是一样的。
  • 在 Github 上卸载 Cloud Build App,取消关联我的 Google Cloud 帐户,然后重新完成整个设置过程。
  • 在 Cloud Build 中连接存储库时,不要选择 GitHub 应用作为源,而是选择“GitHub(镜像)”。

在这一点上,我似乎陷入了困境,如果有任何建议/提示可以以某种方式将我推向正确的方向,我将非常感激。

我应该注意的另一件事是:我已经让触发器在这个项目中工作了一段时间。在我将 GitHub 上的主分支重命名为“生产”后,他们停止工作了一段时间。我不知道这是否与我的触发器失败有关。

【问题讨论】:

  • 我今天也开始看到这个。这可能只是 CloudBuild 的一个临时错误,还是您已经看到这个问题有一段时间了?
  • 不,我已经处理这个问题两天了。之前,我有一段时间没有使用过 Cloud Build,所以我不能确定,但​​由于我过去曾使用过它,这确实可能是 Google 方面的一个错误。我已经在他们的错误跟踪器中提交了一个问题,如果您想对此进行投票/评论:issuetracker.google.com/issues/163214522

标签: github google-cloud-platform github-actions google-cloud-build


【解决方案1】:

我发现这可能是因为您的 CloudBuild 配置文件“无效”(例如 cloudbuild.yaml)。

这让我很反感,因为这并不一定意味着它是无效的 YAML 或 JSON,只是它不是 CloudBuild 所期望的。

在我的例子中,我定义了一个secretEnv 值,但删除了使用它的step。显然,CloudBuild 不允许 secretEnv 值未使用,这导致了神秘的错误消息:

未能触发构建:请求包含无效参数。

如果不清楚,下面是一个失败的配置文件示例:

steps:
  - name: "gcr.io/cloud-builders/docker"
    entrypoint: "bash"
    args: ["-c", "docker login --username=user-name --password=$$PASSWORD"]
    secretEnv: ["PASSWORD"]
secrets:
  - kmsKeyName: projects/project-id/locations/global/keyRings/keyring-name/cryptoKeys/key-name
    secretEnv:
      PASSWORD: "encrypted-password"
      UNUSED_PASSWORD: "another-encrypted-password"

UNUSED_PASSWORD 从未在任何地方实际使用过,因此这将失败。

由于此错误消息非常模糊,我假设还有其他情况可能会导致同样的问题,因此仅将此作为要查找的错误类型的示例。

【讨论】:

  • 我今天设法进一步缩小了我的问题范围。它确实似乎与 cloudbuild.yaml 文件有关。但对我来说,它似乎错误地处理了变量替换。一旦我包含用户定义的替换,构建就会失败并出现 INVALID_ARGUMENT 错误。
  • 还有另一个发现:访问 cloudbuild.yaml 内的 shell 脚本中的变量似乎有问题。定义一个变量就可以了。但是一旦再次访问该变量,构建就会失败。
  • 我在定义 var 时发现 cloudbuild.yaml 文件存在问题。如果你用大写的 PATTERN 字母定义变量,你会得到无效的错误;但是,如果您将大小写更改为模式,那就很高兴了。
猜你喜欢
  • 2021-02-21
  • 2020-01-06
  • 1970-01-01
  • 2019-07-18
  • 2019-07-08
  • 2017-04-10
  • 1970-01-01
  • 2021-05-10
  • 2019-12-02
相关资源
最近更新 更多