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
posta 4 anni fa412 visualizzazioni
1 Risposta
0
Risposta accettata

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

con risposta 4 anni fa

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande