Skip to content

Commit 65e0f79

Browse files
Dmitry Rykunfacebook-github-bot
Dmitry Rykun
authored andcommitted
Backport fix: update CircleCI config to use the RN version in Hermes workspace caching (#35617)
Summary: This is a backport of 0edcbc3. It fixes inconsistencies in caching strategies of Hermes tarball and Hermes workspace on CircleCI. ## Changelog [INTERNAL] [FIXED] - Update CircleCI config to use the RN version in Hermes workspace caching. Pull Request resolved: #35617 Test Plan: 1. Create and push a new branch. 2. Change version in. react-native/package.json 3. Push those changes. Before: CircleCI restores cached Hermes workspace for the old version. After: CircleCI creates new workspace for the new version. Reviewed By: cipolleschi Differential Revision: D41970943 Pulled By: dmytrorykun fbshipit-source-id: 7e343b7a8d4b1c5a63016ec53538abe4ad7808cc
1 parent f07490b commit 65e0f79

File tree

1 file changed

+32
-10
lines changed

1 file changed

+32
-10
lines changed

.circleci/config.yml

+32-10
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ references:
5252
gems_cache_key: &gems_cache_key v1-gems-{{ checksum "Gemfile.lock" }}
5353
gradle_cache_key: &gradle_cache_key v1-gradle-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}-{{ checksum "ReactAndroid/gradle.properties" }}
5454
hermes_workspace_cache_key: &hermes_workspace_cache_key v4-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/hermes/hermesversion" }}
55-
hermes_workspace_debug_cache_key: &hermes_workspace_debug_cache_key v2-hermes-{{ .Environment.CIRCLE_JOB }}-debug-{{ checksum "/tmp/hermes/hermesversion" }}
56-
hermes_workspace_release_cache_key: &hermes_workspace_release_cache_key v2-hermes-{{ .Environment.CIRCLE_JOB }}-release-{{ checksum "/tmp/hermes/hermesversion" }}
55+
hermes_workspace_debug_cache_key: &hermes_workspace_debug_cache_key v2-hermes-{{ .Environment.CIRCLE_JOB }}-debug-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}
56+
hermes_workspace_release_cache_key: &hermes_workspace_release_cache_key v2-hermes-{{ .Environment.CIRCLE_JOB }}-release-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}
5757
hermes_windows_cache_key: &hermes_windows_cache_key v3-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "tmp/hermes/hermesversion" }}
58-
hermes_tarball_debug_cache_key: &hermes_tarball_debug_cache_key v3-hermes-tarball-debug-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version"}}
59-
hermes_tarball_release_cache_key: &hermes_tarball_release_cache_key v2-hermes-tarball-release-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version"}}
58+
hermes_tarball_debug_cache_key: &hermes_tarball_debug_cache_key v4-hermes-tarball-debug-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}
59+
hermes_tarball_release_cache_key: &hermes_tarball_release_cache_key v3-hermes-tarball-release-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}
6060
pods_cache_key: &pods_cache_key v8-pods-{{ .Environment.CIRCLE_JOB }}-{{ checksum "packages/rn-tester/Podfile.lock.bak" }}-{{ checksum "packages/rn-tester/Podfile" }}
6161
windows_yarn_cache_key: &windows_yarn_cache_key v1-win-yarn-cache-{{ arch }}-{{ checksum "yarn.lock" }}
6262
windows_choco_cache_key: &windows_choco_cache_key v1-win-choco-cache-{{ .Environment.CIRCLE_JOB }}
@@ -257,6 +257,17 @@ commands:
257257
name: Report size of RNTester.app (analysis-bot)
258258
command: GITHUB_TOKEN="$PUBLIC_ANALYSISBOT_GITHUB_TOKEN_A""$PUBLIC_ANALYSISBOT_GITHUB_TOKEN_B" scripts/circleci/report-bundle-size.sh << parameters.platform >> || true
259259

260+
get_react_native_version:
261+
steps:
262+
- run:
263+
name: Get React Native version
264+
command: |
265+
VERSION=$( grep '"version"' package.json | cut -d '"' -f 4 | head -1)
266+
# Save the react native version we are building in a file so we can use that file as part of the cache key.
267+
echo "$VERSION" > /tmp/react-native-version
268+
echo "React Native Version is $(cat /tmp/react-native-version)"
269+
echo "Hermes commit is $(cat /tmp/hermes/hermesversion)"
270+
260271
with_hermes_tarball_cache_span:
261272
parameters:
262273
steps:
@@ -273,12 +284,7 @@ commands:
273284
type: string
274285
default: *hermes_tarball_artifacts_dir
275286
steps:
276-
- run:
277-
name: Get React Native version
278-
command: |
279-
VERSION=$( grep '"version"' package.json | cut -d '"' -f 4 | head -1)
280-
# Save the react native version we are building in a file so we can use that file as part of the cache key.
281-
echo "$VERSION" > /tmp/react-native-version
287+
- get_react_native_version
282288
- when:
283289
condition:
284290
equal: [ << parameters.flavor >>, "Debug"]
@@ -323,6 +329,21 @@ commands:
323329
324330
echo "Found Hermes tarball at $TARBALL_PATH"
325331
echo "export HERMES_ENGINE_TARBALL_PATH=$TARBALL_PATH" >> $BASH_ENV
332+
- run:
333+
name: Print Hermes version
334+
command: |
335+
HERMES_TARBALL_ARTIFACTS_DIR=<< parameters.hermes_tarball_artifacts_dir >>
336+
TARBALL_FILENAME=$(node ~/react-native/scripts/hermes/get-tarball-name.js --buildType "<< parameters.flavor >>")
337+
TARBALL_PATH=$HERMES_TARBALL_ARTIFACTS_DIR/$TARBALL_FILENAME
338+
if [[ -e $TARBALL_PATH ]]; then
339+
tar -xf $TARBALL_PATH
340+
echo 'print(HermesInternal?.getRuntimeProperties?.()["OSS Release Version"])' > test.js
341+
./destroot/bin/hermes test.js
342+
rm test.js
343+
rm -rf destroot
344+
else
345+
echo 'No Hermes tarball found.'
346+
fi
326347
- steps: << parameters.steps >>
327348
- when:
328349
condition:
@@ -1214,6 +1235,7 @@ jobs:
12141235
- checkout_code_with_cache
12151236
- run_yarn
12161237
- *attach_hermes_workspace
1238+
- get_react_native_version
12171239
- when:
12181240
condition:
12191241
equal: [ << parameters.flavor >>, "Debug"]

0 commit comments

Comments
 (0)