fastlane: upload_symbols_to_crashlytics requires unzipped dSYM

The documentation suggests that a zipped dsym is an option, and indeed this is the default output from gym.

If I add this to my fastfile…

upload_symbols_to_crashlytics(dsym_path: “./App.dSYM.zip”)

I get the following error:

error: Invalid dSYM path (path does not end in “.dSYM”):

##### Complete output when running fastlane, including the stack trace and command used

Edited to remove repeated compile lines etc..

[18:09:22]: -------------------------------------------------
[18:09:22]: --- Step: Verifying required fastlane version ---
[18:09:22]: -------------------------------------------------
[18:09:22]: fastlane version valid
[18:09:22]: ------------------------------
[18:09:22]: --- Step: default_platform ---
[18:09:22]: ------------------------------
[18:09:22]: Driving the lane 'ios beta' 🚀
[18:09:22]: -------------------
[18:09:22]: --- Step: match ---
[18:09:22]: -------------------

+-----------------------+-------------------------------------------------+
|                         Summary for match 0.4.0                         |
+-----------------------+-------------------------------------------------+
| app_identifier        | com.autologic.assistmobile                      |
| type                  | adhoc                                           |
| readonly              | true                                            |
| git_url               | git@bitbucket.org:pitchlabs/vincertificates.git |
| username              | ash.t@biffbangpow.com                           |
| keychain_name         | login.keychain                                  |
| team_id               | 6BXRV5C384                                      |
| verbose               | false                                           |
| force                 | false                                           |
| shallow_clone         | false                                           |
| force_for_new_devices | false                                           |
| skip_docs             | false                                           |
+-----------------------+-------------------------------------------------+

[18:09:22]: Cloning remote git repo...
[18:09:24]: 🔓  Successfully decrypted certificates repo
[18:09:24]: Installing certificate...
[18:09:25]: Installing provisioning profile...

+----------------------+---------------------------------------+
|                Installed Provisioning Profile                |
+----------------------+---------------------------------------+
| App Identifier       | com.autologic.assistmobile            |
| Type                 | adhoc                                 |
| UUID                 | 9997b226-4f39-4d9f-8e8f-8033ab322256  |
| Environment Variable | sigh_com.autologic.assistmobile_adhoc |
+----------------------+---------------------------------------+

[18:09:26]: All required keys, certificates and provisioning profiles are installed 🙌
[18:09:26]: 🔒  Successfully encrypted certificates repo
[18:09:26]: Setting Provisioning Profile type to 'ad-hoc'
[18:09:26]: -----------------------
[18:09:26]: --- Step: cocoapods ---
[18:09:26]: -----------------------
[18:09:26]: $ pod install
[18:09:26]: ▸ Updating local specs repositories
[18:09:31]: ▸ CocoaPods 1.0.0.beta.6 is available.
[18:09:31]: ▸ To update use: `sudo gem install cocoapods --pre`
[18:09:31]: ▸ [!] This is a test version we'd love you to try.
[18:09:31]: ▸ For more information see http://blog.cocoapods.org
[18:09:31]: ▸ and the CHANGELOG for this version http://git.io/BaH8pQ.
[18:09:31]: ▸ Analyzing dependencies
[18:09:34]: ▸ Downloading dependencies


Pods


[18:09:42]: ▸ Pod installation complete! There are 25 dependencies from the Podfile and 27 total pods installed.
[18:09:42]: -----------------
[18:09:42]: --- Step: gym ---
[18:09:42]: -----------------
[18:09:42]: xcrun xcodebuild -list -workspace 'VinSupport.xcworkspace'

+----------------------+------------------------+
|             Summary for gym 1.6.2             |
+----------------------+------------------------+
| workspace            | VinSupport.xcworkspace |
| scheme               | AssistMobile           |
| export_method        | ad-hoc                 |
| silent               | false                  |
| clean                | true                   |
| output_directory     | build                  |
| output_name          | AssistMobile           |
| destination          | generic/platform=iOS   |
| use_legacy_build_api | false                  |
| buildlog_path        | ~/Library/Logs/gym     |
+----------------------+------------------------+

[18:09:44]: $ set -o pipefail && xcodebuild -workspace 'VinSupport.xcworkspace' -scheme 'AssistMobile' -destination 'generic/platform=iOS' -archivePath '/Users/build/Library/Developer/Xcode/Archives/2016-03-24/AssistMobile 2016-03-24 18.09.44.xcarchive' clean archive | tee /Users/build/Library/Logs/gym/AssistMobile-AssistMobile.log | xcpretty

