问题标签 [google-cloud-build]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2747 浏览

google-cloud-platform - 在 Google Cloud Build 中运行单元测试?

我正在尝试为几个 Python 项目(所有 GAE/GCF)设置 CI/CD。我可以很好地部署代码,但我想在部署步骤之前运行整个测试套件。我怎样才能做到这一点?我是否必须设置整个 docker build 步骤才能完成此操作,还是有更简单的方法?

0 投票
2 回答
2888 浏览

google-cloud-platform - Google Cloud Builder - 如何在子目录中触发构建配置?

我正在尝试建立一个 Google Cloud Builder Build Trigger 来自动构建我的ASP .NET Core 应用程序并将其部署到 Google AppEngine。

使用当前的cloudbuild.yaml

我已经使用cloud-build-local工具测试了本地构建工作。

这两种方法在本地有效:

  1. 应用程序子目录cloud-build-local --config=cloudbuild.yaml --dryrun=false .
  2. 存储库根目录cloud-build-local --config=clearbooks-rest-aspnetcore/cloudbuild.yaml --dryrun=false clearbooks-rest-aspnetcore

构建触发器定义似乎部分支持来自存储库根目录的配置文件(方法 2),但它似乎假设代码始终位于存储库根目录中。

如何配置 Cloud Builder 以在存储库的子目录中启动构建?

0 投票
1 回答
1929 浏览

google-cloud-build - Google Cloud Build 可以通过工件目录递归吗?

我的工作区如下所示:

我的cloudbuild.json样子是这样的:

我希望谷歌云构建将递归build/文件夹的内容并将文件和目录复制到我的存储桶。相反,它只复制根build/目录中的文件,忽略目录并给出有关使用-r选项的警告gsutil cp

这是构建输出:

文档https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames#directory-by-directory-vs-recursive-wildcards表明情况并非如此。

我想我可以使用gsutil 云构建器,但我怀疑我不需要,而且我在这里做错了什么。

0 投票
4 回答
15294 浏览

node.js - 如何在 Google App Engine 标准环境中使用 Google Cloud Build 或其他方法设置环境变量?

无论如何将环境变量从 Cloud Build 注入 App Engine 标准环境?

我不想将我的环境变量推送到 GitHubapp.yaml.env. 因此,当 Cloud Build 拉取和部署时,它会丢失.env文件并且服务器无法完成某些请求。

我试图避免使用 Datastore,因为 Datastore 的异步特性会使代码更加混乱。我尝试使用此处找到的加密机密,但这似乎不起作用,因为我将机密添加到应用程序部署并且它们没有进入部署,所以我认为这不是 Cloud Build 的用例。

我还尝试了这里的教程,将.env文件从存储导入 App Engine 标准,但由于标准没有本地存储,我认为它进入了空白。

那么有没有办法在.env不使用数据存储、提交app.yaml.env更改控制的情况下将其注入 App Engine 标准环境?可能使用 Cloud Build、KMS 或某种类型的存储?

这是我尝试过的cloudbuild.yaml

0 投票
0 回答
427 浏览

git - 大三角帆交付管道

我有一些关于大三角帆部署策略的问题。

我有一个要在 Kubernetes 中部署的微服务应用程序,我开始使用 Spinnaker 来管理部署工作流。我使用 Google Kubernetes Engine 和 Google Container Registry + Google Cloud Build 来管理镜像构建。存储库托管在 Github 上,一旦存储库发生一些更改,我必须构建一个新的 Docker 映像。在 Spinnaker 中,我使用清单 (v2) 部署应用程序。

因此,一方面我有用于部署的 yaml 清单文件,另一方面有托管在 Google 上的 docker 映像。

我按照本教程构建了我的交付管道。我在 Google Cloud Build 中运行测试并构建映像,然后 Spinnaker 在注册表中检测到一个新的 docker 映像并开始使用直接存储在 Spinnaker 中的清单进行部署。这对我来说很好。

但是,如果我想对清单文件进行版本控制并将其放入 git 存储库怎么办?为此,我必须在 Spinnaker 上添加一个 Github 工件,作为文本源用于部署阶段。但只有在清单文件中发现某些更改时它才会运行。因此,为避免这种情况,我必须在工件中设置默认文件路径(指定要查找的 git 分支)。这样,我必须始终使用同一个分支,并且不能在开发环境中使用具有不同名称的不同分支进行部署。另外,我必须设置两个 Github 工件,一个用于开发,一个用于生产。我认为这不是一个好的解决方案。

