Get iOS debug files into Sentry (#9242)

* Add buildArtifactPaths to iOS builds

* Update privacyManifests

* Revert changes to build configs

* Add --include-sources flag

* Add nativeCrash tester

* Sam's crash testbed

(cherry picked from commit b0a0cb7799cd900777570cae7dc10461cf811e0f)

* Output artifacts, tarball, extract and upload dSYM to Sentry

* Revert "Sam's crash testbed"

This reverts commit cc2c9828a0.

* Remove sources for other targets, include sources for main bundle

* Apply suggestion from @mozzius

* Apply suggestion from @mozzius

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
This commit is contained in:
Eric Bailey
2025-10-22 09:17:52 -05:00
committed by GitHub
parent 6086bc5d5c
commit d7e8429753
4 changed files with 65 additions and 6 deletions
+21 -2
View File
@@ -98,10 +98,29 @@ jobs:
yarn use-build-number-with-bump
eas build -p ios
--profile ${{ inputs.profile || 'testflight' }}
--local --output build.ipa --non-interactive
--local --output build.tar.gz --non-interactive
- name: 📂 Extract build artifact
run: |
if [ -f "build.tar.gz" ]; then
echo "Extracting build.tar.gz..."
mkdir ios-build
tar -xzf build.tar.gz -C ios-build
echo "Extraction completed successfully"
else
echo "Archive file not found!"
exit 1
fi
- name: 🚀 Deploy
run: eas submit -p ios --non-interactive --path build.ipa
run: eas submit -p ios --non-interactive --path ios-build/ios/build/Bluesky.ipa
- name: 🪲 Upload dSYM to Sentry
run: >
SENTRY_ORG=blueskyweb
SENTRY_PROJECT=app
SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
yarn sentry-cli debug-files upload ios-build/ios/build/Bluesky.app.dSYM.zip --include-sources
- name: 📚 Get version from package.json
id: get-build-info
+28
View File
@@ -112,6 +112,34 @@ module.exports = function (_config) {
'com.apple.security.application-groups': 'group.app.bsky',
},
privacyManifests: {
NSPrivacyCollectedDataTypes: [
{
NSPrivacyCollectedDataType: 'NSPrivacyCollectedDataTypeCrashData',
NSPrivacyCollectedDataTypeLinked: false,
NSPrivacyCollectedDataTypeTracking: false,
NSPrivacyCollectedDataTypePurposes: [
'NSPrivacyCollectedDataTypePurposeAppFunctionality',
],
},
{
NSPrivacyCollectedDataType:
'NSPrivacyCollectedDataTypePerformanceData',
NSPrivacyCollectedDataTypeLinked: false,
NSPrivacyCollectedDataTypeTracking: false,
NSPrivacyCollectedDataTypePurposes: [
'NSPrivacyCollectedDataTypePurposeAppFunctionality',
],
},
{
NSPrivacyCollectedDataType:
'NSPrivacyCollectedDataTypeOtherDiagnosticData',
NSPrivacyCollectedDataTypeLinked: false,
NSPrivacyCollectedDataTypeTracking: false,
NSPrivacyCollectedDataTypePurposes: [
'NSPrivacyCollectedDataTypePurposeAppFunctionality',
],
},
],
NSPrivacyAccessedAPITypes: [
{
NSPrivacyAccessedAPIType:
+8 -4
View File
@@ -36,7 +36,8 @@
"extends": "base",
"ios": {
"resourceClass": "large",
"autoIncrement": true
"autoIncrement": true,
"buildArtifactPaths": ["ios/build/*"]
},
"android": {
"autoIncrement": true
@@ -50,7 +51,8 @@
"extends": "base",
"distribution": "internal",
"ios": {
"autoIncrement": false
"autoIncrement": false,
"buildArtifactPaths": ["ios/build/*"]
},
"android": {
"autoIncrement": false
@@ -63,7 +65,8 @@
"testflight": {
"extends": "base",
"ios": {
"autoIncrement": true
"autoIncrement": true,
"buildArtifactPaths": ["ios/build/*"]
},
"android": {
"autoIncrement": true
@@ -77,7 +80,8 @@
"extends": "base",
"distribution": "internal",
"ios": {
"autoIncrement": true
"autoIncrement": true,
"buildArtifactPaths": ["ios/build/*"]
},
"android": {
"autoIncrement": true
+8
View File
@@ -3,6 +3,7 @@ import {View} from 'react-native'
import {useNavigation} from '@react-navigation/native'
import {type NavigationProp} from '#/lib/routes/types'
import {Sentry} from '#/logger/sentry/lib'
import {useSetThemePrefs} from '#/state/shell'
import {ListContained} from '#/view/screens/Storybook/ListContained'
import {atoms as a, ThemeProvider} from '#/alf'
@@ -95,6 +96,13 @@ function StorybookInner() {
testID="sharedPrefsTestOpenBtn">
<ButtonText>Open Shared Prefs Tester</ButtonText>
</Button>
<Button
color="negative"
size="large"
onPress={() => Sentry.nativeCrash()}
label="crash">
<ButtonText>Sentry Crash</ButtonText>
</Button>
<ThemeProvider theme="light">
<Theming />