fastlane: Error [IMG_BAD_COLOR_SPACE] on RGB image
New Issue Checklist
- Updated fastlane to the latest version
- I read the Contribution Guidelines
- I read docs.fastlane.tools
- I searched for existing GitHub issues
Issue Description
fastlane stops with error [IMG_BAD_COLOR_SPACE] This does not use RGB color space. even tho image uses RGB color space.
image meta info:

Complete output when running fastlane, including the stack trace and command used
...
- bundle exec fastlane qa --env=***** ±------------------------------------------------±--------±-----------------------------------+ | [32mUsed plugins[0m | ±------------------------------------------------±--------±-----------------------------------+ | Plugin | Version | Action | ±------------------------------------------------±--------±-----------------------------------+ | fastlane-plugin-cordova | 2.2.1 | cordova | | fastlane-plugin-versioning | 0.3.4 | get_version_number_from_git_branch | | | | get_version_number_from_plist | | | | get_build_number_from_plist | | | | ci_build_number | | | | increment_version_number_in_plist | | | | get_app_store_version_number | | | | get_info_plist_path | | | | increment_build_number_in_plist | | fastlane-plugin-appicon | 0.13.0 | android_appicon | | | | appicon | | fastlane-plugin-badge | 1.1.0 | add_badge | | fastlane-plugin-increment_version_code | 0.4.3 | increment_version_code | | fastlane-plugin-upgrade_super_old_xcode_project | 0.0.2 | upgrade_super_old_xcode_project | | fastlane-plugin-xml_editor | 0.2.0 | xml_editor | | | | xml_add | | | | xml_remove | | | | xml_set_attribute | ±------------------------------------------------±--------±-----------------------------------+
[11:09:19]: [32m------------------------------[0m [11:09:19]: [32m— Step: default_platform —[0m [11:09:19]: [32m------------------------------[0m [11:09:19]: [32mLoading from './fastlane/.env.'[0m [11:09:19]: [32mDriving the lane ‘ios qa’ 🚀[0m [11:09:19]: Build started by: ***** [11:09:19]: [32m------------------------------------------[0m [11:09:19]: [32m— Step: Switch to ios build_ios lane —[0m [11:09:19]: [32m------------------------------------------[0m [11:09:19]: Cruising over to lane ‘ios build_ios’ 🚖 [11:09:19]: [32m-----------------------------------[0m [11:09:19]: [32m— Step: clean_build_artifacts —[0m [11:09:19]: [32m-----------------------------------[0m [11:09:19]: [32mCleaned up build artifacts ðŸ™[0m [11:09:19]: [32m--------------------------------[0m [11:09:19]: [32m— Step: clear_derived_data —[0m [11:09:19]: [32m--------------------------------[0m [11:09:19]: Derived Data path located at: /Users//Library/Developer/Xcode/DerivedData [11:09:20]: [32mSuccessfully cleared Derived Data â™»ï¸[0m [11:09:20]: [32m----------------------------------------------------[0m [11:09:20]: [32m— Step: rm -f ./.ipa || true —[0m [11:09:20]: [32m----------------------------------------------------[0m [11:09:20]: [36m$ rm -f ./.ipa || true[0m [11:09:20]: ++++++++++++++++++++ BUILDING WITH CONFIG ++++++++++++++++++++ [11:09:20]: ***** ***** [11:09:20]: iPhone Developer [11:09:20]: ***** [11:09:20]: @.com [11:09:20]: com.. [11:09:20]: app-store [11:09:20]: appstore [11:09:20]: [11:09:20]: false [11:09:20]: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [11:09:20]: [32m------------------------------[0m [11:09:20]: [32m— Step: register_devices —[0m [11:09:20]: [32m------------------------------[0m [11:09:22]: Fetching list of currently registered devices… [11:09:22]: [32mSuccessfully registered new devices.[0m [11:09:22]: [32m--------------------------------------------------------------------[0m [11:09:22]: [32mStep: webpack -p --stage=production***** --platform=ios --cordova --root[0m [11:09:22]: [32m--------------------------------------------------------------------[0m [11:09:22]: [36m$ webpack -p --stage=production***** --platform=ios --cordova --root[0m
…
±----------------------±-----------------------------+ | [32mSummary for UpgradeSuperOldXcodeProjectAction[0m | ±----------------------±-----------------------------+ | path | platforms/ios/*****.xcodeproj | | team_id | ***** | | use_automatic_signing | false | ±----------------------±-----------------------------+
[11:14:47]: Upgrading Xcode project if necessary [11:14:47]: [31mXcode project seems to be a very old project file format[0m [11:14:47]: [33mUpgrading project to use Xcode8 signing[0m [11:14:47]: [32m--------------------------------------------------------------------[0m [11:14:47]: [32mStep: coffee res/merge-plugins.coffee platforms/ios/platform_www/cordova.js platforms/ios/platform_www/cordova_plugins.js res/cordova-ios-all.js[0m [11:14:47]: [32m--------------------------------------------------------------------[0m [11:14:47]: [36m$ coffee res/merge-plugins.coffee platforms/ios/platform_www/cordova.js platforms/ios/platform_www/cordova_plugins.js res/cordova-ios-all.js[0m [11:14:47]: [32m--------------------------------------------------------------------[0m [11:14:47]: [32mStep: cp res/cordova-ios-all.js platforms/ios/www/cordova.js[0m [11:14:47]: [32m--------------------------------------------------------------------[0m [11:14:47]: [36m$ cp res/cordova-ios-all.js platforms/ios/www/cordova.js[0m [11:14:47]: setting build number to: 13 [11:14:47]: [32m---------------------------------------------[0m [11:14:47]: [32m— Step: increment_build_number_in_plist —[0m [11:14:47]: [32m---------------------------------------------[0m [11:14:47]: [36m$ xcodebuild -showBuildSettings -scheme ***** -project platforms/ios/.xcodeproj[0m [11:14:50]: [32m-----------------------------------------------[0m [11:14:50]: [32m— Step: increment_version_number_in_plist —[0m [11:14:50]: [32m-----------------------------------------------[0m [11:14:50]: [32m-----------------------------------[0m [11:14:50]: [32m— Step: update_app_identifier —[0m [11:14:50]: [32m-----------------------------------[0m [11:14:50]: [32mUpdated /-Info.plist 💾.[0m [11:14:50]: [32m-------------------------------[0m [11:14:50]: [32m— Step: update_info_plist —[0m [11:14:50]: [32m-------------------------------[0m [11:14:50]: [32mUpdated platforms/ios/.xcodeproj/…//-Info.plist 💾.[0m [11:14:50]: [32m---------------------[0m [11:14:50]: [32m— Step: appicon —[0m [11:14:50]: [32m---------------------[0m [11:14:51]: [32mSuccessfully stored app icon at 'platforms/ios/*****/Images.xcassets/AppIcon.appiconset’[0m [11:14:51]: [32m---------------------[0m [11:14:51]: [32m— Step: produce —[0m [11:14:51]: [32m---------------------[0m
±-----------------------------------±----------------------------+ | [32mSummary for produce 2.107.0[0m | ±-----------------------------------±----------------------------+ | username | @.com | | app_identifier | com.. | | app_name | ***** ***** | | language | English | | app_version | 4.1.0 | | team_id | ***** | | skip_itc | false | | skip_devcenter | false | | enable_*****s.app_group | off | | enable_*****s.apple_pay | off | | enable_*****s.associated_domains | off | | enable_*****s.data_protection | until_first_auth | | enable_*****s.health_kit | off | | enable_*****s.home_kit | off | | enable_*****s.wireless_accessory | off | | enable_*****s.icloud | cloudkit | | enable_*****s.inter_app_*****o | off | | enable_*****s.passbook | off | | enable_*****s.push_notification | on | | enable_*****s.siri_kit | off | | enable_*****s.vpn_configuration | off | | sku | ***** | | platform | ios | ±-----------------------------------±----------------------------+
[11:14:53]: [32m[DevCenter] App ‘com..’ already exists, nothing to do on the Dev Center[0m [11:14:56]: [32mApp ‘com..’ already exists (*****), nothing to do on App Store Connect[0m [11:14:56]: [32m-----------------[0m [11:14:56]: [32m— Step: pem —[0m [11:14:56]: [32m-----------------[0m
±------------------±----------------------------+ | [32mSummary for PEM 2.107.0[0m | ±------------------±----------------------------+ | app_identifier | com.. | | save_private_key | true | | team_id | ***** | | development | false | | generate_p12 | true | | active_days_limit | 30 | | force | false | | username | @.com | | output_path | . | ±------------------±----------------------------+
[11:14:56]: Starting login with user ‘@.com’ [11:14:57]: Successfully logged in [11:14:58]: Existing push notification profile for ‘com..’ is valid for 238 more days. [11:14:58]: [32mYou already have a push certificate, which is active for more than 30 more days. No need to create a new one[0m [11:14:58]: [32mIf you still want to create a new one, use the --force option when running PEM.[0m [11:14:58]: [32m-------------------[0m [11:14:58]: [32m— Step: match —[0m [11:14:58]: [32m-------------------[0m
±----------------------±-----------------------------------------------------+ | [32mSummary for match 2.107.0[0m | ±----------------------±-----------------------------------------------------+ | username | @.com | | git_url | https://repo..com/git/.git | | app_identifier | [“com..”] | | type | appstore | | team_id | ***** | | force_for_new_devices | true | | force | true | | verbose | true | | git_branch | master | | storage_mode | git | | keychain_name | login.keychain | | readonly | false | | skip_confirmation | false | | shallow_clone | false | | clone_branch_directly | false | | skip_docs | false | | platform | ios | ±----------------------±-----------------------------------------------------+
…
±------------------±-----------------------------------------------------+ | [32mInstalled Certificate[0m | ±------------------±-----------------------------------------------------+ | User ID | ***** | | Common Name | iPhone Distribution: ***** ***** (*****) | | Organisation Unit | ***** | | Organisation | ***** ***** | | Country | US | | Start Datetime | 2018-08-23 07:22:58 UTC | | End Datetime | 2019-08-23 07:22:58 UTC | ±------------------±-----------------------------------------------------+
WARN [2018-11-02 11:15:03.07]: [33mWarning: force_for_new_devices is set but is ignored for App Store provisioning profiles.[0m
WARN [2018-11-02 11:15:03.07]: [33mYou can safely stop specifying force_for_new_devices when running Match for type ‘appstore’.[0m
[33mSuccessfully loaded Appfile at path '/private/var//workspace/_iOS_Production_Build_UC/*****/fastlane/Appfile’[0m
- [36mjson_key_file[0m: ‘[32mres/supply-*****-account.json[0m’
- [36mpackage_name[0m: ‘[32mcom.*****.client.consumer[0m’
- [36mapple_id[0m: ‘[32m*****@*****.com[0m’
- [36mteam_id[0m: ‘[32m*****[0m’
±------------------------------------±-------------------------------------------+ | [32mSummary for sigh 2.107.0[0m | ±------------------------------------±-------------------------------------------+ | app_identifier | com.. | | username | @.com | | force | true | | cert_id | ***** | | provisioning_name | match AppStore com.. | | ignore_profiles_with_different_name | true | | team_id | ***** | | platform | ios | | adhoc | false | | development | false | | skip_install | false | | skip_fetch_profiles | false | | skip_certificate_verification | false | | readonly | false | ±------------------------------------±-------------------------------------------+
…
±--------------------±-------------------------------------------------------±---------------------------------------------------------------------------------------------------------------------+ | [32mInstalled Provisioning Profile[0m | ±--------------------±-------------------------------------------------------±---------------------------------------------------------------------------------------------------------------------+ | Parameter | Environment Variable | Value | ±--------------------±-------------------------------------------------------±---------------------------------------------------------------------------------------------------------------------+ | App Identifier | | com.. | | Type | | appstore | | Platform | | ios | | Profile UUID | sigh_com.._appstore | 3133bc43-0f14-42bc-ac55-0277dd3f2605 | | Profile Name | sigh_com.._appstore_profile-name | match AppStore com.. | | Profile Path | sigh_com.._appstore_profile-path | /Users/*****/Library/Device/Provisioning Profiles/3133bc43-0f14-42bc-ac55-0277dd3f2605.provision | | Development Team ID | sigh_com.._appstore_team-id | ***** | ±--------------------±-------------------------------------------------------±---------------------------------------------------------------------------------------------------------------------+
INFO [2018-11-02 11:15:16.93]: [32m[32mAll required keys, certificates and provisioning profiles are installed 🙌[0m INFO [2018-11-02 11:15:16.93]: Setting Provisioning Profile type to ‘app-store’ INFO [2018-11-02 11:15:16.94]: [32m------------------------------------[0m INFO [2018-11-02 11:15:16.94]: [32m— Step: automatic_code_signing —[0m INFO [2018-11-02 11:15:16.94]: [32m------------------------------------[0m
±----------------------±-----------------------------+ | [32mSummary for Automatic Codesigning[0m | ±----------------------±-----------------------------+ | path | platforms/ios/*****.xcodeproj | | team_id | ***** | | use_automatic_signing | true | | code_sign_identity | iPhone Developer | ±----------------------±-----------------------------+
INFO [2018-11-02 11:15:17.04]: Updating the Automatic Codesigning flag to enabled for the given project ‘/private/var//workspace/_iOS_Production_Build_UC//platforms/ios/.xcodeproj/project.pbxproj’ WARN [2018-11-02 11:15:17.04]: [33mSet Team id to: ***** for target: [0m WARN [2018-11-02 11:15:17.04]: [33mSet Code Sign identity to: iPhone Developer for target: [0m INFO [2018-11-02 11:15:17.12]: [32mSuccessfully updated project settings to use Code Sign Style = 'Automatic’[0m INFO [2018-11-02 11:15:17.12]: [32mModified Targets:[0m INFO [2018-11-02 11:15:17.12]: [32m * [0m INFO [2018-11-02 11:15:17.13]: [32m-----------------[0m INFO [2018-11-02 11:15:17.13]: [32m— Step: gym —[0m INFO [2018-11-02 11:15:17.13]: [32m-----------------[0m DEBUG [2018-11-02 11:15:17.15]: Merging provisioning profile mappings DEBUG [2018-11-02 11:15:17.15]: ------------------------------------- DEBUG [2018-11-02 11:15:17.15]: Primary provisioning profile mapping: DEBUG [2018-11-02 11:15:17.15]: {} DEBUG [2018-11-02 11:15:17.15]: Secondary provisioning profile mapping: DEBUG [2018-11-02 11:15:17.15]: {:"com.."=>"match AppStore com.."} DEBUG [2018-11-02 11:15:17.15]: Resulting in the following mapping: DEBUG [2018-11-02 11:15:17.15]: {:"com.."=>"match AppStore com.."} INFO [2018-11-02 11:15:17.16]: [36m$ xcodebuild -showBuildSettings -workspace platforms/ios/.xcworkspace -scheme [0m DEBUG [2018-11-02 11:15:20.16]: Parsing project file '/private/var//workspace/_iOS_Production_Build_UC//platforms/ios/.xcodeproj’ to find selected provisioning profiles DEBUG [2018-11-02 11:15:20.16]: Finding provision profiles for ‘Release’ DEBUG [2018-11-02 11:15:20.26]: Merging provisioning profile mappings DEBUG [2018-11-02 11:15:20.26]: ------------------------------------- DEBUG [2018-11-02 11:15:20.26]: Primary provisioning profile mapping: DEBUG [2018-11-02 11:15:20.26]: {:"com.."=>"match AppStore com.."} DEBUG [2018-11-02 11:15:20.26]: Secondary provisioning profile mapping: DEBUG [2018-11-02 11:15:20.26]: {} DEBUG [2018-11-02 11:15:20.26]: Resulting in the following mapping: DEBUG [2018-11-02 11:15:20.26]: {:"com.."=>"match AppStore com.."} INFO [2018-11-02 11:15:20.26]: Detected provisioning profile mapping: {:"com.."=>"match AppStore com..*****"}
±----------------------------------------------------------------±-------------------------------------------+ | [32mSummary for gym 2.107.0[0m | ±----------------------------------------------------------------±-------------------------------------------+ | export_team_id | ***** | | include_bitcode | false | | workspace | platforms/ios/.xcworkspace | | scheme | ***** | | export_method | app-store | | export_xcargs | -allowProvisioningUpdates | | output_name | ***** | | output_directory | platforms/ios/build/ | | build_path | platforms/ios/build/ | | xcargs | -allowProvisioningUpdates | | clean | true | | export_options.provisioningProfiles.com..***** | match AppStore com.. | | destination | generic/platform=iOS | | silent | false | | skip_package_ipa | false | | result_bundle | false | | buildlog_path | ~/Library/Logs/gym | | skip_profile_detection | false | | xcode_path | /Applications/Xcode.app | ±----------------------------------------------------------------±-------------------------------------------+
±------------------------------------------------------------------------------------±---------------------+ | [32mGenerated Build Command[0m | ±------------------------------------------------------------------------------------±---------------------+ | Option | Value | ±------------------------------------------------------------------------------------±---------------------+ | set -o pipefail && | | | xcodebuild | | | -workspace platforms/ios/.xcworkspace | | | -scheme ***** | | | -destination | generic/platform=iOS | | -archivePath platforms/ios/build/\ 2018-11-02\ 11.15.20.xcarchive | | | -allowProvisioningUpdates | | | clean | | | archive | | | | tee /Users//Library/Logs/gym/-*****.log | | | | xcpretty | | ±------------------------------------------------------------------------------------±---------------------+
…
INFO [2018-11-02 11:16:46.12]: â–¸ [35m-----------------------------------------[0m ±---------------------------------------------------------------------------------------------------------------------------------------------±----------------------------------------------------------------------------------------+ | [32mGenerated Package Command[0m | ±---------------------------------------------------------------------------------------------------------------------------------------------±----------------------------------------------------------------------------------------+ | Option | Value | ±---------------------------------------------------------------------------------------------------------------------------------------------±----------------------------------------------------------------------------------------+ | /usr/bin/xcrun /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh -exportArchive | | | -exportOptionsPlist | /var/folders/7q//T/gym_config20181102--122nxdn.plist | | -archivePath platforms/ios/build/\ 2018-11-02\ 11.15.20.xcarchive | | | -exportPath | /var/folders/7q//T/gym_output20181102--15sd5w0 | | -allowProvisioningUpdates | | | -allowProvisioningUpdates | | ±---------------------------------------------------------------------------------------------------------------------------------------------±----------------------------------------------------------------------------------------+ INFO [2018-11-02 11:16:46.13]: [36m$ /usr/bin/xcrun /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh -exportArchive -exportOptionsPlist '/var/folders/7q//T/gym_config20181102--122nxdn.plist’ -archivePath platforms/ios/build/\ 2018-11-02\ 11.15.20.xcarchive -exportPath ‘/var/folders/7q//T/gym_output20181102--15sd5w0’ -allowProvisioningUpdates -allowProvisioningUpdates [0m INFO [2018-11-02 11:16:46.15]: â–¸ [35mRVM detected, forcing to use system ruby[0m INFO [2018-11-02 11:16:46.73]: â–¸ [35mNow using system ruby.[0m INFO [2018-11-02 11:16:46.78]: â–¸ [35m+ xcodebuild -exportArchive -exportOptionsPlist /var/folders/7q//T/gym_config20181102--122nxdn.plist -archivePath ‘platforms/ios/build/***** 2018-11-02 11.15.20.xcarchive’ -exportPath /var/folders/7q//T/gym_output20181102--15sd5w0 -allowProvisioningUpdates -allowProvisioningUpdates[0m INFO [2018-11-02 11:16:47.53]: â–¸ [35m2018-11-02 11:16:47.537 xcodebuild[37052:8404495] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path ‘/var/folders/7q//T/_2018-11-02_11-16-47.536.xcdistributionlogs’.[0m INFO [2018-11-02 11:16:54.64]: â–¸ [35mExported ***** to: /var/folders/7q//T/gym_output20181102--15sd5w0[0m INFO [2018-11-02 11:16:54.64]: â–¸ [35m** EXPORT SUCCEEDED [0m INFO [2018-11-02 11:16:54.69]: Compressing 1 dSYM(s) INFO [2018-11-02 11:16:54.69]: [36m$ cd '/private/var//workspace/_iOS_Production_Build_UC//platforms/ios/build/** 2018-11-02 11.15.20.xcarchive/dSYMs’ && zip -r ‘/private/var//workspace/_iOS_Production_Build_UC//platforms/ios/build/.app.dSYM.zip’ *.dSYM[0m INFO [2018-11-02 11:16:55.40]: â–¸ [35m adding: *****.app.dSYM/ (stored 0%)[0m INFO [2018-11-02 11:16:55.40]: â–¸ [35m adding: *****.app.dSYM/Contents/ (stored 0%)[0m INFO [2018-11-02 11:16:55.40]: â–¸ [35m adding: *****.app.dSYM/Contents/Resources/ (stored 0%)[0m INFO [2018-11-02 11:16:55.40]: â–¸ [35m adding: *****.app.dSYM/Contents/Resources/DWARF/ (stored 0%)[0m INFO [2018-11-02 11:16:55.40]: â–¸ [35m adding: .app.dSYM/Contents/Resources/DWARF/ (deflated 67%)[0m INFO [2018-11-02 11:16:55.40]: â–¸ [35m adding: *****.app.dSYM/Contents/Info.plist (deflated 52%)[0m
INFO [2018-11-02 11:16:55.40]: [32mSuccessfully exported and compressed dSYM file[0m INFO [2018-11-02 11:16:55.40]: [32mSuccessfully exported and signed the ipa file:[0m INFO [2018-11-02 11:16:55.40]: /private/var//workspace/iOS_Production_Build_UC//platforms/ios/build/.ipa INFO [2018-11-02 11:16:55.40]: Cruising back to lane ‘ios qa’ 🚘 INFO [2018-11-02 11:16:55.40]: ,-~~-._. / | ’ Dearest Crashlytics! I’m done building… ( ) 0 /-, ,----’ ==== // / -'~; /~~~(O) / /~| / | =( | (| W<
INFO [2018-11-02 11:16:55.41]: [32m----------------------------------[0m INFO [2018-11-02 11:16:55.41]: [32m— Step: upload_to_test***** —[0m INFO [2018-11-02 11:16:55.41]: [32m----------------------------------[0m INFO [2018-11-02 11:16:55.44]: Login to App Store Connect (@.com)
…
±-----------------------------------------±—+ | Detected Values from ‘./fastlane/Deliverfile’ | ±-----------------------------------------±—+ | app_review_information | | | trade_representative_contact_information | | ±-----------------------------------------±—+
INFO [2018-11-02 11:19:35.02]: Login to App Store Connect (@.com) Loading session from ‘/Users//.fastlane/spaceship/@*****.com/cookie’ Looking for App Store Connect Team with ID ***** INFO [2018-11-02 11:19:36.65]: Login successful
±-------------------------------------------------------±------------------------------------------------------------------------------------------------------------------------------------------+ | [32mdeliver 2.107.0 Summary[0m | ±-------------------------------------------------------±------------------------------------------------------------------------------------------------------------------------------------------+ | force | true | | metadata_path | targets//metadata | | app_rating_config_path | targets//metadata/rating_config.json | | submit_for_review | false | | skip_screenshots | false | | skip_binary_upload | true | | ipa | /private/var//workspace/_iOS_Production_Build_UC//platforms/ios/build/.ipa | | app_identifier | com.. | | screenshots_path | ./fastlane/screenshots | | app_version | 4.1.0 | | username | @.com | | platform | ios | | edit_live | false | | use_live_version | false | | skip_metadata | false | | skip_app_version_update | false | | overwrite_screenshots | false | | reject_if_possible | false | | automatic_release | false | | phased_release | false | | dev_portal_team_id | ***** | | run_precheck_before_submit | true | | precheck_default_rule_level | warn | | trade_representative_contact_information.first_name | ***** | | trade_representative_contact_information.last_name | ***** | | trade_representative_contact_information.address_line1 | ***** | | trade_representative_contact_information.city_name | ***** | | trade_representative_contact_information.state | ***** | | trade_representative_contact_information.country | ***** | | trade_representative_contact_information.postal_code | ***** | | trade_representative_contact_information.phone_number | ***** | | trade_representative_contact_information.email_address | @.com | | app_review_information.first_name | ***** | | app_review_information.last_name | ***** | | app_review_information.phone_number | ***** | | app_review_information.email_address | developer@.at | | app_review_information._user | @.com | | app_review_information.*****_password | ******** | | ignore_language_directory_validation | false | | precheck_include_in_app_purchases | true | ±-------------------------------------------------------±------------------------------------------------------------------------------------------------------------------------------------------+
INFO [2018-11-02 11:19:37.48]: Making sure the latest version on App Store Connect matches ‘4.1.0’ from the ipa file… INFO [2018-11-02 11:19:39.44]: [32m’4.1.0’ is the latest version on App Store Connect[0m
…
WARN [2018-11-02 11:19:58.64]: [33m[33mLane Context:[0m INFO [2018-11-02 11:19:58.64]: {:DEFAULT_PLATFORM=>:ios, :ENVIRONMENT=>“”, :PLATFORM_NAME=>:ios, :LANE_NAME=>“ios qa”, :BUILD_NUMBER=>“13”, :VERSION_NUMBER=>“4.1.0”, :PRODUCE_APPLE_ID=>“”, :SIGH_PROFILE_TYPE=>“app-store”, :MATCH_PROVISIONING_PROFILE_MAPPING=>{“com..”=>“match AppStore com..”}, :IPA_OUTPUT_PATH=>“/private/var//workspace/_iOS_Production_Build_UC//platforms/ios/build/.ipa”, :DSYM_OUTPUT_PATH=>“/private/var//workspace/_iOS_Production_Build_UC//platforms/ios/build/.app.dSYM.zip”, :XCODEBUILD_ARCHIVE=>“platforms/ios/build/***** 2018-11-02 11.15.20.xcarchive”} ERROR [2018-11-02 11:19:58.64]: [31m[IMG_BAD_COLOR_SPACE] This does not use RGB color space. Please edit the image to use the RGB color space and re-save it.[0m INFO [2018-11-02 11:19:58.64]: [32mSuccessfully generated documentation at path '/private/var//workspace/_iOS_Production_Build_UC/*****/fastlane/README.md’[0m
±-----±--------------------------------------------------------------±------------+ | [32mfastlane summary[0m | ±-----±--------------------------------------------------------------±------------+ | Step | Action | Time (in s) | ±-----±--------------------------------------------------------------±------------+ | 1 | default_platform | 0 | | 2 | Switch to ios build_ios lane | 0 | | 3 | clean_build_artifacts | 0 | | 4 | clear_derived_data | 0 | | 5 | rm -f ./.ipa || true | 0 | | 6 | register_devices | 2 | | 7 | webpack -p --stage=production --platform=ios --cordova – | 63 | | 8 | find . ! -name '’ -type d -exec rm -rf {} + || true | 0 | | 9 | rm -rf www || true | 0 | | 10 | ln -s …//www www | 0 | | 11 | cp targets//config.xml ./ | 0 | | 12 | cordova plugin rm at--airwatch-plugin | 0 | | 13 | cordova platform remove ios | 1 | | 14 | cordova platform remove android | 1 | | 15 | cordova platform add ios --debug | 248 | | 16 | cordova prepare ios | 2 | | 17 | cocoapods | 5 | | 18 | rm -f platforms/ios//Resources/certificate.pem || true | 0 | | 19 | cp targets//certificate.pem platforms/ios/U | 0 | | 20 | upgrade_super_old_xcode_project | 0 | | 21 | coffee res/merge-plugins.coffee platforms/ios/platform_www/co | 0 | | 22 | cp res/cordova-ios-all.js platforms/ios/www/cordova.js | 0 | | 23 | increment_build_number_in_plist | 2 | | 24 | increment_version_number_in_plist | 0 | | 25 | update_app_identifier | 0 | | 26 | update_info_plist | 0 | | 27 | appicon | 0 | | 28 | produce | 4 | | 29 | pem | 1 | | 30 | match | 18 | | 31 | automatic_code_signing | 0 | | 32 | gym | 98 | | 33 | upload_to_test***** | 159 | | 💥 | [31mdeliver[0m | 23 | | 35 | slack | 0 | ±-----±--------------------------------------------------------------±------------+
DEBUG [2018-11-02 11:19:58.66]: All plugins are up to date ERROR [2018-11-02 11:19:58.67]: [31mfastlane finished with errors[0m
Looking for related GitHub issues on fastlane/fastlane… Search query: [IMG_BAD_COLOR_SPACE] This does not use RGB color space. Please edit the image to use the RGB color space and re-save it.
URL: https://*****.github.com/search/issues?q=%5BIMG_BAD_COLOR_SPACE%5D%20This%20does%20not%20use%20RGB%20color%20space.%20Please%20edit%20the%20image%20to%20use%20the%20RGB%20color%20space%20and%20re-save%20it.+repo:fastlane/fastlane âž¡ï¸ [33mdeliver exports screenshots from iTC as JPEG, saves them as PNG[0m https://github.com/fastlane/fastlane/issues/11721 [[32mclosed[0m] 9 💬 30 Jun 2018
âž¡ï¸ [33mdeliver downloads app_icon from iTC as a JPEG, uploads as JPEG causing iTC error[0m
https://github.com/fastlane/fastlane/issues/11768 [[32mclosed[0m] 3 💬
27 May 2018
âž¡ï¸ [33mdeliver does not skip screenshot uploads when skip_screenshots is true[0m
https://github.com/fastlane/fastlane/issues/11724 [[32mclosed[0m] 8 💬
03 Apr 2018
🔗 You can ⌘ + double-click on links to open them directly in your browser.
DEBUG [2018-11-02 11:19:59.26]: All plugins are up to date
/Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/spaceship/lib/spaceship/du/du_client.rb:166:in parse_upload_response': [31m[!] [IMG_BAD_COLOR_SPACE] This does not use RGB color space. Please edit the image to use the RGB color space and re-save it.[0m (Spaceship::UnexpectedResponse) from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/spaceship/lib/spaceship/du/du_client.rb:96:in upload_file’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/spaceship/lib/spaceship/du/du_client.rb:29:in upload_large_icon' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/spaceship/lib/spaceship/tunes/tunes_client.rb:771:in upload_large_icon’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/spaceship/lib/spaceship/tunes/app_version.rb:446:in upload_large_icon!' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/deliver/lib/deliver/upload_assets.rb:16:in upload’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/deliver/lib/deliver/runner.rb:123:in upload_metadata' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/deliver/lib/deliver/runner.rb:38:in run’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/actions/upload_to_app_store.rb:16:in run' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/runner.rb:253:in block (2 levels) in execute_action’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:in execute_action' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/runner.rb:232:in block in execute_action’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/runner.rb:227:in chdir' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/runner.rb:227:in execute_action’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/runner.rb:157:in trigger_action_by_name' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/fast_file.rb:149:in method_missing’
from Fastfile:460:in block (2 levels) in parsing_binding' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/lane.rb:33:in call’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/runner.rb:49:in block in execute' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/runner.rb:45:in chdir’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/runner.rb:45:in execute' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/lane_manager.rb:56:in cruise_lane’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/command_line_handler.rb:36:in handle' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/commands_generator.rb:108:in block (2 levels) in run’
from /Users//.rvm/gems/ruby-2.5.1/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in call' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in run’
from /Users//.rvm/gems/ruby-2.5.1/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in run_active_command' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in run!’
from /Users//.rvm/gems/ruby-2.5.1/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in run!' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/commands_generator.rb:333:in run’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/commands_generator.rb:41:in start' from /Users/*****/.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/fastlane/lib/fastlane/cli_tools_distributor.rb:108:in take_off’
from /Users//.rvm/gems/ruby-2.5.1/gems/fastlane-2.107.0/bin/fastlane:23:in <top (required)>' from /Users/*****/.rvm/gems/ruby-2.5.1/bin/fastlane:23:in load’
from /Users//.rvm/gems/ruby-2.5.1/bin/fastlane:23:in <main>' from /Users/*****/.rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:24:in eval’
from /Users//.rvm/gems/ruby-2.5.1/bin/ruby_executable_hooks:24:in `<main>’
Build step ‘Execute shell’ marked build as failure
Finished: FAILURE
Environment
✅ fastlane environment ✅
Stack
| Key | Value |
|---|---|
| OS | 10.13.6 |
| Ruby | 2.5.1 |
| Bundler? | true |
| Git | git version 2.17.1 (Apple Git-112) |
| Installation Source | ~/.rvm/gems/ruby-2.5.1/bin/fastlane |
| Host | Mac OS X 10.13.6 (17G65) |
| Ruby Lib Dir | ~/.rvm/rubies/ruby-2.5.1/lib |
| OpenSSL Version | OpenSSL 1.1.0i 14 Aug 2018 |
| Is contained | false |
| Is homebrew | false |
| Is installed via Fabric.app | false |
| Xcode Path | /Applications/Xcode.app/Contents/Developer/ |
| Xcode Version | 10.0 |
System Locale
| Variable | Value | |
|---|---|---|
| LANG | de_AT.UTF-8 | ✅ |
| LC_ALL | ||
| LANGUAGE |
fastlane files:
`./fastlane/Fastfile`
# Customise this file, documentation can be found here:
# https://docs.fastlane.tools/actions/
# All available actions: https://docs.fastlane.tools/actions
# can also be listed using the `fastlane actions` command
# Change the syntax highlighting to Ruby
# All lines starting with a # are ignored when running `fastlane`
# If you want to automatically update fastlane if a new version is available:
# update_fastlane
ENV["LC_ALL"]="en_US.UTF-8"
ENV["LANG"]="en_US.UTF-8"
ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "180"
ENV["FASTLANE_XCODE_LIST_TIMEOUT"] = "180"
if ENV["SLACK_NOTIFICATIONS"].nil?
ENV["SLACK_NOTIFICATIONS"] = "yes"
end
if ENV['BUILD_USER'].nil?
ENV["BUILD_USER"] = "Not Username set"
end
if ENV["SIGN_AUTOMATICALLY"].nil?
ENV["SIGN_AUTOMATICALLY"] = "yes"
end
if ENV["SHOULD_UPLOAD"].nil?
ENV["SHOULD_UPLOAD"] = "yes"
end
if ENV["NOTIFY_TESTERS"].nil?
ENV["NOTIFY_TESTERS"] = "no"
end
notify_testers = ENV["NOTIFY_TESTERS"] == "yes"
if ENV["RECREATE_PLATFORMS"].nil?
ENV["RECREATE_PLATFORMS"] = "no"
end
if ENV["FORCE_RECREATE"].nil?
ENV["FORCE_RECREATE"] = "no"
end
if ENV["SKIP_WEBPACK"].nil?
ENV["SKIP_WEBPACK"] = "no"
end
####
#
# bundle exec fastlane fastlane-credentials add --username service@tourist-mobile.com
#
# bundle exec fastlane ios dev --env=travelmobile
#
###
# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_require 'spaceship'
Spaceship::Portal::AppService.class_eval do
def self.icloud
Spaceship::Portal::AppService.cloud
end
def self.i_cloud
Spaceship::Portal::AppService.cloud
end
end
#######################################################
#
# variables / Do not change
#
#######################################################
default_platform :ios
version_code = '0'
#######################################################
#
# general settings
#
#######################################################
def tourist_mobile_team_id
"7LWFKRB39E"
end
def engine_name
"UTER"
end
def ui_path
"../MTCFrontend"
end
def brand
# match PWD is repo PWD
ENV['BRAND'].downcase
end
def project_name_sanitized
ENV['PROJECT_NAME'].gsub(/[^0-9A-Za-z.\-]/, '_')
end
def project_name_lowercase
"#{project_name_sanitized}".downcase
end
def target_resource_path
"targets/#{project_name_lowercase}"
end
def resource_path
"res"
end
def metadata_path
"#{target_resource_path}/metadata"
end
def rating_config_path
"#{metadata_path}/rating_config.json"
end
def merge_plugins
"#{resource_path}/merge-plugins.coffee"
end
#######################################################
#
# slack specific settings
#
#######################################################
#https://docs.fastlane.tools/actions/slack/
def slack_url
"https://hooks.slack.com/services/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"
end
def slack_channel
'#qa'
end
crashlytics_demo_group = ENV['CRASHLYTICS_DEMO_GROUP']
if crashlytics_demo_group.nil?
crashlytics_demo_group = 'tm_uter_beta'
end
crashlytics_preview_group = ENV['CRASHLYTICS_PREVIEW_GROUP']
if crashlytics_preview_group.nil?
crashlytics_preview_group = 'tm_uter_beta'
end
#######################################################
#
# crashlytics specific settings
#
#######################################################
## cordova plugin add cordova-fabric-plugin --variable FABRIC_API_KEY=759ed8bd788e8634e69aec07c80853842c268358 --variable FABRIC_API_SECRET=782588aded329bb3b8e344ff531df2203081b97d37745961d6c23016e5dcd0fe
def crashlytics_api_token
"759ed8bd788e8634e69aec07c80853842c268358"
end
def crashlytics_build_secret
"782588aded329bb3b8e344ff531df2203081b97d37745961d6c23016e5dcd0fe"
end
#######################################################
#
# iOS specific settings
#
#######################################################
def cordova_ios_project_path
"platforms/ios/#{engine_name}.xcodeproj"
end
def cordova_ios_workspace_path
"platforms/ios/#{engine_name}.xcworkspace"
end
def app_version_ios
ENV['APP_VERSION_IOS']
end
def app_id_ios
ENV['APP_ID_IOS']
end
def cordova_plist_path
"#{engine_name}/#{engine_name}-Info.plist"
end
def ios_appicon_resource_path
"#{target_resource_path}/ios/appicon/1024.png"
end
def cordova_xcassets_path
"platforms/ios/#{engine_name}/Images.xcassets"
end
def match_git_url
# match PWD is repo PWD
"https://repo.tourist-mobile.com/git/FastlaneCert.git"
end
#######################################################
#
# android specific settings
#
#######################################################
if ENV["ANDROID_HOME"].nil?
ENV["ANDROID_HOME"] = "/Users/budelius/android-sdk-macosx"
end
def android_project_dir
"platforms/android/"
end
def android_apk_path
"#{android_project_dir}app/build/outputs/apk"
end
def signing_store_file
"res/android.keystore"
end
def signing_store_password
"limmit0512"
end
def signing_key_alias
"android1"
end
def signing_key_password
"limmit0512"
end
def google_sender_id
# "1:849272607763:android:9a739732584bdf6a"
"849272607763"
end
# "release": {
# "storeFile": "tm_release.keystore",
# "storePassword": "EQv5sFW3zmZkKZM80o8F",
# "keyAlias": "tm_release",
# "keyPassword": "EQv5sFW3zmZkKZM80o8F"
# },
# "android_debug": {
# "storeFile": "debug.keystore",
# "storePassword": "android",
# "keyAlias": "AndroidDebugKey",
# "keyPassword": "android"
# },
# "release2": {
# "storeFile": "android.keystore",
# "storePassword": "limmit0512",
# "keyAlias": "android1",
# "keyPassword": "limmit0512"
# },
# "release3": {
# "storeFile": "dermobile.jks",
# "storePassword": "limmit0512",
# "keyAlias": "mobile",
# "keyPassword": "limmit0512"
# }
# preview bundle id -> TEAM_ID
# Release Sign
# production config
# on device
platform :ios do |options|
desc "create a dev build for ios"
lane :dev do |options|
# if our team id is used we deploy to app store otherwise
export_type = "development"
type= "development"
user_name = ENV['USER_NAME']
app_id = ENV['APP_ID_IOS_BETA']
build_ios(
team_id: ENV['TEAM_ID'],
code_sign_identity: 'iPhone Developer',
app_id: app_id,
export_method: export_type,
type: type,
app_name: ENV['APP_NAME'],
app_language: ENV['APP_LANGUGAE'],
production: false,
internal: false,
user_name: user_name)
ship_it
install_on_ios_device(options[:device])
end
# preview bundle id -> TEAM_ID
# Debug Sign
# demo config
# crashlytics -> ad-hoc
lane :demo do |options|
build_ios(
team_id: ENV['TEAM_ID'],
app_id: ENV['APP_ID_IOS_BETA'],
code_sign_identity: 'iPhone Developer',
export_method: "ad-hoc",
type: "adhoc",
app_name: ENV['APP_NAME'],
app_language: ENV['APP_LANGUGAE'],
production: false,
user_name: ENV['USER_NAME']
)
changelog = File.read("../#{target_resource_path}/Changelog.txt")
ship_it
crashlytics(
api_token: crashlytics_api_token,
build_secret: crashlytics_build_secret,
notes: changelog,
notifications: false,
groups: crashlytics_demo_group
)
end
# preview bundle id -> TEAM_ID
# Release Sign
# production config
# crashlytics -> ad-hoc
lane :preview do |options|
build_ios(
team_id: ENV['TEAM_ID'],
app_id: ENV['APP_ID_IOS_BETA'],
code_sign_identity: 'iPhone Developer',
export_method: "ad-hoc",
type: "adhoc",
app_name: ENV['APP_NAME'],
app_language: ENV['APP_LANGUGAE'],
production: true,
user_name: ENV['USER_NAME']
)
changelog = File.read("../#{target_resource_path}/Changelog.txt")
ship_it
crashlytics(
api_token: crashlytics_api_token,
build_secret: crashlytics_build_secret,
notes: changelog,
notifications: notify_testers,
groups: crashlytics_preview_group
)
end
# different branches -> don't concern fastlane
# preview bundle id -> TEAM_ID
# Release Sign
# production config
# crashlytics -> ad-hoc
lane :internal do |options|
build_ios(
team_id: ENV['TEAM_ID'],
app_id: ENV['APP_ID_IOS_BETA'],
code_sign_identity: 'iPhone Developer',
export_method: "ad-hoc",
type: "adhoc",
app_name: ENV['APP_NAME'],
app_language: ENV['APP_LANGUGAE'],
production: false,
internal: true,
user_name: ENV['USER_NAME']
)
changelog = File.read("../#{target_resource_path}/Changelog.txt")
notify_testers = true
ship_it
crashlytics(
api_token: crashlytics_api_token,
build_secret: crashlytics_build_secret,
notes: changelog,
notifications: notify_testers,
groups: crashlytics_preview_group
)
end
# preview bundle id -> TEAM_ID_LIVE
# Release Sign
# production config
# testflight/store -> app-store
lane :qa do |options|
# if our team id is used we deploy to app store otherwise
export_type = tourist_mobile_team_id == ENV['TEAM_ID_LIVE'] ? "app-store" : "ad-hoc"
type = export_type == "app-store" ? "appstore" : "adhoc"
user_name= ENV['USER_NAME']
app_id= ENV['APP_ID_IOS']
# ...
if app_id == "com.bayer.bbs.mytrip"
export_type = "development"
type = "adhoc"
end
build_ios(
team_id: ENV['TEAM_ID_LIVE'],
app_id: app_id,
code_sign_identity: 'iPhone Developer',
export_method: export_type,
type: type,
app_name: ENV['APP_NAME'],
app_language: ENV['APP_LANGUGAE'],
production: true,
internal: true,
user_name: user_name
)
if export_type == "app-store"
changelog = File.read("../#{target_resource_path}/Changelog.txt")
ship_it
upload_to_testflight(
username: user_name,
app_identifier: app_id,
skip_waiting_for_build_processing: true,
changelog: changelog)
deliver(
force: true,
metadata_path: metadata_path,
app_rating_config_path: rating_config_path,
submit_for_review: false,
skip_screenshots: false,
skip_binary_upload: true)
else
ship_it
end
end
# preview bundle id -> TEAM_ID_LIVE
# Release Sign
# production config
# testflight/store -> app-store
lane :production do |options|
team_id = ENV['TEAM_ID_LIVE']
# if our team id is used we deploy to app store otherwise
export_type = tourist_mobile_team_id == team_id ? "app-store" : "ad-hoc"
type = export_type == "app-store" ? "appstore" : "adhoc"
user_name= ENV['USER_NAME']
app_id= ENV['APP_ID_IOS']
sync_code_signing(
type: type,
git_url: match_git_url,
app_identifier: app_id
)
build_ios(
team_id: team_id,
app_id: app_id,
code_sign_identity: 'iPhone Developer',
export_method: export_type,
type: type,
app_name: ENV['APP_NAME'],
app_language: ENV['APP_LANGUGAE'],
production: true,
internal: true,
user_name: user_name
)
deliver(
force: true,
metadata_path: metadata_path,
app_rating_config_path: rating_config_path,
submit_for_review: false,
price_tier: 0,
skip_screenshots: false,
skip_binary_upload: true)
ship_it
end
lane :build_ios do |options|
# clean up everything
clean_build_artifacts
clear_derived_data
#we need to make sure that there is no whitespace in the ipa name
Dir.chdir("..") do
sh 'rm -f ./' + project_name_sanitized + '.ipa || true'
end
app_name = options[:app_name]
team_id = options[:team_id]
username = options[:user_name]
app_id_ios = options[:app_id]
internal_build = options[:internal]
app_language = options[:app_language]
is_production = options[:production]
code_sign_identity = options[:code_sign_identity]
export_method = options[:export_method]
type = options[:type]
# Skip the creation of the app on App Store Connect (PRODUCE_SKIP_ITC)
# skip_itc && skip_devcenter -> true when
# third party app store && crashlytics &&
# we are allowed to -> teamid == tm team id
# => e.g. team_id == bayer => !(xxx && false) -> true and devcenter will be skipped
# or team_id= tm team id && export_method == app-store
# !(true && true) -> !true-> false - > dev center won't be skipped
skip_itc = !(export_method == "app-store" && team_id == tourist_mobile_team_id)
puts "++++++++++++++++++++ BUILDING WITH CONFIG ++++++++++++++++++++"
puts app_name
puts code_sign_identity
puts team_id
puts username
puts app_id_ios
puts export_method
puts type
puts app_language
puts skip_itc
puts "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
# Ony register for our TEAM -> since we have rw-access on playstore
if team_id == tourist_mobile_team_id
register_devices(
devices_file: "#{resource_path}/devices.txt",
team_id: team_id,
username: username)
end
copy_frontend(is_production, 'ios', internal_build)
Dir.chdir("..") do
sh "cp #{target_resource_path}/config.xml ./"
end
puts "Starting recreate_ios_platform..."
recreate_ios_platform
puts "recreate_ios_platform Done!"
Dir.chdir("..") do
sh 'rm -f platforms/ios/UTER/Resources/certificate.pem || true'
if is_production || internal_build
puts "Using Production Public Key"
sh "cp #{target_resource_path}/certificate.pem platforms/ios/UTER/Resources/certificate.pem"
else
puts "Using Demo Public Key"
sh "cp #{target_resource_path}/ios/beta/certificate.pem platforms/ios/UTER/Resources/certificate.pem"
end
end
upgrade_super_old_xcode_project(
path: cordova_ios_project_path,
team_id: team_id
)
merge_cordova_ios
build_number = get_ios_build_number
increment_build_number_in_plist(
xcodeproj: cordova_ios_project_path,
build_number: "#{build_number}")
increment_version_number_in_plist(
version_number: app_version_ios,
xcodeproj: cordova_ios_project_path,
target: engine_name)
update_app_identifier(
xcodeproj: cordova_ios_project_path,
plist_path: cordova_plist_path,
app_identifier: app_id_ios)
update_info_plist(
plist_path: cordova_plist_path,
xcodeproj: cordova_ios_project_path,
display_name: app_name,
app_identifier: app_id_ios)
appicon(
appicon_image_file: ios_appicon_resource_path,
appicon_devices: [:ipad, :iphone, :ios_marketing],
appicon_path: cordova_xcassets_path)
produce(
username: username,
app_identifier: app_id_ios,
app_name: app_name,
language: app_language,
app_version: app_version_ios,
team_id: team_id, # only necessary when in multiple teams
skip_itc: skip_itc,
skip_devcenter: skip_itc,
# Optional
# App services can be enabled during app creation
enable_services: {
app_group: "off",
apple_pay: "off",
associated_domains: "off",
data_protection: "until_first_auth",
health_kit: "off",
home_kit: "off",
wireless_accessory: "off",
icloud: "cloudkit",
inter_app_audio: "off",
passbook: "off",
push_notification: "on",
siri_kit: "off",
vpn_configuration: "off"}
)
if team_id == tourist_mobile_team_id
pem(
#force: true, # create a new profile, even if the old one is still valid
app_identifier: app_id_ios, # optional app identifier,
save_private_key: true,
team_id: team_id,
p12_password: ENV['P12_PWD'],
new_profile: proc do |profile_path| # this block gets called when a new profile was generated
puts target_resource_path # the absolute path to the new PEM file
# insert the code to upload the PEM file to the server
end
)
match(
username: username,
git_url: match_git_url,
app_identifier: app_id_ios,
type: type,
team_id: team_id,
force_for_new_devices: true,
force: true,
verbose: true)
end
unless is_production
add_badge(
dark: true,
glob: "/#{cordova_xcassets_path}/*.appiconset/*.{png,PNG}",
shield: "#{app_version_ios}-#{build_number}-blue",
shield_scale: "0.75")
end
automatic_code_signing(
path: cordova_ios_project_path,
team_id: team_id,
use_automatic_signing: true,
code_sign_identity: code_sign_identity)
gym(
verbose: false,
export_team_id: team_id,
include_bitcode: false,
workspace: cordova_ios_workspace_path,
scheme: engine_name,
export_method: export_method,
export_xcargs: "-allowProvisioningUpdates",
output_name: project_name_sanitized + ".ipa",
output_directory: "platforms/ios/build/",
build_path: "platforms/ios/build/",
xcargs: "-allowProvisioningUpdates",
clean: true
)
end
before_all do |lane|
puts "Build started by: "+ ENV['BUILD_USER']
end
after_all do |lane|
build_number = lane_context[SharedValues::BUILD_NUMBER]
if (ENV["SLACK_NOTIFICATIONS"])
slack(
message: "Successfully created new dev build of " + ENV['APP_NAME'] + ' ' + ENV['APP_VERSION_IOS'] + " build: #{build_number}",
channel: slack_channel,
slack_url: slack_url,
payload: {
"Build Date" => Time.new.to_s,
"Built by" => ENV['BUILD_USER'],
},
)
else
if (ENV["SLACK_NOTIFICATIONS"])
slack(
message: "Successfully uploaded new build of " + ENV['APP_NAME'] + ' ' + ENV['APP_VERSION_IOS'] + " build: #{build_number}",
channel: slack_channel,
slack_url: slack_url,
payload: {
"Build Date" => Time.new.to_s,
"Built by" => ENV['BUILD_USER'],
},
)
end
end
end
error do |lane, exception|
build_number = lane_context[SharedValues::BUILD_NUMBER]
if (ENV["SLACK_NOTIFICATIONS"])
slack(
message: exception.message + " of " + ENV['APP_NAME'] + ' ' + ENV['APP_VERSION_IOS'] + " build: #{build_number}",
channel: slack_channel,
slack_url: slack_url,
success: false,
payload: {
"Build Date" => Time.new.to_s,
"Built by" => ENV['BUILD_USER'],
},
)
end
end
end
platform :android do
desc "bundle exec fastlane android dev --env travelmobile"
desc "Build and deploy to device"
lane :dev do |options|
build_android(
internal_build: false,
production_build: false,
env_version_name: ENV['APP_VERSION_ANDROID'],
package_name: ENV['APP_ID_ANDROID_BETA']
)
Dir.chdir("../") do
sh ("adb install -r #{android_apk_path}/debug/app-debug.apk")
end
ship_it
end
# preview bundle id -> TEAM_ID
# Debug Sign
# demo config
# crashlytics -> ad-hoc
lane :demo do
build_android(
internal_build: false,
production_build: false,
env_version_name: ENV['APP_VERSION_ANDROID'],
package_name: ENV['APP_ID_ANDROID_BETA']
)
changelog = File.read("../#{target_resource_path}/Changelog.txt")
ship_it
crashlytics(
api_token: crashlytics_api_token,
build_secret: crashlytics_build_secret,
notes: "",
notifications: false,
groups: crashlytics_demo_group,
apk_path: "#{android_apk_path}/debug/app-debug.apk"
)
end
# preview bundle id -> TEAM_ID
# Release Sign
# production config
# crashlytics -> ad-hoc
lane :preview do
build_android(
production_build: true,
env_version_name: ENV['APP_VERSION_ANDROID'],
package_name: ENV['APP_ID_ANDROID_BETA']
)
changelog = File.read("../#{target_resource_path}/Changelog.txt")
# TODO : change to preview group
crashlytics(
api_token: crashlytics_api_token,
build_secret: crashlytics_build_secret,
notes: "",
notifications: false,
groups: crashlytics_demo_group,
apk_path: "#{android_apk_path}/release/app-release.apk"
)
end
# different branches -> don't concern fastlane
# preview bundle id -> TEAM_ID
# Release Sign
# production config
# crashlytics -> ad-hoc
lane :internal do |options|
build_android(
internal_build: true,
env_version_name: ENV['APP_VERSION_ANDROID'],
package_name: ENV['APP_ID_ANDROID_BETA']
)
changelog = File.read("../#{target_resource_path}/Changelog.txt")
notify_testers = true
ship_it
crashlytics(
api_token: crashlytics_api_token,
build_secret: crashlytics_build_secret,
notes: changelog,
notifications: notify_testers,
groups: crashlytics_preview_group
)
end
lane :qa do
app_id_android = ENV['APP_ID_ANDROID']
build_android(
production_build: true,
env_version_name: ENV['APP_VERSION_ANDROID'],
package_name: app_id_android
)
third_party_store = ENV['ANDROID_THIRD_PARTY_STORE']
puts "Deploy to 3rd-Party Store: #{third_party_store}"
if third_party_store
puts "Retrieve apk from: UniversalClient/platforms/android/app/build/outputs/apk/release/"
else
supply(
package_name: app_id_android,
metadata_path: metadata_path + '/android',
validate_only: false,
track: 'beta',
skip_upload_images: false,
skip_upload_screenshots: false,
apk_paths: [
"#{android_apk_path}/release/app-release.apk"
],
)
end
end
lane :production do
app_id_android = ENV['APP_ID_ANDROID']
build_android(
production_build: true,
env_version_name: ENV['APP_VERSION_ANDROID'],
package_name: app_id_android
)
third_party_store = ENV['ANDROID_THIRD_PARTY_STORE']
puts "Deploy to 3rd-Party Store: #{third_party_store}"
if third_party_store
puts "Retrieve apk from: UniversalClient/platforms/android/app/build/outputs/apk/release/"
else
supply(
package_name: app_id_android,
metadata_path: metadata_path + '/android',
validate_only: false,
track: 'beta',
skip_upload_images: false,
skip_upload_screenshots: false,
apk_paths: [
"#{android_apk_path}/release/app-release.apk"
],
)
end
end
lane :build_android do |options|
internal_build = options[:internal_build]
production = options[:production_build]
package_name = options[:package_name]
env_version_name =options[:env_version_name]
copy_frontend(production, 'android', internal_build)
version_code = increment_android_version_code
Dir.chdir("..") do
sh "cp #{target_resource_path}/config.xml ./"
end
xml_set_attribute(
path_to_xml_file: './config.xml',
xml_path: '//xmlns:widget',
attribute_name: 'android-packageName',
attribute_value: package_name)
xml_set_attribute(
path_to_xml_file: './config.xml',
xml_path: '//xmlns:widget',
attribute_name: 'android-versionCode',
attribute_value: version_code)
puts "Using Android-Version Name #{env_version_name}"
xml_set_attribute(
path_to_xml_file: './config.xml',
xml_path: '//xmlns:widget',
attribute_name: 'version',
attribute_value: env_version_name
)
Dir.chdir("..") do
if production
sh "cp #{target_resource_path}/android/production/google-services.json ./"
else
sh "cp #{target_resource_path}/android/beta/google-services.json ./"
end
end
Dir.chdir("..") do
sh "rm -rf #{android_project_dir}build/ || true"
end
recreate_android_platform(android_project_dir, google_sender_id)
Dir.chdir("..") do
sh 'rm -f platforms/android/app/main/res/raw/publickey || true'
if production || internal_build
puts "Using Live Public Key"
sh "cp #{target_resource_path}/android/publickey platforms/android/app/src/main/res/raw/publickey"
else
puts "Using Demo Public Key"
sh "cp res/publickey platforms/android/app/src/main/res/raw/publickey"
end
end
Dir.chdir("..") do
sh "cordova prepare android"
end
unless is_gradle_configured
cordova(
platform: 'android',
keystore_path: signing_store_file,
keystore_alias: signing_key_alias,
keystore_password: signing_store_password,
key_password: signing_key_password,
build_number: version_code,
release: true
)
end
merge_cordova_android
gradle(
task: "clean",
print_command: true,
project_dir: android_project_dir)
Dir.chdir("..") do
sh "cp res/gradle.properties #{android_project_dir}gradle.properties"
sh "cp res/fabric.properties #{android_project_dir}fabric.properties"
end
puts "VersionName: " + env_version_name
gradle(
task: "assemble",
build_type: production ? "Release" : "Debug",
project_dir: android_project_dir,
flags: "--stacktrace",
properties: {
:version_code => version_code,
:versionCode => version_code,
:versionName => env_version_name,
"android.injected.signing.store.file" => signing_store_file,
"android.injected.signing.store.password" => signing_store_password,
"android.injected.signing.key.alias" => signing_key_alias,
"android.injected.signing.key.password" => signing_key_password,
}
)
ship_it
end
before_all do |lane|
puts "Build started by:"+ ENV['BUILD_USER']
end
after_all do |lane|
build_number = lane_context[SharedValues::BUILD_NUMBER]
if (ENV["SLACK_NOTIFICATIONS"])
slack(
message: "Successfully created new dev build of " + ENV['APP_NAME'] + ' ' + ENV['APP_VERSION_IOS'] + " build: #{build_number}",
channel: slack_channel,
slack_url: slack_url,
payload: {
"Build Date" => Time.new.to_s,
"Built by" => ENV['BUILD_USER'],
},
)
else
if (ENV["SLACK_NOTIFICATIONS"])
slack(
message: "Successfully uploaded new build of " + ENV['APP_NAME'] + ' ' + ENV['APP_VERSION_IOS'] + " build: #{build_number}",
channel: slack_channel,
slack_url: slack_url,
payload: {
"Build Date" => Time.new.to_s,
"Built by" => ENV['BUILD_USER'],
},
)
end
end
end
error do |lane, exception|
build_number = lane_context[SharedValues::BUILD_NUMBER]
if (ENV["SLACK_NOTIFICATIONS"])
slack(
message: exception.message + " of " + ENV['APP_NAME'] + ' ' + ENV['APP_VERSION_IOS'] + " build: #{build_number}",
channel: slack_channel,
slack_url: slack_url,
success: false,
payload: {
"Build Date" => Time.new.to_s,
"Built by" => ENV['BUILD_USER'],
},
)
end
end
end
# More information about multiple platforms in fastlane: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Platforms.md
# All available actions: https://docs.fastlane.tools/actions
# fastlane reports which actions are used. No personal data is recorded.
# Learn more at https://github.com/fastlane/fastlane#metrics
def is_gradle_configured
exists = Pathname.new("../#{android_project_dir}/.gradle/buildOutputCleanup/cache.properties").file?
UI.message "exists: #{exists}"
exists
end
def get_changelog (platform)
File.read("../res/Changelog-"+platform+".txt")
end
def increment_android_version_code ()
version_code = '0'
if ENV['BUILD_NUMBER'].nil?
version_code_file_path = "../res/android-versionCode"
#create if it does not exist
unless File.exist?(version_code_file_path)
File.open(version_code_file_path, "w+")
end
#Get the last version code and increment it.
version_code = File.read(version_code_file_path).to_i
version_code = version_code +1
f = File.new(version_code_file_path, "w")
f.write(version_code)
f.close
lane_context[SharedValues::BUILD_NUMBER] = version_code
puts "VersionCode: #{version_code}"
else
version_code = ENV['BUILD_NUMBER']
end
lane_context[SharedValues::BUILD_NUMBER] = version_code
puts "setting build number to: #{version_code}"
#return version_code
version_code
end
def get_ios_build_number ()
if ENV['BUILD_NUMBER'].nil?
build_number_file_path = "../res/ios-buildNumber"
#create if it does not exist
unless File.exist?(build_number_file_path)
File.open(build_number_file_path, "w+")
end
# Get the last version code and increment it.
build_number = File.read(build_number_file_path).to_i
build_number = build_number +1
f = File.new(build_number_file_path, "w")
f.write(build_number)
f.close
else
build_number = ENV['BUILD_NUMBER']
end
lane_context[SharedValues::BUILD_NUMBER] = build_number
UI.message "setting build number to: #{build_number}"
build_number
end
def install_on_ios_device (device)
dev_device_id = ENV['DEV_DEVICE_ID']
# if the device is passed from command line then simply install on that device
if device
install_on_device(
device_id: device,
ipa: lane_context[SharedValues::IPA_OUTPUT_PATH]
)
else
# if the device is not set simply install to all connected devices
if dev_device_id.nil?
dev_device_ids = sh("idevice_id -l").strip.split('\n')
dev_device_ids.each do
dev_device_id
install_on_device(
device_id: dev_device_id,
ipa: lane_context[SharedValues::IPA_OUTPUT_PATH]
)
end
else
# if the device is set via env variables then simply install on that device
install_on_device(
device_id: dev_device_id,
ipa: lane_context[SharedValues::IPA_OUTPUT_PATH]
)
end
end
end
def recreate_ios_platform ()
if ENV["RECREATE_PLATFORMS"] == 'no'
Dir.chdir("..") do
sh "cordova prepare ios"
end
else
Dir.chdir("..") do
sh 'cordova plugin rm at-touristmobile-airwatch-plugin'
puts "recreate_ios_platform: Done plugin rm"
sh "cordova platform remove ios"
puts "recreate_ios_platform: Done platform remove ios"
sh "cordova platform remove android"
puts "recreate_ios_platform: Done platform remove android"
sh "cordova platform add ios --debug"
puts "recreate_ios_platform: Done platform add ios"
if ENV["SSO"] == 'airwatch'
sh 'cordova plugin add @tm/at-touristmobile-airwatch-plugin --force'
puts "recreate_ios_platform: Done cordova plugin add @tm/at-touristmobile-airwatch-plugin --force"
end
sh "cordova prepare ios"
puts "recreate_ios_platform: Done cordova prepare add ios"
end
puts "recreate_ios_platform: Running cocoapods"
cocoapods(
clean: true,
podfile: "platforms/ios/Podfile"
)
puts "recreate_ios_platform: Done running cocoapods"
end
end
def recreate_android_platform (android_project_dir, google_sender_id)
if ENV["RECREATE_PLATFORMS"] == 'no'
Dir.chdir("..") do
sh "rm -rf #{android_project_dir}build/ || true"
end
Dir.chdir("..") do
sh "cordova prepare android"
end
else
Dir.chdir("..") do
sh 'cordova plugin rm at-touristmobile-airwatch-plugin'
sh 'cordova platform rm ios'
sh 'cordova platform rm android'
sh "cordova platform add android@7.1.1"
if ENV["SSO"] == 'airwatch'
sh 'cordova plugin add @tm/at-touristmobile-airwatch-plugin --force'
end
sh "cordova prepare android"
end
end
end
def merge_cordova_android ()
Dir.chdir("../") do
sh ("coffee #{merge_plugins} platforms/android/platform_www/cordova.js platforms/android/platform_www/cordova_plugins.js #{resource_path}/android-cordova-all.js")
sh ("cp #{resource_path}/android-cordova-all.js platforms/android/app/src/main/assets/www/cordova.js")
end
end
def merge_cordova_ios ()
Dir.chdir("../") do
sh ("coffee #{merge_plugins} platforms/ios/platform_www/cordova.js platforms/ios/platform_www/cordova_plugins.js #{resource_path}/cordova-ios-all.js")
sh ("cp #{resource_path}/cordova-ios-all.js platforms/ios/www/cordova.js")
end
end
def copy_frontend (production, platform, internal)
Dir.chdir("../#{ui_path}") do
if ENV["SKIP_WEBPACK"] == 'no'
if production || internal
sh "webpack -p --stage=production#{brand} --platform=#{platform} --cordova --root"
else
sh "webpack -d --stage=demo#{brand} --platform=#{platform} --cordova --root"
end
# since this deletes a lot of branding stuff always delete even in demo/dev environment
Dir.chdir("www/app/images/theme/") do
# delete all images except branding images to reduce size
sh "find . ! -name '#{brand}' -type d -exec rm -rf {} + || true"
end
end
end
Dir.chdir("..") do
sh 'rm -rf www || true'
sh "ln -s #{ui_path}/www www"
end
end
def ship_it
rand = Random.rand(0..4)
if rand == 0
squirrel
elsif rand == 1
boat
elsif rand == 2
submarine
elsif rand == 3
snoopy
elsif rand == 4
phone
end
end
def squirrel
puts "
!!!!
!!!!!!!!
!!!!!!!!!!! O_O
!!! !!!!!!! /@ @\\
!!!!!! \\ x /
!!!!!!/ m !m
!!!!/ __ |
!!!!|/ \\__
!!!\\______\\
"
end
def boat
puts "
|~
|/ w
/ ( (| \
/( (/ |) |\
____ ( (/ (| | ) ,
|----\ (/ | /| |'\ /^;
\---*---Y--+-----+---+--/(
\------*---*--*---*--/
'~~ ~~~~~~~~~~~~~~~
"
end
def submarine
puts "
_
| \
'.|
_- _- _- _-|| _- _- _- _- _- _-
_- _- - __||___ _- _- _- _-
_- _- _- | _ | _- _- _-
_- _- /_) (_) (_\ _- _- _-
_.-' `-._ ________ _-
_..--` `-..' .'
_.-' o/o o/o`-..__.' ~ ~
.-' o|o o|o `.._. // ~ ~
`-._ o|o o|o |||<|||~ ~
`-.__o\o o|o .'-' \\ ~ ~
LGB `-.______________________\_...-``'. ~ ~
`._______`.
"
end
def snoopy
puts "
,-~~-.___.
/ | ' \ Dearest Crashlytics! I'm done building...
( ) 0
\_/-, ,----'
==== //
/ \-'~; /~~~(O)
/ __/~| / |
=( _____| (_________| W<
"
end
def phone
puts "
_.===========================._
.'` .- - __- - - -- --__--- -. `'.
__ / ,'` _|--|_________|--|_ `'. \
/'--| ; _.'\ | ' ' | /'._ ; |
// | |_.-' .-'.' - -- - '.'-. '-._| |
(\) \"` _.-` / \ `-._ `\"/
(\) `-` / .---------. \ `-`
(\) | ||1||2||3|| |
(\) | ||4||5||6|| |
(\) | ||7||8||9|| |
(\) ___| ||*||0||#|| |
(\) /.--| '---------' |
(\) (\) |\_ _ __ _ __ __/|
(\) (\) | |
(\)_._._.__(\) | |
(\\\\jgs\\\) '.___________________.'
'-'-'-'--'
"
end
`./fastlane/Appfile`
json_key_file "res/supply-service-account.json" # Path to the json secret file - Follow https://github.com/fastlane/supply#setup to get one
package_name "com.touristmobile.client.consumer" # e.g. com.krausefx.app
apple_id "service@tourist-mobile.com"
team_id "7LWFKRB39E"
fastlane gems
| Gem | Version | Update-Status |
|---|---|---|
| fastlane | 2.107.0 | ✅ Up-To-Date |
Loaded fastlane plugins:
| Plugin | Version | Update-Status |
|---|---|---|
| fastlane-plugin-cordova | 2.2.1 | ✅ Up-To-Date |
| fastlane-plugin-versioning | 0.3.4 | ✅ Up-To-Date |
| fastlane-plugin-appicon | 0.13.0 | ✅ Up-To-Date |
| fastlane-plugin-badge | 1.1.0 | ✅ Up-To-Date |
| fastlane-plugin-increment_version_code | 0.4.3 | ✅ Up-To-Date |
| fastlane-plugin-upgrade_super_old_xcode_project | 0.0.2 | ✅ Up-To-Date |
| fastlane-plugin-xml_editor | 0.2.0 | ✅ Up-To-Date |
Loaded gems
| Gem | Version |
|---|---|
| did_you_mean | 1.2.0 |
| executable-hooks | 1.5.0 |
| bundler-unload | 1.0.2 |
| rubygems-bundler | 1.4.5 |
| bundler | 1.16.2 |
| CFPropertyList | 3.0.0 |
| concurrent-ruby | 1.0.5 |
| i18n | 0.9.5 |
| minitest | 5.11.3 |
| thread_safe | 0.3.6 |
| tzinfo | 1.2.5 |
| activesupport | 4.2.10 |
| public_suffix | 2.0.5 |
| addressable | 2.5.2 |
| atomos | 0.1.3 |
| babosa | 1.0.2 |
| curb | 0.9.6 |
| fastimage | 2.1.4 |
| colored | 1.2 |
| highline | 1.7.10 |
| commander-fastlane | 4.4.6 |
| dotenv | 2.5.0 |
| emoji_regex | 0.1.1 |
| excon | 0.62.0 |
| multipart-post | 2.0.0 |
| faraday | 0.15.3 |
| unf_ext | 0.0.7.5 |
| unf | 0.1.4 |
| domain_name | 0.5.20180417 |
| http-cookie | 1.0.3 |
| faraday-cookie_jar | 0.0.6 |
| faraday_middleware | 0.12.2 |
| gh_inspector | 1.1.3 |
| jwt | 2.1.0 |
| memoist | 0.16.0 |
| multi_json | 1.13.1 |
| os | 1.0.0 |
| signet | 0.11.0 |
| googleauth | 0.6.7 |
| httpclient | 2.8.3 |
| mime-types-data | 3.2018.0812 |
| mime-types | 3.2.2 |
| declarative | 0.0.10 |
| declarative-option | 0.1.0 |
| uber | 0.1.0 |
| representable | 3.0.4 |
| retriable | 3.1.2 |
| google-api-client | 0.23.9 |
| json | 2.1.0 |
| mini_magick | 4.5.1 |
| multi_xml | 0.6.0 |
| plist | 3.3.0 |
| rubyzip | 1.2.2 |
| security | 0.1.3 |
| naturally | 2.2.0 |
| simctl | 1.6.5 |
| slack-notifier | 2.3.2 |
| terminal-notifier | 1.8.0 |
| unicode-display_width | 1.4.0 |
| terminal-table | 1.8.0 |
| tty-screen | 0.6.5 |
| tty-cursor | 0.6.0 |
| tty-spinner | 0.8.0 |
| word_wrap | 1.0.0 |
| claide | 1.0.2 |
| colored2 | 3.1.2 |
| nanaimo | 0.2.6 |
| xcodeproj | 1.7.0 |
| rouge | 2.0.7 |
| xcpretty | 0.3.0 |
| xcpretty-travis-formatter | 1.0.0 |
| badge | 0.9.1 |
| fuzzy_match | 2.0.4 |
| nap | 1.1.0 |
| cocoapods-core | 1.5.3 |
| cocoapods-deintegrate | 1.0.2 |
| cocoapods-downloader | 1.2.2 |
| cocoapods-plugins | 1.0.0 |
| cocoapods-search | 1.0.0 |
| cocoapods-stats | 1.0.0 |
| netrc | 0.11.0 |
| cocoapods-trunk | 1.3.1 |
| cocoapods-try | 1.1.0 |
| escape | 0.0.4 |
| fourflusher | 2.0.1 |
| molinillo | 0.6.6 |
| ruby-macho | 1.3.1 |
| cocoapods | 1.5.3 |
| coderay | 1.1.2 |
| fastlane-plugin-appicon | 0.13.0 |
| fastlane-plugin-badge | 1.1.0 |
| fastlane-plugin-cordova | 2.2.1 |
| fastlane-plugin-increment_version_code | 0.4.3 |
| fastlane-plugin-upgrade_super_old_xcode_project | 0.0.2 |
| fastlane-plugin-versioning | 0.3.4 |
| mini_portile2 | 2.3.0 |
| nokogiri | 1.8.5 |
| fastlane-plugin-xml_editor | 0.2.0 |
| method_source | 0.9.0 |
| pry | 0.11.3 |
generated on: 2018-11-02
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Reactions: 1
- Comments: 22 (7 by maintainers)
i’ll look into it tomorrow now that i know how to break it…
yes I thought about adding something along the lines of this:
i’m currently trying to get it to work (may take a while first time rubyer)
I added logging to upload_assets.upload
INFO [2018-11-22 12:55:32.43]: Uploading app icon from 'targets/live/metadata/app_icon.jpg'...Looks like the error code originates from Apple interestingly I didn’t find any documentation on it. The error dump:
i think the image path was wrong, either way it works for me now
yes i encountered the same problem while executing
deliverThe login with itunes connect was successfull but I got the same error message.The screenshot upload was successful
Successfully uploaded screenshots to App Store Connectbut i fails while uploading the app icons with