From 67725e563b29e95faaa026a5d7bf31b0e43e864e Mon Sep 17 00:00:00 2001 From: Nick Cooke Date: Wed, 27 Aug 2025 10:52:09 -0400 Subject: [PATCH 01/10] fix(ci): Attempt to address Crashlytics flakes --- scripts/build.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scripts/build.sh b/scripts/build.sh index 2be500a8bbc..54e36dc23b1 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -702,6 +702,18 @@ case "$product-$platform-$method" in test ;; + FirebaseCrashlyticsUnit-*-spm) + RunXcodebuild \ + -scheme $product \ + "${xcb_flags[@]}" \ + IPHONEOS_DEPLOYMENT_TARGET=13.0 \ + TVOS_DEPLOYMENT_TARGET=13.0 \ + -parallel-testing-enabled NO \ + -retry-tests-on-failure \ + -test-iterations 3 \ + test + ;; + # Note that the combine tests require setting the minimum iOS and tvOS version to 13.0 *-*-spm) RunXcodebuild \ From 53b0d676acac533153effc748511d7efdb6eb570 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Wed, 27 Aug 2025 11:44:04 -0400 Subject: [PATCH 02/10] touch csh --- .github/workflows/crashlytics.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index e88f692ebc3..b291dcaab89 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -1,5 +1,5 @@ name: crashlytics - +# permissions: contents: read From ee90fa0231bfd69904dbfa8a4e231dca2d35b4aa Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Wed, 27 Aug 2025 14:53:06 -0400 Subject: [PATCH 03/10] disable p te --- .github/workflows/common.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/common.yml b/.github/workflows/common.yml index 16ba348c402..2d3bb2dc188 100644 --- a/.github/workflows/common.yml +++ b/.github/workflows/common.yml @@ -87,6 +87,7 @@ jobs: if: (github.repository == 'firebase/firebase-ios-sdk' && github.event_name == 'schedule') || contains(fromJSON('["pull_request", "workflow_dispatch"]'), github.event_name) needs: [spm-package-resolved] strategy: + max-parallel: 1 # ${{ inputs.parallel_testing_enabled == true && 99 || 1 }} matrix: os: [macos-15] xcode: [Xcode_16.4] From e951ff98d944c06a9450714c3720891217a6c2af Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Wed, 27 Aug 2025 14:56:55 -0400 Subject: [PATCH 04/10] debug --- .github/workflows/abtesting.yml | 4 ++-- .github/workflows/appdistribution.yml | 4 ++-- .github/workflows/auth.yml | 4 ++-- .github/workflows/core.yml | 4 ++-- .github/workflows/core_extension.yml | 4 ++-- .github/workflows/core_internal.yml | 4 ++-- .github/workflows/crashlytics.yml | 4 ++-- .github/workflows/database.yml | 4 ++-- .github/workflows/firebase_app_check.yml | 4 ++-- .github/workflows/firebaseai.yml | 4 ++-- .github/workflows/functions.yml | 4 ++-- .github/workflows/inappmessaging.yml | 4 ++-- .github/workflows/installations.yml | 4 ++-- .github/workflows/mlmodeldownloader.yml | 4 ++-- .github/workflows/remoteconfig.yml | 4 ++-- .github/workflows/sessions.yml | 4 ++-- .github/workflows/shared-swift.yml | 4 ++-- .github/workflows/storage.yml | 4 ++-- 18 files changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/abtesting.yml b/.github/workflows/abtesting.yml index 6edd5ef83b0..87d299846bc 100644 --- a/.github/workflows/abtesting.yml +++ b/.github/workflows/abtesting.yml @@ -9,8 +9,8 @@ on: paths: - 'FirebaseABTesting**' - 'Interop/Analytics/Public/*.h' - - '.github/workflows/abtesting.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' diff --git a/.github/workflows/appdistribution.yml b/.github/workflows/appdistribution.yml index 808e7ffe697..157cb861636 100644 --- a/.github/workflows/appdistribution.yml +++ b/.github/workflows/appdistribution.yml @@ -8,8 +8,8 @@ on: pull_request: paths: - 'FirebaseAppDistribution**' - - '.github/workflows/appdistribution.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - 'Gemfile*' diff --git a/.github/workflows/auth.yml b/.github/workflows/auth.yml index b34a5fd9bd0..afbe7178ee5 100644 --- a/.github/workflows/auth.yml +++ b/.github/workflows/auth.yml @@ -9,8 +9,8 @@ on: paths: - 'FirebaseAuth**' - 'FirebaseAuth/Interop/*.h' - - '.github/workflows/auth.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 0c30320895a..8b2ed1fb422 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -8,8 +8,8 @@ on: pull_request: paths: - 'FirebaseCore**' - - '.github/workflows/core.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - 'Gemfile*' diff --git a/.github/workflows/core_extension.yml b/.github/workflows/core_extension.yml index b36caf5c85c..62b5186d121 100644 --- a/.github/workflows/core_extension.yml +++ b/.github/workflows/core_extension.yml @@ -9,8 +9,8 @@ on: paths: - 'FirebaseCoreExtension.podspec' - 'FirebaseCore/Extension/**' - - '.github/workflows/core_extension.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - 'Gemfile*' schedule: diff --git a/.github/workflows/core_internal.yml b/.github/workflows/core_internal.yml index f536f6c4656..7ae308a53f0 100644 --- a/.github/workflows/core_internal.yml +++ b/.github/workflows/core_internal.yml @@ -9,8 +9,8 @@ on: paths: - 'FirebaseCoreInternal.podspec' - 'FirebaseCore/Internal/**' - - '.github/workflows/core_internal.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - 'Gemfile*' diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index b291dcaab89..3246bf5e722 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -9,8 +9,8 @@ on: paths: - 'Crashlytics**' - 'FirebaseCrashlytics.podspec' - - '.github/workflows/crashlytics.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' diff --git a/.github/workflows/database.yml b/.github/workflows/database.yml index a5a297b445f..e326474e306 100644 --- a/.github/workflows/database.yml +++ b/.github/workflows/database.yml @@ -12,8 +12,8 @@ on: - 'FirebaseSharedSwift**' - 'Example/Database/**' - 'FirebaseAuth/Interop/*.h' - - '.github/workflows/database.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' diff --git a/.github/workflows/firebase_app_check.yml b/.github/workflows/firebase_app_check.yml index fcec95dad4e..80a41bd6005 100644 --- a/.github/workflows/firebase_app_check.yml +++ b/.github/workflows/firebase_app_check.yml @@ -8,8 +8,8 @@ on: pull_request: paths: - 'FirebaseAppCheck**' - - '.github/workflows/firebase_app_check.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - 'Gemfile*' diff --git a/.github/workflows/firebaseai.yml b/.github/workflows/firebaseai.yml index 16e3fdb08c5..aab9e5cc257 100644 --- a/.github/workflows/firebaseai.yml +++ b/.github/workflows/firebaseai.yml @@ -4,8 +4,8 @@ on: pull_request: paths: - 'FirebaseAI**' - - '.github/workflows/firebaseai.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - 'scripts/quickstart_build_spm.sh' - 'scripts/quickstart_spm_xcodeproj.sh' diff --git a/.github/workflows/functions.yml b/.github/workflows/functions.yml index 0563dea4059..2316a39b36a 100644 --- a/.github/workflows/functions.yml +++ b/.github/workflows/functions.yml @@ -9,8 +9,8 @@ on: paths: - 'FirebaseFunctions**' - 'FirebaseSharedSwift**' - - '.github/workflows/functions.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - 'FirebaseAuth/Interop/*.h' - 'FirebaseMessaging/Interop/*.h' diff --git a/.github/workflows/inappmessaging.yml b/.github/workflows/inappmessaging.yml index 61118a10d1f..d1e95944c7d 100644 --- a/.github/workflows/inappmessaging.yml +++ b/.github/workflows/inappmessaging.yml @@ -9,8 +9,8 @@ on: paths: - 'FirebaseInAppMessaging**' - 'Interop/Analytics/Public/*.h' - - '.github/workflows/inappmessaging.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_quickstart.yml' - 'Gemfile*' diff --git a/.github/workflows/installations.yml b/.github/workflows/installations.yml index 54f95f0b67d..69f8746968c 100644 --- a/.github/workflows/installations.yml +++ b/.github/workflows/installations.yml @@ -8,8 +8,8 @@ on: pull_request: paths: - 'FirebaseInstallations**' - - '.github/workflows/installations.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' diff --git a/.github/workflows/mlmodeldownloader.yml b/.github/workflows/mlmodeldownloader.yml index d4bb6f1a5c7..633dae2b3ee 100644 --- a/.github/workflows/mlmodeldownloader.yml +++ b/.github/workflows/mlmodeldownloader.yml @@ -8,8 +8,8 @@ on: pull_request: paths: - 'FirebaseMLModelDownloader**' - - '.github/workflows/mlmodeldownloader.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - 'Gemfile*' diff --git a/.github/workflows/remoteconfig.yml b/.github/workflows/remoteconfig.yml index 5dc0984c517..dbf47d72de3 100644 --- a/.github/workflows/remoteconfig.yml +++ b/.github/workflows/remoteconfig.yml @@ -9,8 +9,8 @@ on: paths: - 'FirebaseRemoteConfig**' - 'Interop/Analytics/Public/*.h' - - '.github/workflows/remoteconfig.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' diff --git a/.github/workflows/sessions.yml b/.github/workflows/sessions.yml index f0df72c44c2..1b87b2fd006 100644 --- a/.github/workflows/sessions.yml +++ b/.github/workflows/sessions.yml @@ -9,8 +9,8 @@ on: paths: - 'FirebaseSessions**' - 'FirebaseSessions.podspec' - - '.github/workflows/sessions.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - 'Gemfile*' diff --git a/.github/workflows/shared-swift.yml b/.github/workflows/shared-swift.yml index fa13d6e9a4c..f558075e772 100644 --- a/.github/workflows/shared-swift.yml +++ b/.github/workflows/shared-swift.yml @@ -8,8 +8,8 @@ on: pull_request: paths: - 'FirebaseSharedSwift**' - - '.github/workflows/shared-swift.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - 'Gemfile*' diff --git a/.github/workflows/storage.yml b/.github/workflows/storage.yml index 29449d9fe85..9e5c718633d 100644 --- a/.github/workflows/storage.yml +++ b/.github/workflows/storage.yml @@ -9,8 +9,8 @@ on: paths: - 'FirebaseStorage**' - 'FirebaseAuth/Interop/*.h' - - '.github/workflows/storage.yml' - - '.github/workflows/common.yml' +# - '.github/workflows/.*' +# - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' From 2f39180a9ff368f8bcf71437cb76037600b5fa00 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Wed, 27 Aug 2025 15:24:11 -0400 Subject: [PATCH 05/10] Update crashlytics.yml --- .github/workflows/crashlytics.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index 3246bf5e722..e1d10983264 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -9,8 +9,8 @@ on: paths: - 'Crashlytics**' - 'FirebaseCrashlytics.podspec' -# - '.github/workflows/.*' -# - '.github/workflows/common.yml' + - '.github/workflows/crashlytics.yml' + - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' From 314ed4dabd3cde0e76a4e257746122ad50856c63 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Wed, 27 Aug 2025 15:24:27 -0400 Subject: [PATCH 06/10] Update crashlytics.yml --- .github/workflows/crashlytics.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/crashlytics.yml b/.github/workflows/crashlytics.yml index e1d10983264..b291dcaab89 100644 --- a/.github/workflows/crashlytics.yml +++ b/.github/workflows/crashlytics.yml @@ -9,8 +9,8 @@ on: paths: - 'Crashlytics**' - 'FirebaseCrashlytics.podspec' - - '.github/workflows/crashlytics.yml' - - '.github/workflows/common.yml' + - '.github/workflows/crashlytics.yml' + - '.github/workflows/common.yml' - '.github/workflows/common_cocoapods.yml' - '.github/workflows/common_catalyst.yml' - '.github/workflows/common_quickstart.yml' From 15fa90686b5f6f0655c19c5d570ffad66b0a1549 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:11:14 -0400 Subject: [PATCH 07/10] Update scripts/build.sh --- scripts/build.sh | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index 54e36dc23b1..2be500a8bbc 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -702,18 +702,6 @@ case "$product-$platform-$method" in test ;; - FirebaseCrashlyticsUnit-*-spm) - RunXcodebuild \ - -scheme $product \ - "${xcb_flags[@]}" \ - IPHONEOS_DEPLOYMENT_TARGET=13.0 \ - TVOS_DEPLOYMENT_TARGET=13.0 \ - -parallel-testing-enabled NO \ - -retry-tests-on-failure \ - -test-iterations 3 \ - test - ;; - # Note that the combine tests require setting the minimum iOS and tvOS version to 13.0 *-*-spm) RunXcodebuild \ From 199d33a81f0168b1fccdce9fb241fa362d5107b5 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:58:44 -0400 Subject: [PATCH 08/10] l --- Crashlytics/Crashlytics/Models/FIRCLSSettings.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Crashlytics/Crashlytics/Models/FIRCLSSettings.m b/Crashlytics/Crashlytics/Models/FIRCLSSettings.m index 758772e5b8d..74a53706c4a 100644 --- a/Crashlytics/Crashlytics/Models/FIRCLSSettings.m +++ b/Crashlytics/Crashlytics/Models/FIRCLSSettings.m @@ -189,16 +189,16 @@ - (NSDictionary *)loadCacheKey { } - (void)deleteCachedSettings { - __weak FIRCLSSettings *weakSelf = self; - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ - __strong FIRCLSSettings *strongSelf = weakSelf; +// __weak FIRCLSSettings *weakSelf = self; +// dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ + __strong FIRCLSSettings *strongSelf = self; //weakSelf; if ([strongSelf.fileManager fileExistsAtPath:strongSelf.fileManager.settingsFilePath]) { [strongSelf.fileManager removeItemAtPath:strongSelf.fileManager.settingsFilePath]; } if ([strongSelf.fileManager fileExistsAtPath:strongSelf.fileManager.settingsCacheKeyPath]) { [strongSelf.fileManager removeItemAtPath:strongSelf.fileManager.settingsCacheKeyPath]; } - }); +// }); @synchronized(self) { self.isCacheKeyExpired = YES; From 8b7e80626c5325e630bcdff9733c65257356d8c2 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:59:01 -0400 Subject: [PATCH 09/10] sp --- .github/workflows/common.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/common.yml b/.github/workflows/common.yml index 2d3bb2dc188..112dd8b5cd0 100644 --- a/.github/workflows/common.yml +++ b/.github/workflows/common.yml @@ -87,7 +87,7 @@ jobs: if: (github.repository == 'firebase/firebase-ios-sdk' && github.event_name == 'schedule') || contains(fromJSON('["pull_request", "workflow_dispatch"]'), github.event_name) needs: [spm-package-resolved] strategy: - max-parallel: 1 # ${{ inputs.parallel_testing_enabled == true && 99 || 1 }} + # max-parallel: 1 # ${{ inputs.parallel_testing_enabled == true && 99 || 1 }} matrix: os: [macos-15] xcode: [Xcode_16.4] From 30021c08ece98b32484779d9b73f74fe03944f37 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:47:35 -0400 Subject: [PATCH 10/10] Update Crashlytics/Crashlytics/Models/FIRCLSSettings.m --- Crashlytics/Crashlytics/Models/FIRCLSSettings.m | 1 + 1 file changed, 1 insertion(+) diff --git a/Crashlytics/Crashlytics/Models/FIRCLSSettings.m b/Crashlytics/Crashlytics/Models/FIRCLSSettings.m index 74a53706c4a..afbad073761 100644 --- a/Crashlytics/Crashlytics/Models/FIRCLSSettings.m +++ b/Crashlytics/Crashlytics/Models/FIRCLSSettings.m @@ -189,6 +189,7 @@ - (NSDictionary *)loadCacheKey { } - (void)deleteCachedSettings { + // __weak FIRCLSSettings *weakSelf = self; // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ __strong FIRCLSSettings *strongSelf = self; //weakSelf;