我想知道您如何处理这样的案件。可能我在交付工作流程中犯了一个错误,我必须在 Spinnaker 中静态设置清单。否则我不知道如何获得清单文件的正确副本。

谢谢你。

0 投票
1 回答
830 浏览

git - 如何在 GitHub ref/pull/*/merge 分支事件上触发 Google Cloud Build

据我所知,有两种方法可以在 GitHub 存储库上触发 Google Cloud Build:

  1. 所有拉取请求都是自动构建的
  2. 定义一个触发器,然后在更改分支时运行

未合并的 GitHub 拉取请求有 2 个引用,如下所示:

  • PR #1 已合并,只有refs/pull/1/head
  • PR #2 和 #3 尚未合并并且refs/pull/2/merge也存在

不幸的是,自动拉取请求触发器只构建refs/pull/*/head参考而不是refs/pull/*/merge参考。更重要的是构建refs/pull/*/merge证明拉取请求可以安全地合并到master中。

所以我试图定义一个触发器来运行refs/pull/*/merge

据我所知,Google Cloud Build 触发器只匹配表单的 GitHub 引用refs/heads/<regex>

Cloud Builder 触发器

refs/pull/*/merge更改分支时是否可以触发构建?

0 投票
1 回答
117 浏览

firebase - Node 8 Firebase 函数无法从 CloudBuild 部署

我有一个项目使用 Node 8 引擎从我的本地开发环境成功部署到 firebase 功能到 firebase。我一直在尝试让它与 CloudBuild 一起使用,但是,由于使用了 async 关键字,我得到了一个语法错误:

表明节点引擎不支持 async/await,即不支持 Node 8。引擎在 package.json 中设置并在我的本地环境中工作。

部署使用的是文档中描述的 firebase 容器:

CloudBuild 是否可以为不支持 Node8 的 Firebase 功能部署到不同的/内部端点并因此静默降级?

或者还有什么我错过的?

我试图通过将 .tsconfig 更改为目标 es2015 而不是 es2017 来证明这一理论,并从 package.json 中删除了引擎部分。结果是将函数部署到 Node8 函数?

我认为这是因为 node 8 函数已经存在,所以它只是一个更新而不是创建,但可能表明代码解析器是基于 node6 的,并且在通过 cloudbuild 部署时忽略了引擎设置?

0 投票
1 回答
1101 浏览

google-app-engine - GC Cloud Build 通过内部 IP 访问 Compute Engine

我尝试在 AppEngine 上部署我的 Python 应用程序。在部署期间,我必须从 GC Compute Engine 实例上的私有存储库下载依赖项。我已将所有需要的行添加到 requirements.txt 中,当我使用我的私有存储库的外部 IP 时它可以工作。但是使用内部IP要好得多。在 GC IAM 系统中,我已经更改了 Cloud Build 帐户和 AppEngine 帐户的权限,但它仍然不起作用并显示连接超时。也许你可以帮忙。
提前致谢!

0 投票
0 回答
215 浏览

docker - 如何仅使用 Dockerfile 在 Google Cloud Build 上启用层缓存?

我正在使用 Google Cloud Build 构建一系列我稍作修改的上游项目。我想在不添加 cloudbuild.yaml 的情况下启用层缓存。

  • 项目构建使用 Dockerfile 指定,而不是 cloudbuild.yaml。
  • 上游不接受添加 cloudbuild.yaml
  • 这个设置一切都很好,除了许多图像需要 30 分钟或更长时间来构建,因为没有启用层缓存。

如果我可以使用 cloudbuild.yaml,方法很简单: https ://cloud.google.com/cloud-build/docs/speeding-up-builds

有没有办法为我的所有云构建 Dockerfile 项目默认启用层缓存?或者我可以在 Dockerfiles 中稍微修改一下?

0 投票
2 回答
94 浏览

google-cloud-platform - 如何获取 Cloud Build 的最新更新?

根据https://cloud.google.com/cloud-build/release-notes,截至 10 月 18 日,Docker 已升级到版本 18.06.1。然而,我仍然在我们的实例中看到 17.12.0。

具体来说,我在运行时看到这些消息似乎与发行说明相矛盾cloud-build-local

我试过谷歌搜索,阅读所有快速入门、操作方法和概念页面,但我一生都无法弄清楚如何升级/重新启动/安装补丁以获得最新的 Docker 版本。

有人会指出我正确的方向吗?