我有项目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 服务帐户运行,您可以管理其中的角色,但我不知道如何授予它访问另一个项目的权限。同样在这种情况下,两个构建在单个构建历史中看起来无法区分,这并不理想。
google-cloud-platform google-cloud-repository google-cloud-build
我正在运行带有“ private-cluster”选项的Google Kubernetes Engine。我还定义了“授权主网络”以能够远程访问环境-这很好。现在,我想使用Google Cloud Build设置某种CI / CD管道-成功构建新的docker映像后,该新映像应自动部署到GKE。当我第一次触发新管道时,部署到GKE失败-错误消息是:“无法连接到服务器:拨打tcp xxx.xxx.xxx.xxx:443:I/O超时”。由于我怀疑“连接的主网络”选项是造成连接超时的根本原因,因此我添加了0.0.0。0/0到允许的网络并再次启动Cloud Build作业-这次一切进行得很好,并且在创建Docker映像后将其部署到GKE。好。
剩下的唯一问题是,我真的不想让整个Internet都能够访问我的Kubernetes主服务器-这是一个坏主意,不是吗?
是否有更优雅的解决方案来通过使用允许的主网络来缩小访问范围,并能够通过云构建进行部署?
我正在设置云构建触发器以部署 PHP/Symfony 应用程序。当 docker 文件运行php app/console assetic:dump命令以创建资产时,我收到以下错误。
SQLSTATE[HY000] [2002] Connection timed out
[PDOException]
SQLSTATE[HY000] [2002] Connection timed out
[Doctrine\DBAL\Driver\PDOException]
An exception occurred in driver: SQLSTATE[HY000] [2002]
Connection timed out
[Doctrine\DBAL\Exception\ConnectionException]
Run Code Online (Sandbox Code Playgroud)
我已经决定尝试让 docker 容器连接到数据库,而不是尝试修复 symfony 应用程序,因为我对框架或 php 不够了解。
是否可以设置它以便我可以在 CLOUDSQL 端允许某种 IP 来允许这些连接?
networking google-cloud-sql docker google-cloud-platform google-cloud-build
我了解gcloud使用源 ( .)根目录中指定的 Dockerfile作为命令:
gcloud builds submit --tag gcr.io/[PROJECT_ID]/quickstart-image .
但我正在尝试指定用于构建映像的 Dockerfile,但我没有找到任何有关如何执行此操作的资源,我不知道这是否可行。
我有几个项目有同样的问题。就在一天前,它部署得很好。现在部署将退出并出现错误:
构建失败:构建错误详细信息不可用。
GCP 的日志如下所示(替换为项目名称):
{
"textPayload": "Step #5 - \"exporter\": \u001b[31;1mERROR: \u001b[0mfailed to export: failed to write image to the following tags: [us.gcr.io/project-name/gcf/us-central1/e2c2be8f-3c6d-4689-b474-21e8817b750e:ssr_version-162: GET https://storage.googleapis.com/us.artifacts.project-name.appspot.com/containers/images/sha256:b4c8acdb6f61130b2c632d1378bc84c602d6f4af2286fb9fb174e8f8376ec19f?access_token=REDACTED: unsupported status code 404; body: <?xml version='1.0' encoding='UTF-8'?><Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><Details>No such object: us.artifacts.project-name.appspot.com/containers/images/sha256:b4c8acdb6f61130b2c632d1378bc84c602d6f4af2286fb9fb174e8f8376ec19f</Details></Error>]",
"insertId": "1263383d-eff6-4302-bb99-8a8a2ad01867-554",
"resource": {
"type": "build",
"labels": {
"build_trigger_id": "",
"build_id": "1263383d-eff6-4302-bb99-8a8a2ad01867",
"project_id": "project-name"
}
},
"timestamp": "2020-10-23T06:11:27.265803715Z",
"severity": "INFO",
"labels": {
"build_step": "Step #5 - \"exporter\""
},
"logName": "projects/project-name/logs/cloudbuild",
"receiveTimestamp": "2020-10-23T06:11:27.777967721Z"
}
Run Code Online (Sandbox Code Playgroud)
当他们无法在 us.artifacts 存储桶中找到/访问图像的缓存副本时,构建似乎失败了。
一直试图联系谷歌,但到目前为止还没有回应。还有谁有相同的问题吗?目前没有看到其他人的任何报道。
我正在尝试从此仓库部署代码:
https://github.com/anishkny/puppeteer-on-cloud-functions
在Google Cloud Build中。我的cloudbuild.yaml文件内容为:
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['beta', 'functions', 'deploy', 'screenshot', '--trigger-http', '--runtime', 'nodejs8', '--memory', '1024MB']
Run Code Online (Sandbox Code Playgroud)
我为我的Cloud Build Service帐户(****@cloudbuild.gserviceaccount.com)赋予了以下角色:
但是,在我的Cloud Build日志中,我看到以下错误:
starting build "1f04522c-fe60-4a25-a4a8-d70e496e2821"
FETCHSOURCE
Fetching storage object: gs://628906418368.cloudbuild-source.googleusercontent.com/94762cc396ed1bb46e8c5dbfa3fa42550140c2eb-b3cfa476-cb21-45ba-849c-c28423982a0f.tar.gz#1534532794239047
Copying gs://628906418368.cloudbuild-source.googleusercontent.com/94762cc396ed1bb46e8c5dbfa3fa42550140c2eb-b3cfa476-cb21-45ba-849c-c28423982a0f.tar.gz#1534532794239047...
/ [0 files][ 0.0 B/ 835.0 B]
/ [1 files][ 835.0 B/ 835.0 B]
Operation completed over 1 objects/835.0 B.
tar: Substituting `.' for empty member name
BUILD
Already have image (with digest): gcr.io/cloud-builders/gcloud
ERROR: (gcloud.beta.functions.deploy) ResponseError: status=[403], code=[Forbidden], message=[The caller does not have …Run Code Online (Sandbox Code Playgroud) 基本上,在使用Google Cloud Build时,如何读取在后续步骤中先前构建步骤中写入的值?
具体来说,我想制作一个基于时间戳和$ SHORT_SHA组合的自定义图像标签。如下所示。但是,它不起作用,因为docker抱怨“导出”,即使起作用,它也可能是另一个env:
# Setting tag in a variable:
- name: 'ubuntu'
args: ['export', '_BUILD_TAG=`date', '-u', '+%Y%m%dT%H%M%S_$SHORT_SHA`']
Run Code Online (Sandbox Code Playgroud)
然后,在后续步骤中:
# Using tag from the variable:
- name: gcr.io/cloud-builders/docker
args: ['build', '-t', 'gcr.io/$PROJECT_ID/$_BUILD_TAG', '.']
Run Code Online (Sandbox Code Playgroud)
那么,如何使用一步的输出呢?我可以将的内容写到date文件中,然后读取它,但是我回到不知道如何从读取的文件中设置变量(或者以其他方式插值其结果以构成docker build的参数)。
是否有将 Cloud Build 中的环境变量注入 App Engine 标准环境的方法?
我不想将我的环境变量推送到 GitHubapp.yaml或.env. 因此,当 Cloud Build 拉取和部署时,它会丢失.env文件并且服务器无法完成某些请求。
我试图避免使用 Datastore,因为 Datastore 的异步性质会使代码变得更加混乱。我尝试使用此处找到的加密机密,但这似乎不起作用,因为我将机密添加到 app deploy 并且它们没有进入部署,所以我认为这不是 Cloud Build 的用例。
我还尝试了此处的教程,将.env文件从存储导入 App Engine Standard,但由于 Standard 没有本地存储,因此我认为它无效。
那么有没有办法在.env不使用数据存储、提交app.yaml或.env更改控制的情况下注入App Engine 标准环境?可能会使用 Cloud Build、KMS 或某种类型的存储?
这是我尝试过的cloudbuild.yaml:
steps:
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
secretEnv: ['SECRET1', 'SECRET2', 'SECRET3', 'SECRET4', 'SECRET5']
timeout: "1600s"
secrets:
- kmsKeyName: projects/<Project-Name>/locations/global/keyRings/<Key-Ring-Name>/cryptoKeys/<Key-Name>
secretEnv:
SECRET1: <encrypted-key-base64 here>
SECRET2: …Run Code Online (Sandbox Code Playgroud) google-app-engine node.js google-cloud-platform google-cloud-build
我们正在使用云构建在 GCP 上进行持续部署。当推动提交快速(例如在开发中)时,触发的构建并行运行。有时那些相互干扰。例如,当两个应用引擎部署同时运行时。
有没有一种方法或最佳实践可以强制从同一个构建触发器触发的构建一个接一个地运行?
问候, 卡斯滕
这是我的云构建文件
substitutions:
_CLOUDSDK_COMPUTE_ZONE: us-central1-a
_CLOUDSDK_CONTAINER_CLUSTER: $_CLOUDSDK_CONTAINER_CLUSTER
steps:
- name: gcr.io/$PROJECT_ID/sonar-scanner:latest
args:
- '-Dsonar.host.url=https://sonar.test.io'
- '-Dsonar.login=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
- '-Dsonar.projectKey=test-service'
- '-Dsonar.sources=.'
- id: 'build test-service image'
name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA', '.']
- id: 'push test-service image'
name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA']
- id: 'set test-service image in yamls'
name: 'ubuntu'
args: ['bash','-c','sed -i "s,TEST_SERVICE,gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA," k8s/*.yaml']
- id: kubectl-apply
name: 'gcr.io/cloud-builders/kubectl'
args: ['apply', '-f', 'k8s/']
env:
- 'CLOUDSDK_COMPUTE_ZONE=${_CLOUDSDK_COMPUTE_ZONE}'
- 'CLOUDSDK_CONTAINER_CLUSTER=${_CLOUDSDK_CONTAINER_CLUSTER}'
images: ['gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA']
Run Code Online (Sandbox Code Playgroud)
我想实施条件步骤。我的声纳步骤在哪里。
如果分支是生产,我必须跳过声纳步骤,如果有其他分支,则必须运行步骤。
我想Cloudbuild.yaml在所有分支机构中管理相同的内容。
当我合并分支时development > staging …
google-cloud-platform google-kubernetes-engine google-cloud-build