Google cloud platform 如何从另一个项目访问GCP云源存储库?
我有项目A和项目B 我将项目a上的GCP云源存储库用作我的“源”远程存储库 我使用带有触发器的云构建来触发repo的“开发”分支的更改。作为构建的一部分,我使用gcloudbuilder部署了一些东西到projecta 现在,我想在项目B上运行相同的构建。可能是相同的分支,也可能是不同的分支(即“release-*”)。最后,我想用gcloudbuilder将一些东西部署到projectb中 问题是,当我在项目B(在谷歌云控制台中)上时,我甚至看不到项目A中的repo。它要求我“连接存储库”,但我只能选择GitHub或Bitbucket repo进行镜像。“云源存储库”选项变灰,告诉我它们“已经连接”。很明显,这不是另一个项目中的一个 我可以在项目B上建立一个新的回购协议,并推动两个回购协议,但这似乎效率低下(而且可能无法长期持续)。奇怪的是,使用外部Bitbucket/GitHub repo作为源并在两个项目中镜像,这样的设置很容易实现 在没有外部依赖的谷歌云平台上,这样的事情有可能发生吗Google cloud platform 如何从另一个项目访问GCP云源存储库?,google-cloud-platform,google-cloud-build,google-cloud-repository,Google Cloud Platform,Google Cloud Build,Google Cloud Repository,我有项目A和项目B 我将项目a上的GCP云源存储库用作我的“源”远程存储库 我使用带有触发器的云构建来触发repo的“开发”分支的更改。作为构建的一部分,我使用gcloudbuilder部署了一些东西到projecta 现在,我想在项目B上运行相同的构建。可能是相同的分支,也可能是不同的分支(即“release-*”)。最后,我想用gcloudbuilder将一些东西部署到projectb中 问题是,当我在项目B(在谷歌云控制台中)上时,我甚至看不到项目A中的repo。它要求我“连接存储库”,但
我还尝试在项目A中运行我的所有构建,并有一个单独的触发器部署到项目B(我使用替换来管理它),但由于权限问题,它失败了。云构建似乎总是使用云构建服务帐户运行,您可以管理其中的角色,但我不知道如何授予它访问其他项目的权限。同样,在这种情况下,两个版本在单个版本历史中似乎无法区分,这是不理想的。不幸的是,谷歌似乎没有在源代码存储库中提供这一功能(如果可以的话,它会动摇)
您可以考虑的另一个选项(虽然涉及外部依赖性)是先将源库镜像到GITHUB或BITKUB,然后再镜像回到源库。这样,对存储库的任何镜像所做的任何更改都将同步。(即,在项目B中推送的更改将与Bitbucket同步,在项目a中也是如此)
编辑 为了说明我的替代解决方案,这里有一个简单的图表正如您所说,您可以在BitBucket/Github外部托管您的回购协议,并将其同步到每个项目,但您需要为每个构建支付额外费用 您可以使用其他第三方服务在外部构建您的回购协议,并将结果部署到您想要的任何地方,例如。查看CircleCI或类似服务
您可以授予构建权限,使其可以引用另一个项目中的资源,但我会将它们分开以最小化复杂性 我遇到了一个类似的问题,我通过使用多个云构建文件解决了这个问题 一个云构建文件(当代码被推送到某个分支时触发)专门用于将我的所有源代码复制到新的项目源repo中,它还拥有自己的云构建文件以部署到该项目 以下是将源复制到另一个项目的云构建文件示例:
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']
这就把所有的源代码都推到了新项目中
请注意:您需要授予云构建服务帐户权限,以便将源代码推送到其他项目源代码存储库。我的解决方案:
发布-*
上创建新的云构建,并使用构建配置指定$\u项目ID
为项目B ID\u PROJECT\u ID
isPROJECT B ID - name: gcr.io/cloud-builders/docker
args:
- build
- '--no-cache'
- '-t'
- '$_GCR_HOSTNAME/$_PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
- .
- '-f'
- Dockerfile
id: Build
- name: gcr.io/cloud-builders/docker
args:
- push
- '$_GCR_HOSTNAME/$_PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
id: Push
- name: gcr.io/cloud-builders/gcloud
args:
- beta
- run
- deploy
- $_SERVICE_NAME
- '--platform=managed'
- '--image=$_GCR_HOSTNAME/$_PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
- >-
--labels=managed-by=gcp-cloud-build-deploy-cloud-run,commit-sha=$COMMIT_SHA,gcb-build-id=$BUILD_ID,gcb-trigger-id=$_TRIGGER_ID,$_LABELS
- '--region=$_DEPLOY_REGION'
- '--quiet'
- '--project=$_PROJECT_ID'
id: Deploy
entrypoint: gcloud
images:
- '$_GCR_HOSTNAME/$_PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
options:
substitutionOption: ALLOW_LOOSE
timeout: '20m'
tags:
- gcp-cloud-build-deploy-cloud-run
- gcp-cloud-build-deploy-cloud-run-managed
- driveit-hp-agreement-mngt-api```
[1]: https://i.stack.imgur.com/XhRJ4.png
您好,这是将存储库从项目A复制到项目B的推荐方法吗?您好,您选择了什么方法来解决此问题?@Madhi我放弃了这种方法,继续使用现有的on-prem基础结构来管理我们的构建。我相信在我们的GCP结构中,在更高级别上建立共享回购是可能的,但我没有访问权限,也没有人对此感兴趣。GCP上有一个开放的功能请求!请投票!我做不到。。。你能更好地描述一下你是如何做到这一点的吗?当我尝试将$\u PROJECT\u ID添加到我的云构建YAML时,它会说这个值不存在@nicolasassi您需要将变量名
\u PROJECT\u ID
添加到您的云构建中