gpt4 book ai didi

typescript - 谷歌云构建,引用 monorepo 中的父文件夹

转载 作者:行者123 更新时间:2023-12-02 20:40:41 26 4
gpt4 key购买 nike

我们有一个 monorepo 设置,其中每个文件夹都有一个 typescript/node 服务。还有一个共享的 /types 文件夹,我们使用 typescript 项目引用将其拉入每个项目。

由于您无法复制父文件夹,因此我们在本地使用:

docker build -f Dockerfile ..

哪个工作正常,但是使用 cloudbuild.yaml 尝试同样的事情并且 docker builder 抛出以下错误,关于丢失的文件描述符?

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,您​​可以 ignore files当您手动触发 gcloud builds summit 命令时。

但是您不能使用触发器执行此操作。您可以忽略文件,但这一次,这意味着在构建作业触发条件中必须忽略文件(例如,readme 文件,当您推送它时,触发新构建是没有用的)。但是,如果构建是由其他文件触发的,这些“忽略的文件”仍会出现在运行作业中。

关于typescript - 谷歌云构建,引用 monorepo 中的父文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64064083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com