aws-amplify / amplify-hosting

AWS Amplify Hosting provides a Git-based workflow for deploying and hosting fullstack serverless web applications.
https://aws.amazon.com/amplify/hosting/
Apache License 2.0
461 stars 116 forks source link

Adding caching options to amplify.yml causes "Build container ran out of memory" #3925

Open armenr opened 7 months ago

armenr commented 7 months ago

Before opening, please confirm:

Amplify Hosting feature

Deployments

Is your feature request related to a problem? Please describe:

When I add the following to my amplify.yaml, my builds begin to fail with the error message: Build container ran out of memory

  cache:
    paths:
      - node_modules/**/*
      - $(pnpm store path)

I can confirm that the build logs show our code builds successfully, all the way to the end of our build steps...and the failure happens after our frontend is already built and ready to be deployed.

Removing the cache settings returns our build pipelines to a working condition.

We're using pnpm version 9 with workspaces and the following .npmrc settings:

shamefully-hoist=true
package-import-method=copy
link-workspace-packages=false

Based on information I've found in other issues, I even do the following in our pipeline, in an attempt to side-step memory-related limitations for my builds:

      commands:
        - |
          # Set up swap space
          echo "Setting up swap space..."
          sudo fallocate -l 32G /swapfile
          sudo chmod 600 /swapfile
          sudo mkswap /swapfile
          sudo swapon /swapfile
          sudo swapon -s
          echo "Done setting up swap space!"

Describe how you'd like this feature to work

We'd like to benefit from using the cache for faster builds.

github-actions[bot] commented 7 months ago

This has been identified as a feature request. If this feature is important to you, we strongly encourage you to give a 👍 reaction on the request. This helps us prioritize new features most important to you. Thank you!

CGarces commented 6 months ago

Can you please try just

  cache:
    paths:
      - "$(pnpm store path)"

I think that node_modules is just soft links over pnpm cache so you are storing information twice.