AWS CodeBuild 不适用于 Yarn 工作区

Ped*_*tes 12 yarnpkg aws-codebuild yarn-workspaces

我在我的存储库中使用 Yarn Workspaces 并使用 AWS CodeBuild 来构建我的包。构建开始时,CodeBuild 需要 60 秒来安装所有包,我想避免这次缓存node_modules文件夹。

当我添加:

cache:
  paths:
    - 'node_modules/**/*'
Run Code Online (Sandbox Code Playgroud)

到我的buildspec文件并启用LOCAL_CUSTOM_CACHE,我收到此错误:

错误发生意外错误:“EEXIST:文件已存在,mkdir '/codebuild/output/src637134264/src/git-codecommit.us-east-2.amazonaws.com/v1/repos/MY_REPOSITORY/node_modules/@packages/configs '”。

有没有办法消除配置 AWS CodeBuild 或 Yarn 的错误?

我的构建规范文件:

version: 0.2
phases:
  install:
    commands:
      - npm install -g yarn
      - git config --global credential.helper '!aws codecommit credential-helper $@'
      - git config --global credential.UseHttpPath true
      - yarn
  pre_build:
    commands:
      - git rev-parse HEAD
      - git pull origin master
  build:
    commands:
      - yarn run build
      - yarn run deploy
  post_build:
    commands:
      - echo 'Finished.'
cache:
  paths:
    - 'node_modules/**/*'
Run Code Online (Sandbox Code Playgroud)

谢谢!

更新 1:

/codebuild/output/src637134264/src/git-codecommit.us-east-2.amazonaws.com/v1/repos/MY_REPOSITORY/node_modules/@packages/configsYarn 正尝试使用命令- yarninstall阶段创建该文件夹。该文件夹是我的存储库包之一,名为@packages/config. 当我yarn在我的计算机上运行时,Yarn 会按照此处所述创建链接我的包的文件夹。我的node_modules结构如何在我的计算机上的示例:

node_modules/
|-- ...
|-- @packages/
|   |-- configs/
|   |-- myPackageA/
|   |-- myPackageB/
|-- ...
Run Code Online (Sandbox Code Playgroud)

Edm*_*ues 4

我遇到了完全相同的问题(“ EEXIST: file already exists, mkdir”),我最终使用了 S3 缓存,并且效果很好。注意:由于某种原因,第一次上传到 S3 花费的时间(10 分钟)太长,其他的都很好。

前:

[5/5] Building fresh packages...
--
Done in 60.28s.
Run Code Online (Sandbox Code Playgroud)

后:

[5/5] Building fresh packages...
--
Done in 6.64s.
Run Code Online (Sandbox Code Playgroud)

如果您已经配置了项目,则可以访问项目 -> 编辑 -> 工件 -> 其他配置来编辑缓存。

我的buildspec.yml如下:

[5/5] Building fresh packages...
--
Done in 60.28s.
Run Code Online (Sandbox Code Playgroud)

如果您使用 NPM,您会执行类似的操作,但命令略有不同:

[5/5] Building fresh packages...
--
Done in 6.64s.
Run Code Online (Sandbox Code Playgroud)

感谢:https://mechanicalrock.github.io/2019/02/03/monorepos-aws-codebuild.html