ci_*_*ci_ 12 google-cloud-platform google-cloud-repository google-cloud-build
我有项目A和项目B。
我在项目 A 上使用 GCP Cloud Source Repository 作为我的“原始”遥控器。
我将 Cloud Build 与对 repo 的“开发”分支的更改一起使用触发器来触发构建。作为构建的一部分,我使用 gcloud 构建器部署了一些东西到项目 A。
现在,我想在项目 B 上运行相同的构建。可能是同一个分支,也可能是不同的分支(即“release-*”)。最后想用 gcloud builder 部署一些东西到项目 B。
问题是,当我在项目 B(在 Google Cloud Console 中)时,我什至看不到项目 A 中的存储库。它要求我“连接存储库”,但我只能选择 GitHub 或 Bitbucket 存储库进行镜像. “云源存储库”选项变灰,告诉我它们“已经连接”。显然不是来自另一个项目的一个。
我可以在项目 B 上建立一个新的存储库,并同时推送到两个存储库,但这似乎效率低下(并且可能无法长期持续)。奇怪的是,使用外部 Bitbucket/GitHub 存储库作为源并在两个项目中进行镜像,可以轻松实现这样的设置。
在没有外部依赖的情况下,谷歌云平台中是否有可能发生这样的事情?
我还尝试在项目 A 中运行我的所有构建,并有一个单独的触发器部署到项目 B(我使用替换来管理它),但它因权限问题而失败。Cloud Builds 似乎总是使用 Cloud Build 服务帐户运行,您可以管理其中的角色,但我不知道如何授予它访问另一个项目的权限。同样在这种情况下,两个构建在单个构建历史中看起来无法区分,这并不理想。
我遇到了类似的问题,我通过使用多个 Cloud Build 文件解决了这个问题。
一个 Cloud Build 文件(当代码被推送到某个分支时被触发)专门用于将我的所有源代码复制到新项目源代码库中,其中它还有自己的 Cloud Build 文件用于部署到该项目。
以下是将源复制到另一个项目的 Cloud Build 文件示例:
steps:
- name: gcr.io/cloud-builders/git
args: ['checkout', '--orphan', 'temp']
- name: gcr.io/cloud-builders/git
args: ['add', '-A']
- name: gcr.io/cloud-builders/git
args: ['config', '--global', 'user.name', 'Your Name']
- name: gcr.io/cloud-builders/git
args: ['config', '--global', 'user.email', 'Your Email']
- name: gcr.io/cloud-builders/git
args: ['commit', '-am', 'latest production commit']
- name: gcr.io/cloud-builders/git
args: ['branch', '-D', 'master']
- name: gcr.io/cloud-builders/git
args: ['branch', '-m', 'master']
- name: gcr.io/cloud-builders/git
args: ['push', '-f', 'https://source.developers.google.com/p/project-prod/r/project-repo', 'master']
Run Code Online (Sandbox Code Playgroud)
这将所有源代码推送到新项目中。
请注意:您需要授予 Cloud Build 服务帐户权限才能将源代码推送到其他项目源代码库。
小智 0
不幸的是,谷歌似乎没有在源存储库中提供该功能(如果可以的话,那就太棒了)。
您可以考虑的另一种选择(尽管涉及外部依赖项)是首先将源存储库镜像到 GitHub 或 Bitbucket,然后再次镜像回源存储库。这样,对存储库的任何镜像所做的任何更改都将同步。(即项目 B 中推送的更改将与 Bitbucket 同步,项目 A 中也是如此)
编辑
为了说明我的替代解决方案,这是一个简单的图表
归档时间: |
|
查看次数: |
2771 次 |
最近记录: |