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 来解决这个问题。谢谢,Mousumi 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= 时如何在容器中执行身份验证]
我在 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 来解决这个问题。谢谢,Mousumi 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= 时如何在容器中执行身份验证]