Codebuild custom cache is emptied mysteriously

0

I am running CodeBuild for building rust binaries and caching Cargo packages for faster build times using the custom cache feature. Buildspec yaml below. I am running into a problem where the build cache resets approximately every second build.

version: 0.2

phases:
  build:
    commands:
       - PATH=$PATH:$HOME/.cargo/bin && ls $HOME/.cargo/registry/cache/ && PKG_CONFIG_ALLOW_CROSS=1 cargo build -j 8 --target=armv7-unknown-linux-gnueabihf --release && s3cmd put ./target/armv7-unknown-linux-gnueabihf/release/example_* s3://example-product-builds/ --acl-public
cache:
  paths:
     - /root/.cargo/registry/cache/
     - /root/.cargo/registry/index/
     - /root/.cargo/registry/src/
     - ./target/

The cache works, but not on every build. For some reason approximately every second build the cached folders are empty. I have checked this by running ls on the cache directories during the build. Also, there is a significant impact on build time so it is obvious if the cache works or not. For example, the last 10 builds have been 4 minutes without cache and 30 seconds with cache. I have also verified that the build time does not depend on the source code by building the same source multiple times in a row.

I have also tried the /**/* syntax and it has the same problem

cache:
  paths:
     - /root/.cargo/registry/**/*
     - ./target/**/*

Edited by: devaj on Nov 18, 2019 5:20 AM

devaj
已提問 4 年前檢視次數 412 次
1 個回答
0
已接受的答案

Hi,

As I can find on the documentation https://docs.aws.amazon.com/codebuild/latest/userguide/build-caching.html, local caching stores a cache locally on a build host that is available to that build host only. If your second build starts while your first build is still running, you will not be able to hit the cache because your second build will use a new host which doesn't have cache stored.

Regards,
Kaixiang

已回答 4 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南