building...


[18:10:57]: ▸ Touching AssistMobile.app
[18:10:57]: ▸ Signing /Users/build/Library/Developer/Xcode/DerivedData/VinSupport-dwaukljyxkkqncbhmgisdakrmiae/Build/Intermediates/ArchiveIntermediates/AssistMobile/InstallationBuildProductsLocation/Applications/AssistMobile.app
[18:10:57]: ▸ Touching AssistMobile.app.dSYM
[18:10:58]: ▸ Archive Succeeded
[18:10:58]: Successfully stored the archive. You can find it in the Xcode Organizer.
[18:10:58]: $ /usr/bin/xcrun /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/gym-1.6.2/lib/assets/wrap_xcodebuild/xcbuild-safe.sh -exportArchive -exportOptionsPlist '/var/folders/t7/rgzmw4bx36zcr25_wmc78bxr0000gn/T/gym20160324-75213-14bhcgk_config.plist' -archivePath '/Users/build/Library/Developer/Xcode/Archives/2016-03-24/AssistMobile 2016-03-24 18.09.44.xcarchive' -exportPath '/var/folders/t7/rgzmw4bx36zcr25_wmc78bxr0000gn/T/gym20160324-75213-paervg.gym_output' 
[18:11:13]: Compressing 22 dSYM(s)
[18:11:13]: $ cd '/Users/build/Library/Developer/Xcode/Archives/2016-03-24/AssistMobile 2016-03-24 18.09.44.xcarchive/dSYMs' && zip -r '/Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.app.dSYM.zip' *.dSYM
[18:11:16]: ▸ updating: AFNetworking.framework.dSYM/ (stored 0%)
[18:11:16]: ▸ updating: AFNetworking.framework.dSYM/Contents/ (stored 0%)
[18:11:16]: ▸ updating: AFNetworking.framework.dSYM/Contents/Info.plist (deflated 52%)
[18:11:16]: ▸ updating: AFNetworking.framework.dSYM/Contents/Resources/ (stored 0%)
[18:11:16]: ▸ updating: AFNetworking.framework.dSYM/Contents/Resources/DWARF/ (stored 0%)
[18:11:16]: ▸ updating: AFNetworking.framework.dSYM/Contents/Resources/DWARF/AFNetworking (deflated 66%)


compressing....

[18:11:16]: ▸ updating: UIImage_Categories.framework.dSYM/ (stored 0%)
[18:11:16]: ▸ updating: UIImage_Categories.framework.dSYM/Contents/ (stored 0%)
[18:11:16]: ▸ updating: UIImage_Categories.framework.dSYM/Contents/Info.plist (deflated 52%)
[18:11:16]: ▸ updating: UIImage_Categories.framework.dSYM/Contents/Resources/ (stored 0%)
[18:11:16]: ▸ updating: UIImage_Categories.framework.dSYM/Contents/Resources/DWARF/ (stored 0%)
[18:11:16]: ▸ updating: UIImage_Categories.framework.dSYM/Contents/Resources/DWARF/UIImage_Categories (deflated 64%)

[18:11:16]: Successfully exported and compressed dSYM file
[18:11:16]: Successfully exported and signed the ipa file:
[18:11:16]: /Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.ipa
[18:11:16]: -------------------------
[18:11:16]: --- Step: crashlytics ---
[18:11:16]: -------------------------
[18:11:16]: Uploading the build to Crashlytics Beta. Time for some ☕️.
[18:11:23]: Build successfully uploaded to Crashlytics Beta 🌷
[18:11:23]: -------------------------------------------
[18:11:23]: --- Step: upload_symbols_to_crashlytics ---
[18:11:23]: -------------------------------------------
[18:11:23]: $ /Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/Pods/Fabric/upload-symbols -a bd415bb7c0471d0afe6f3e3e6e3a7e50a2638a22 -p ios /Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.app.dSYM.zip
[18:11:23]: ▸ error: Invalid dSYM path (path does not end in ".dSYM"): /Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.app.dSYM.zip
[18:11:23]: Variable Dump:
[18:11:23]: {:DEFAULT_PLATFORM=>:ios, :PLATFORM_NAME=>:ios, :LANE_NAME=>"ios beta", :SIGH_PROFILE_TYPE=>"ad-hoc", :IPA_OUTPUT_PATH=>"/Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.ipa", :DSYM_OUTPUT_PATH=>"/Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.app.dSYM.zip", :XCODEBUILD_ARCHIVE=>"/Users/build/Library/Developer/Xcode/Archives/2016-03-24/AssistMobile 2016-03-24 18.09.44.xcarchive", :GET_INFO_PLIST_VALUE_CUSTOM_VALUE=>nil}
[18:11:23]: Exit status of command '/Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/Pods/Fabric/upload-symbols -a bd415bb7c0471d0afe6f3e3e6e3a7e50a2638a22 -p ios /Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.app.dSYM.zip' was 7 instead of 0.
error: Invalid dSYM path (path does not end in ".dSYM"): /Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.app.dSYM.zip


