-
Notifications
You must be signed in to change notification settings - Fork 0
ci: build speed improvements #76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
Code Coverage Report
|
📊 Code Coverage Summary
|
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
📊 Code Coverage Summary
|
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
📊 Code Coverage Summary
|
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
we dont even want to keep it rollin
📊 Code Coverage Summary
|
📊 Code Coverage Summary
|
📊 Code Coverage Summary
|
📊 Code Coverage Summary
|
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
also add timestampst outputs
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
fast follow fixes
|
📊 Code Coverage Summary
|
f321828
to
d168acd
Compare
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
1 similar comment
📊 Code Coverage Summary
|
we dont need them anymore and some bad outputs in them can break the test reporter all we need are the apks
Build artifacts for this PR are available: You can download these artifacts from the "Artifacts" section of the workflow run. |
📊 Code Coverage Summary
|
BOTTOM LINE: Cut the build time in half!
about 15 mins down from 30.
main features?
scripts/ccachify_native_modules.sh
you have to update theandroid/CMakeLists.txt
file in EVERY SINGLE INDIVIDUALnode_modules
folderstarted off trying to figure out how to keep
externalNativeBuildDebug
from rebuilding on every buildBoy was that a can of worms.
It turns out this is effectively impossible because of the build fingerprinting that is done as a part of the build being the native modules.
I tried everything.
Zips
Tars
Rsync
The only thing that works is
rsync -a
because it does byte for byte copies. But there's no archive format that will work. They're ever so slight differences which you can check between doing a tar with the options to not do anything any compression and rsync -ajust
diff -r untared_dir rsync _a
and you'll see ever so slight differences between the.cxx
andandroid/app/build/intermediates
folders.So it just can't be done. Unless you have some place that you can like Mount a disc for bite storage. Which might work but it's probably overkill.
0 so I ended up going with
ccache
now the builds still happen over and over again but they are still just as fast as if they didn't only off by a couple seconds.And I almost forgot I was only looking in our project's main Android folder for setting up doing anything related to native modules. The first first archive thing I was describing earlier and then earlier ccache as well.
Well, it turns out any react native modules that you depend on that get auto linked are going to have their own Android folders inside of the node modules folder.
You have to add the ccache calls to the files in there and that's the script in this PR.
again
https://reactnative.dev/docs/build-speed
TODO: figured out all the shit we need to caches is in the node_modules android/.cxx folders
+
+# I feel like the bigggest idiot for not figuring taht out faster