Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Circle CI: Reduce build_hermes_macos Hermes SDK cache size by 75% (#3…
…4886) Summary: Pull Request resolved: #34886 ## Reduced cache size The `build_hermes_macos` job can spend over 20 minutes restoring cached build artifacts (over 5 GB), when only `build_macosx` and `destroot` are required to be cached: `build_macosx` as it may contain a pre-built `hermesc` from previous builds, and `destroot` which contains the artifacts for previous iOS/macOS builds. This is the `build_hermes_macos` Restore Cache step, before the changes in this diff: ``` Found a cache from build 308044 at v1-hermes-build_hermes_macos-debug-PEiMHp9XQ13KtYFQMKoT27DmHkkoxOi_PJUyW7PacZE= Size: 5.2 GiB Cached paths: * /Users/distiller/react-native/sdks/hermes/build_host_hermesc * /Users/distiller/react-native/sdks/hermes/build_iphoneos * /Users/distiller/react-native/sdks/hermes/build_catalyst * /Users/distiller/react-native/sdks/hermes/build_iphonesimulator * /Users/distiller/react-native/sdks/hermes/build_macosx * /Users/distiller/react-native/sdks/hermes/destroot Downloading cache archive... Unarchiving cache... ``` Size: 5.2 GiB Time to restore cache: 183s This is the `build_hermes_macos` Restore Cache step, after the changes in this diff: ``` Found a cache from build 310128 at v2-hermes-build_hermes_macos-debug-e7WmoA0+mfveXq1zsMYpgR6BYqVuuDjmVeLLyjqPJWk= Size: 1.3 GiB Cached paths: * /Users/distiller/react-native/sdks/hermes/build_macosx * /Users/distiller/react-native/sdks/hermes/destroot Downloading cache archive... Unarchiving cache... ``` Size: 1.3 GiB Time to restore cache: 42s **This is a size reduction of 75%, and execution time reduction of 77%.** This savings will apply to every workflow that runs afterwards until the Hermes cache is invalidated due to a new commit landing in `facebook/hermes`. ## Added `export_hermesc` As part of the work mentioned above, a reusable `export_hermesc` command was added, which will export hermesc for use in downstream steps. Either of the macOS or iOS build scripts will generate this binary. As we now only cache the macOS build dir, that version is loaded from cache by default if available: - If the cache contains hermesc, both the macOS and iOS builds will use it. - If the cache does not contain hermesc, then the iOS job will use the hermesc that was built by the macOS job previously. - The `export_hermesc` command will work regardless of the order of the Hermes build scripts ## Refactoring of magic strings into reusable yaml references Some additional changes to the Circle CI config were done in order to reduce repetition of artifacts/cache paths that are re-used across workflows. Changelog: [Internal] Reviewed By: cipolleschi Differential Revision: D40153737 fbshipit-source-id: b9f07302ccc9bac1ce72a09b944d3210e6db2ec1
- Loading branch information