+------+-------------------------------------+-------------+
|                     fastlane summary                     |
+------+-------------------------------------+-------------+
| Step | Action                              | Time (in s) |
+------+-------------------------------------+-------------+
| 1    | Verifying required fastlane version | 0           |
| 2    | default_platform                    | 0           |
| 3    | match                               | 4           |
| 4    | cocoapods                           | 16          |
| 5    | gym                                 | 94          |
| 6    | crashlytics                         | 6           |
| 7    | upload_symbols_to_crashlytics       | 0           |
+------+-------------------------------------+-------------+

[18:11:23]: fastlane finished with errors
-------------------------------------------------------------------------------------------
😨  An error occured. Please enable crash reports using `fastlane enable_crash_reporting`.
👍  This makes resolving issues much easier and helps improve fastlane.
🔒  The reports will be stored securely on getsentry.com.
🙊  More information about privacy: https://github.com/fastlane/fastlane/releases/tag/1.33.3
-------------------------------------------------------------------------------------------
/Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane_core-0.39.0/lib/fastlane_core/ui/interface.rb:120:in `crash!': [!] Exit status of command '/Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/Pods/Fabric/upload-symbols -a bd415bb7c0471d0afe6f3e3e6e3a7e50a2638a22 -p ios /Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.app.dSYM.zip' was 7 instead of 0. (FastlaneCore::Interface::FastlaneCrash)
error: Invalid dSYM path (path does not end in ".dSYM"): /Users/build/TeamCity/buildAgent/work/629cad12c28e13ae/build/AssistMobile.app.dSYM.zip

    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane_core-0.39.0/lib/fastlane_core/ui/ui.rb:14:in `method_missing'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/helper/sh_helper.rb:44:in `sh_no_action'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/helper/sh_helper.rb:9:in `sh'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/actions/upload_symbols_to_crashlytics.rb:29:in `block in run'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/actions/upload_symbols_to_crashlytics.rb:23:in `each'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/actions/upload_symbols_to_crashlytics.rb:23:in `run'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/runner.rb:143:in `block (2 levels) in execute_action'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/actions/actions_helper.rb:35:in `execute_action'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/runner.rb:129:in `block in execute_action'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/runner.rb:128:in `chdir'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/runner.rb:128:in `execute_action'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/fast_file.rb:149:in `method_missing'
    from Fastfile:104:in `block (2 levels) in parsing_binding'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/lane.rb:36:in `call'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/lane.rb:36:in `call'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/runner.rb:52:in `block in execute'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/runner.rb:46:in `chdir'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/runner.rb:46:in `execute'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/lane_manager.rb:46:in `cruise_lane'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/lib/fastlane/command_line_handler.rb:30:in `handle'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/bin/fastlane:38:in `block (2 levels) in run'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/commander-4.3.5/lib/commander/command.rb:178:in `call'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/commander-4.3.5/lib/commander/command.rb:178:in `call'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/commander-4.3.5/lib/commander/command.rb:153:in `run'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/commander-4.3.5/lib/commander/runner.rb:428:in `run_active_command'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane_core-0.39.0/lib/fastlane_core/ui/fastlane_runner.rb:23:in `run!'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/commander-4.3.5/lib/commander/delegates.rb:15:in `run!'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/bin/fastlane:156:in `run'
    from /Users/build/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/fastlane-1.68.0/bin/fastlane:162:in `<top (required)>'
    from /Users/build/.rbenv/versions/2.2.1/bin/fastlane:23:in `load'
    from /Users/build/.rbenv/versions/2.2.1/bin/fastlane:23:in `<main>'
BuildServer:629cad12c28e13ae build$ cd ..

Configuration Files

Please copy the complete content of your Fastfile and any other configuration files you use below:

Fastfile:


fastlane_version "1.66.0"

default_platform :ios

platform :ios do
  before_all do
    # ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."
  end

  desc "Installs FixCode which disables the \"Fix Issue\" button in Xcode"
  lane :xcode do
    install_xcode_plugin(
      url: "https://github.com/fastlane/FixCode/releases/download/0.2.0/FixCode.xcplugin.zip"
    )
  end

  desc "Runs all the tests"
  lane :test do
    cocoapods    
    scan
  end

  desc "Submit a new build to crashlytics"
  lane :alpha do
    match(app_identifier: "com.autologic.vinsupport.dev", type: "adhoc", readonly: true)
    cocoapods    

    gym(
      workspace: "VinSupport.xcworkspace",
      scheme: "AssistMobileDev",
      export_method: 'ad-hoc',
      silent: false,
      clean: true,
      output_directory: "build",
      output_name: "AssistMobileAlpha.ipa"   
    )

    build_number = number_of_commits
    add_git_tag(
      grouping: 'fastlane-builds',
      prefix: 'v',
      build_number: build_number
    )
    push_git_tags

    crashlytics(
        api_token: ENV["CRASHLYTICS_API_TOKEN"],
        build_secret: ENV["CRASHLYTICS_BUID_SECRET"],
        groups: "internal"
    )
    upload_symbols_to_crashlytics(dsym_path: "./build/AssistMobile.app.dSYM.zip")

#        notes: change_log,
#        notifications: notify_testers

  end

  desc "Submit a new beta build to crashlytics"
  lane :beta do
    match(app_identifier: "com.autologic.assistmobile", type: "adhoc", readonly: true)
    cocoapods    

    gym(
      workspace: "VinSupport.xcworkspace",
      scheme: "AssistMobile",
      export_method: 'ad-hoc',
      silent: false,
      clean: true,
      output_directory: "build",
      output_name: "AssistMobile.ipa"   
    )

    build_number = number_of_commits
    add_git_tag(
      grouping: 'fastlane-builds',
      prefix: 'v',
      build_number: build_number
    )
    push_git_tags

    crashlytics(
        api_token: ENV["CRASHLYTICS_API_TOKEN"],
        build_secret: ENV["CRASHLYTICS_BUID_SECRET"],
        groups: "internal"
    )
    upload_symbols_to_crashlytics(dsym_path: "./build/AssistMobile.app.dSYM.zip")

#        notes: change_log,
#        notifications: notify_testers

  end


  desc "Deploy a new version to the App Store, run only after beta lane success"
  lane :appstore do
    match(app_identifier: "com.autologic.assistmobile", type: "appstore", readonly: true)
    sigh resign(ipa: "./build/AssistMobile.ipa",
        signing_identity: "iPhone Distribution: Autologic Diagnostics Limited (6BXRV5C384)",
        provisioning_profile: "match AppStore com.autologic.assistmobile"
    )
  end

  # You can define as many lanes as you want

  after_all do |lane|
    # This block is called, only if the executed lane was successful

    # slack(
    #   message: "Successfully deployed new App Update."
    # )
  end

  error do |lane, exception|
    # slack(
    #   message: exception.message,
    #   success: false
    # )
  end
end



# More information about multiple platforms in fastlane: https://github.com/fastlane/fastlane/blob/master/docs/Platforms.md
# All available actions: https://github.com/fastlane/fastlane/blob/master/docs/Actions.md

Environment

fastlane version (fastlane -v): Do you use bundler, rbenv or rvm?

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Comments: 15 (5 by maintainers)

Most upvoted comments

Confirmed that the Fabric upload-symbols binary doesn’t accept .zip files. The workaround for right now is to send only .dSYM files. Will update this ticket when .zip files are working!

As a workaround, we are specifying the archive_path on gym and then accessing the dSYM directly from the xcarchive, like so:

    # Run gym to create the build
    gym(scheme: "MyApp", archive_path: "./gym_archive")

    # ... Upload the ipa wherever (hockeyapp, fabric, etc) ... 

    # Upload the dSYM file
    upload_symbols_to_crashlytics(dsym_path: "./gym_archive.xcarchive/dSYMs/MyApp.app.dSYM")

Be sure to add *.xcarchive to your .gitignore.

@drunknbass Thanks for following up. We are still working on this and will update on this thread 👍