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
asked 4 years ago393 views
1 Answer
0
Accepted Answer

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

answered 4 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions