typescript - 谷歌云构建,在 monorepo 中引用父文件夹
问题描述
我们有一个monorepo
设置,其中每个文件夹都有一个typescript
/node
服务。还有一个共享/types
文件夹,我们使用 typescript 项目引用将其拉入每个项目。
由于您无法复制父文件夹,因此我们在本地使用:
docker build -f Dockerfile ..
哪个工作正常,但是使用 docker builder 尝试相同的操作cloudbuild.yaml
会引发以下错误,关于缺少文件描述符?
docker.io/library/docker:latest
error checking context: 'file ('/proc/1/fd/5') not found or excluded by .dockerignore'.
ERROR
ERROR: build step 0 "docker" failed: step exited with non-zero status: 1
------------------------------------------------------------------------------------------------------------------------------------------------
ERROR: (gcloud.builds.submit) build dc31344a-b836-4089-87ab-e6ce7c69cab3 completed with status "FAILURE"
那么,我们如何才能gcloud build
在单一存储库中使用云运行服务,并且仍然拉入我们的共享类型呢?
解决方案
当您运行 Cloud Build 作业时,它会从当前目录复制所有文件。如果您位于子目录中,则不会上传所有兄弟目录或父目录,因此不会在 Cloud Build 上知道。
为此,您必须在父目录级别运行 Cloud Build 作业,并在命令中引用 CloudBuild.yaml 文件(并指向正确的子目录)。
想想也改变你的 cloudbuild.yaml 步骤定义,因为你的根文件夹不再是子目录,而是根目录。您可以使用该directory
参数指定每一步的工作目录。
编辑 1
如果您不想在每个组件构建上上传整个 monorepo,您可以在手动触发 gcloud builds Summit 命令时忽略文件。
但是,您不能使用触发器执行此操作。您可以忽略文件,但这一次,这意味着必须在构建作业触发条件中忽略文件(例如,自述文件,当您推送它时,触发新构建是没有用的)。但是,如果构建是由其他文件触发的,这些“忽略的文件”仍然会出现在运行作业中。
推荐阅读
- c - 使用指向结构的指针时无法在 C 中获取空格后的单词
- django - 将 m2m,外键字段更新为模型在 DRF 中不起作用
- asp.net-core - 将日志文件存储在 ContentRoot 目录中是否安全
- javascript - 将图像作为用户的输入
- azure - 如何以编程方式获取 Azure webapp 的 ASUID?
- python - Analytics Reporting API v4 中的示例 HelloAnalytics.py 的问题
- html - 在 cppcms 示例中,图像未加载到浏览器中
- python - Cython 为高频控制循环传递浮点数的最快方法
- xcode - HERE 示例项目不能在 Xcode 11.5 下编译
- apache - Apache 无法访问共享磁盘