-
Notifications
You must be signed in to change notification settings - Fork 51
Upload symbols from build #581
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
base: main
Are you sure you want to change the base?
Conversation
|
|
||
| - name: Upload native symbols | ||
| uses: actions/upload-artifact@v4 | ||
| if: always() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if we should give the "Test" step an ID of test, move these two steps alongside "Upload test failure", and set if: steps.test.outcome == 'failure' for all 3 (or whatever the expression is). That way we don't upload these artifacts all the time for every CI run. Though if we think there is value in doing so for every run, we can.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For compiled languages, files that contain symbols are required for debugging (e.g. with a debugger) and they must match the binaries (so, dylib, dll, etc) exactly (e.g. must be built and preserved along with the binaries); these cannot be recreated after the official build is produced. Otherwise, there is no way to get any meaningful call stacks when debugging dumps or live processes. So I would have these uploaded regardless of whether they occurred under test or not. Uploading these files only add about 5-6 seconds of build time. I think the tradeoff for the minimal build time increase is outweighed by the ability to debug and get useful debugging information.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, to clarify, I am commenting on the entire collection of artifacts. To be honest, less concerned with build time than I am with so many megs of unnecessary artifacts on our builds. I was just suggesting we don't need any artifacts unless there is a test failure correct? It is at that time, it makes sense to upload all of them (shared libs, debug symbols, etc). I'm just saying we can move these two upload steps to only be on test failure. But if you really want them on every build for every commit to every PR, I suppose we can add them.
What was changed
Upload libraries and symbol files are part of CI build.
Why?
Having these type of files make it significantly easier to debug crash dumps so that symbols and call frames are matched.