Google Cloud Build 触发器 - 获取子模块时出现问题

Google Cloud Build Trigger - Problem Fetching Submodules

我在 Google Cloud Source Repositories 中托管了源代码。它有一个 git 子模块,该子模块也托管在 Google Cloud Source Repositories(在同一个 GCP 项目中)。 .gitmodules 文件看起来像这样:

[submodule "src/my-repo"]
    path = src/my-repo
    url = ssh://source.developers.google.com:2022/p/my-project/r/my-repo

我配置了一个 Google Cloud Build 触发器,但是构建失败了,因为 git 子模块不存在(这似乎是一个持续存在的缺点,即克隆 Cloud Source Repositories回购不初始化和更新 git 子模块)。

我在 cloudbuild.yaml 文件中添加了一个步骤来初始化和更新子模块,但出现 Host key verification failed 错误。我做了这样的事情,

cloudbuild.yaml

steps:
  - name: 'gcr.io/cloud-builders/git'
    args: ['submodule', 'update', '--init']
  ...

我可以确认触发器正在使用默认服务帐户。并且该服务帐户确实具有子模块存储库的权限。

我欢迎任何有关如何调试此问题的建议。

我根据 的回答,通过重写子模块的 url 使其使用 HTTPS 而不是 SSH 来解决这个问题。谢谢,Mousu​​mi Roy。

具体来说,我的 .gitmodules 文件未更改

[submodule "src/my-repo"]
    path = src/my-repo
    url = ssh://source.developers.google.com:2022/p/my-project/r/my-repo

但我的 cloudbuild.yaml 中的第一步已更改为

steps:
  - name: 'gcr.io/cloud-builders/git'
    entrypoint: 'bash'
    args:
    - -c
    - |
      git config -f .gitmodules submodule.src/my-repo.url https://source.developers.google.com/p/my-project/r/my-repo
      git submodule update --init

有点神奇的是,然后可以检出子模块。我认为这是默认情况下用于对回购进行身份验证的 Cloud Build service account,但我不知道当构建为 运行.[=17= 时如何在容器中执行身份验证]