mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/45544 ## This diff now does 5 things: 1. removes the old way we used `actions/setup-node` to manage the cache itself. 2. it creates a new `update-node-modules-cache` workflow, which is the only job that will update the node modules cache 3. it create a `yarn-install-with-cache` action that should be used install of directly calling `yarn install --non-interactive`. This will load a cache against a hash of `package.json`. 4. updated the cache reaper to aggressively remove everything but the latest `npm-{{ hash('package.json') }}`. 5. removed a `cache-setup`, which couldn't be used (we're using artefacts now). ## Why are we doing this: The various `node-cache-` keys for platforms and on various branches accounts for a very large proportion of the cache (10-20%). We don't frequently change these dependencies, and even when we do running `yarn install` after loading the cache will resolve any issues. Limiting the cache to `main` and aggressively pruning older cache entries will clean up a lot of "small win" caching. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D59917944 fbshipit-source-id: 4be6f1959e8fde642a4f208f7d19aceba2c3262f
29 lines
1.0 KiB
YAML
29 lines
1.0 KiB
YAML
name: yarn-install-with-cache
|
|
inputs:
|
|
update-cache:
|
|
description: Update the cache, only do this if you are update-node-modules-cache.yml
|
|
default: "false"
|
|
description: Only update node_modules if on main
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Load node_modules from cache
|
|
# Restore for all branches, but save for 'main'.
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: node_modules/
|
|
key: node-modules-${{ hashFiles('package.json') }}
|
|
- name: Install dependencies
|
|
shell: bash
|
|
run: yarn install --non-interactive
|
|
- name: Save node_modules to the cache
|
|
if: github.ref == 'refs/heads/main' && inputs.update-cache == 'true'
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: node_modules/
|
|
# We're assuming that variations on branches will slightly vary from main,
|
|
# so it's always important to run yarn install --non-interactive after this
|
|
# cache is restored.
|
|
key: node-modules-v1-${{ hashFiles('package.json') }}
|
|
enableCrossOsArchive: true
|