Use with RAM bundle?
We're using this plugin to upload our index.android.bundle and index.android.bundle.map files to Sentry as part of our CI build. We recently added bundleCommand: "ram-bundle" to our Gradle file's React options, and our Android stack traces are no longer getting symbolicated properly in Sentry. Here's an example. Here's the upload code we're currently using:
files.each do |file|
puts "Uploading #{file}"
if file.end_with?('.map')
sentry_upload_sourcemap(
auth_token: ENV['SENTRY_AUTH_TOKEN'],
org_slug: ENV['SENTRY_ORG'],
project_slug: ENV['SENTRY_PROJECT'],
version: version_name,
app_identifier: application_id,
dist: version_code,
strip_common_prefix: true,
sourcemap: file,
rewrite: true
)
else
sentry_upload_file(
auth_token: ENV['SENTRY_AUTH_TOKEN'],
org_slug: ENV['SENTRY_ORG'],
project_slug: ENV['SENTRY_PROJECT'],
version: version_name,
app_identifier: application_id,
dist: version_code,
file: file,
file_url: '~/' + file.split('/')[-1]
)
end
end
Is there an additional parameter I should be passing in to these functions in order to get properly symbolicated stack traces in Sentry?
Hey @christhegrand,
sorry for abandoning the issue. Do you still experience the problem? Did you find a workaround?
I ended up rewriting the code to call the API by hand and did get it to work, although I think we did still have intermittent issues every once in a while with some files not getting symbolicated (the product I needed this for is no longer under active development). Here's what I wrote, in case it helps someone out in the future:
# The Sentry Fastlane library doesn't seem to properly upload ram-bundle files.
# So if we detect those, upload the app bundle and sourcemap by calling the API manually through Ruby - yuck
# Here's an attempt to do the right thing in every scenario
release_id = "#{application_id}@#{version_name}"
sh("sentry-cli", "releases", "new", release_id)
files = []
# The RAM-bundle sourcemaps use extensions created by Facebook called x_facebook_offsets. If we detect that
# extension inside the sourcemap, we have a ram-bundle.
if system("grep -q x_facebook_offsets #{mailworker_sourcemap}")
system("sentry-cli releases files #{release_id} upload-sourcemaps --dist #{ENV['BAGEL_CLIENT_HASH']} --bundle #{mailworker_bundle} --bundle-sourcemap #{mailworker_sourcemap}")
else
files.push(mailworker_bundle, mailworker_sourcemap)
end
if system("grep -q x_facebook_offsets #{app_sourcemap}")
system("sentry-cli releases files #{release_id} upload-sourcemaps --dist #{ENV['BAGEL_CLIENT_HASH']} --bundle #{app_bundle} --bundle-sourcemap #{app_sourcemap}")
else
files.push(app_bundle, app_sourcemap)
end
# Otherwise, we can rely on the Fastlane Sentry library for uploads to Sentry
files.each do |file|
puts "Uploading #{file}"
if file.end_with?('.map')
sh("sentry-cli", "releases", "files", release_id, "upload-sourcemaps", file, '--dist', "#{ENV['BAGEL_CLIENT_HASH']}", "--strip-common-prefix", "--rewrite")
else
sh("sentry-cli", "releases", "files", release_id, "upload", file, '~/' + file.split('/')[-1], '--dist', "#{ENV['BAGEL_CLIENT_HASH']}")
end
end
end
This issue has gone three weeks without activity. In another week, I will close it.
But! If you comment or otherwise update it, I will reset the clock, and if you label it Status: Backlog or Status: In Progress, I will leave it alone ... forever!
"A weed is but an unloved flower." ― Ella Wheeler Wilcox 🥀
Does it make sense to close this one now? Wouldn't Hermes be the advised way or is RAM bundles still a thing? @krystofwoldrich might be able to help here
If @krystofwoldrich agrees, I'm happy to close this issue.