fastlane: upload_symbols_to_crashlytics Permission denied - Crashlytics.framework
New Issue Checklist
- Updated fastlane to the latest version
- I have read the Contribution Guidelines
Issue Description
When trying to run on Jenkins getting this:
[12:16:14]: [32m-------------------------------------------[0m
[12:16:14]: [32m--- Step: upload_symbols_to_crashlytics ---[0m
[12:16:14]: [32m-------------------------------------------[0m
[12:16:14]: Extracting '/Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT/Projects/FutureMobile/Binaries/IOS/FutureMobile.dSYM.zip'...
[12:16:14]: [4m[36m$ unzip -qo /Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT/Projects/FutureMobile/Binaries/IOS/FutureMobile.dSYM.zip[0m[0m
[12:16:15]: Uploading 'FutureMobile.dSYM'...
[12:16:15]: [31mPermission denied - /Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT/Projects/FutureMobile/Plugins/Crashlytics/Extras/iOS/Crashlytics/iOS/Crashlytics.framework[0m
[12:16:15]: [32mSuccessfully uploaded dSYM files to Crashlytics 💯[0m
I’ve tried to add sh "cd .. && chmod -R 777 #{submit_path}" before calling action, but no luck.
Jenkins output
Started by user Ruslan K
git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository git config remote.origin.url ssh://git@10.11.36.207:7999/lit/build_config.git # timeout=10 Fetching upstream changes from ssh://git@10.11.36.207:7999/lit/build_config.git git --version # timeout=10 using GIT_SSH to set credentials Jenkins BitBucket No Pass git fetch --tags --progress ssh://git@10.11.36.207:7999/lit/build_config.git +refs/heads/:refs/remotes/origin/ # timeout=200 git rev-parse refs/remotes/origin/ios-dev^{commit} # timeout=10 git rev-parse refs/remotes/origin/refs/heads/ios-dev^{commit} # timeout=10 Checking out Revision 6af141b3798e60625f5bee5ff96fb5c0ff708882 (refs/remotes/origin/ios-dev) git config core.sparsecheckout # timeout=10 git checkout -f 6af141b3798e60625f5bee5ff96fb5c0ff708882 # timeout=200 git rev-list 5abdf53bdeda212de0b5eb4ba3531bfb7b19898a # timeout=10 [Pipeline] node Running on Mac Pro Node in /Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe [Pipeline] { [Pipeline] stage [Pipeline] { (Checkout script) [Pipeline] git git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository git config remote.origin.url ssh://git@10.11.36.207:7999/lit/build_config.git # timeout=10 Fetching upstream changes from ssh://git@10.11.36.207:7999/lit/build_config.git git --version # timeout=10 using GIT_SSH to set credentials Jenkins BitBucket No Pass git fetch --tags --progress ssh://git@10.11.36.207:7999/lit/build_config.git +refs/heads/:refs/remotes/origin/ git rev-parse refs/remotes/origin/ios-dev^{commit} # timeout=10 git rev-parse refs/remotes/origin/origin/ios-dev^{commit} # timeout=10 Checking out Revision 6af141b3798e60625f5bee5ff96fb5c0ff708882 (refs/remotes/origin/ios-dev) git config core.sparsecheckout # timeout=10 git checkout -f 6af141b3798e60625f5bee5ff96fb5c0ff708882 git branch -a -v --no-abbrev # timeout=10 git branch -D ios-dev # timeout=10 git checkout -b ios-dev 6af141b3798e60625f5bee5ff96fb5c0ff708882 [Pipeline] load [Pipeline] { (common_jenkinsfile) [Pipeline] } [Pipeline] // load [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Checkout Project) [Pipeline] dir Running in /Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT [Pipeline] { [Pipeline] } [Pipeline] // dir [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Environment Setup) [Pipeline] sh [iOS-LiT-Dev-Pipe] Running shell script
- brew ls --versions imagemagick
- echo ‘imagemagick is already installed’ imagemagick is already installed [Pipeline] sh [iOS-LiT-Dev-Pipe] Running shell script
- brew ls --versions node
- echo ‘node is already installed’ node is already installed [Pipeline] sh [iOS-LiT-Dev-Pipe] Running shell script
- gem install bundler Bundler and RubyGems.org are free for anyone to use, but maintaining them costs more than $25,000 USD every month. Help us cover those costs so that we can keep the gem ecosystem free for everyone: https://ruby.to/support-bundler Successfully installed bundler-1.14.3 Parsing documentation for bundler-1.14.3 Done installing documentation for bundler after 4 seconds 1 gem installed
- bundle install --deployment Fetching gem metadata from https://rubygems.org/… Fetching version metadata from https://rubygems.org/… Fetching dependency metadata from https://rubygems.org/. Installing CFPropertyList 2.3.5 Installing i18n 0.8.0 Using json 1.8.6 Using minitest 5.10.1 Using thread_safe 0.3.5 Using public_suffix 2.0.5 Using babosa 1.0.2 Using bundler 1.14.3 Using colored 1.2 Using highline 1.7.8 Installing dotenv 2.2.0 Using excon 0.54.0 Using multipart-post 2.0.0 Using unf_ext 0.0.7.2 Using gh_inspector 1.0.3 Using jwt 1.5.6 Using little-plugger 1.1.4 Using multi_json 1.12.1 Using memoist 0.15.0 Using os 0.9.6 Using httpclient 2.8.3 Using hurley 0.2 Using mime-types-data 3.2016.0521 Using uber 0.0.15 Using retriable 2.1.0 Using mini_magick 4.5.1 Using multi_xml 0.6.0 Using plist 3.2.0 Using rubyzip 1.2.0 Using security 0.1.3 Using slack-notifier 1.5.1 Using terminal-notifier 1.7.1 Using unicode-display_width 1.1.3 Using word_wrap 1.0.0 Using claide 1.0.1 Using nanaimo 0.2.3 Using rouge 1.11.1 Using fastlane-plugin-act 1.0.1 Using tzinfo 1.2.2 Using addressable 2.5.0 Using commander 4.4.3 Using faraday 0.11.0 Using unf 0.1.4 Using logging 2.1.0 Using mime-types 3.1 Using representable 2.3.0 Using fastlane-plugin-appicon 0.4.1 Using terminal-table 1.7.3 Using xcpretty 0.2.4 Using activesupport 4.2.7.1 Using fastimage 2.0.1 Using faraday_middleware 0.11.0.1 Using signet 0.7.3 Using domain_name 0.5.20161129 Using xcpretty-travis-formatter 0.0.4 Using xcodeproj 1.4.2 Using googleauth 0.5.1 Using http-cookie 1.0.3 Installing google-api-client 0.9.26 Using faraday-cookie_jar 0.0.6 Installing fastlane 2.14.2 Using badge 0.7.1 Bundle complete! 5 Gemfile dependencies, 62 gems now installed. Bundled gems are installed into ./vendor/bundle. [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Fastlane Build & Install) [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Upload to Fabric) [Pipeline] sh [iOS-LiT-Dev-Pipe] Running shell script
- bundle exec fastlane fabric ±------------------------±--------±----------------+ | [32mUsed plugins[0m | ±------------------------±--------±----------------+ | Plugin | Version | Action | ±------------------------±--------±----------------+ | fastlane-plugin-appicon | 0.4.1 | android_appicon | | | | appicon | | fastlane-plugin-act | 1.0.1 | act | ±------------------------±--------±----------------+
[12:15:07]: [32m-------------------------------------------------[0m [12:15:07]: [32m— Step: Verifying required fastlane version —[0m [12:15:07]: [32m-------------------------------------------------[0m [12:15:07]: Your fastlane version 2.14.2 matches the minimum requirement of 1.108 ✅ [12:15:07]: [32m------------------------------[0m [12:15:07]: [32m— Step: default_platform —[0m [12:15:07]: [32m------------------------------[0m [12:15:07]: [32mDriving the lane ‘ios fabric’ 🚀[0m [12:15:07]: [32m-----------------------------------------------------------------------------------------------------------------------------------[0m [12:15:07]: [32m— Step: cd … && chmod -R 777 LIT/Projects/FutureMobile/Plugins/Crashlytics/Extras/iOS/Crashlytics/iOS/Crashlytics.framework/ —[0m [12:15:07]: [32m-----------------------------------------------------------------------------------------------------------------------------------[0m [12:15:07]: [4m[36m$ cd … && chmod -R 777 LIT/Projects/FutureMobile/Plugins/Crashlytics/Extras/iOS/Crashlytics/iOS/Crashlytics.framework/[0m[0m [12:15:07]: [32m--------------------[0m [12:15:07]: [32m— Step: resign —[0m [12:15:07]: [32m--------------------[0m [35m/Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/vendor/bundle/ruby/2.3.0/gems/fastlane-2.14.2/sigh/lib/assets/resign.sh /Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT/Projects/FutureMobile/Build/IOS/FutureMobile.ipa CD0260902AD548435FA7DABDCE99DC08AF9C5093 -p /Users/App/Library/MobileDevice/Provisioning\ Profiles/c4b77347-ebd3-4403-bd7f-85bf05333cbd.mobileprovision --use-app-entitlements /Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT/Projects/FutureMobile/Build/IOS/FutureMobile.ipa[0m Executable=/Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/_floatsignTemp/Payload/FutureMobile.app/FutureMobile _floatsignTemp/Payload/FutureMobile.app: replacing existing signature
[12:15:21]: [32mSuccessfully signed /Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT/Projects/FutureMobile/Build/IOS/FutureMobile.ipa![0m [12:15:21]: [32mSuccessfully re-signed .ipa 🔏.[0m [12:15:21]: [32m-------------------------[0m [12:15:21]: [32m— Step: crashlytics —[0m [12:15:21]: [32m-------------------------[0m [12:15:21]: [32mUploading the build to Crashlytics Beta. Time for some ☕️.[0m [12:16:14]: [32mBuild successfully uploaded to Crashlytics Beta 🌷[0m [12:16:14]: [32mVisit https://fabric.io/_/beta to add release notes and notify testers.[0m [12:16:14]: [32m-------------------------------------------[0m [12:16:14]: [32m— Step: upload_symbols_to_crashlytics —[0m [12:16:14]: [32m-------------------------------------------[0m [12:16:14]: Extracting ‘/Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT/Projects/FutureMobile/Binaries/IOS/FutureMobile.dSYM.zip’… [12:16:14]: [4m[36m$ unzip -qo /Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT/Projects/FutureMobile/Binaries/IOS/FutureMobile.dSYM.zip[0m[0m [12:16:15]: Uploading ‘FutureMobile.dSYM’… [12:16:15]: [31mPermission denied - /Volumes/Jenkins_Support/workspace/iOS-LiT-Dev-Pipe/LIT/Projects/FutureMobile/Plugins/Crashlytics/Extras/iOS/Crashlytics/iOS/Crashlytics.framework[0m [12:16:15]: [32mSuccessfully uploaded dSYM files to Crashlytics 💯[0m [12:16:15]: [32m--------------------[0m [12:16:15]: [32m— Step: rocket —[0m [12:16:15]: [32m--------------------[0m
____
/ \
| |
| |
| |
\____/
| |
| |
| |
|____|
{| |}
| |
| |
| F |
| A |
| S |
| T |
| L |
| A |
/| N |\
|| E ||
|| ||
\|____|/
/_\/_\
######
########
######
####
####
##
##
##
##
±-----±--------------------------------------------------------------±------------+ | [32mfastlane summary[0m | ±-----±--------------------------------------------------------------±------------+ | Step | Action | Time (in s) | ±-----±--------------------------------------------------------------±------------+ | 1 | Verifying required fastlane version | 0 | | 2 | default_platform | 0 | | 3 | cd … && chmod -R 777 LIT/Projects/FutureMobile/Plugins/Crash | 0 | | 4 | resign | 13 | | 5 | crashlytics | 52 | | 6 | upload_symbols_to_crashlytics | 0 | | 7 | rocket | 0 | ±-----±--------------------------------------------------------------±------------+
[12:16:15]: [32mfastlane.tools finished successfully 🎉[0m [Pipeline] } [Pipeline] // stage [Pipeline] step Archiving artifacts Recording fingerprints [Pipeline] step Recording test results [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS
Environment
🚫 fastlane environment 🚫
Stack
| Key | Value |
|---|---|
| OS | 10.12.2 |
| Ruby | 2.3.1 |
| Bundler? | true |
| Git | git version 2.10.1 |
| Installation Source | /usr/local/bin/fastlane |
| Host | Mac OS X 10.12.2 (16C67) |
| Ruby Lib Dir | /usr/local/Cellar/ruby/2.3.1_2/lib |
| OpenSSL Version | OpenSSL 1.0.2j 26 Sep 2016 |
| Is contained | false |
| Is homebrew | false |
| Xcode Path | /Applications/Xcode.app/Contents/Developer/ |
| Xcode Version | 8.2.1 |
System Locale
| Error |
|---|
| No Locale with UTF8 found 🚫 |
fastlane files:
`./fastlane/Fastfile`
# If you want to automatically update fastlane if a new version is available:
# update_fastlane
# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_version "1.108"
default_platform :ios
platform :ios do
before_all do
ENV['ROOT_PATH'] = File.dirname(Dir.pwd) # sh("dirname $PWD").rstrip
ENV['SLACK_URL'] = 'https://hooks.slack.com/services/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'
end
skip_docs
desc "Build for test & deliver to Fabric"
lane :build_for_test do |options|
# ensure_git_branch(branch: "develop")
check_build_options(options)
ENV['MATCH_APP_IDENTIFIER'] = 'com.futuregroup.futureuniverse.test'
match_with_context(type: "development", force_for_new_devices: true)
options[:shipping] = false
build(options)
shield = "DEV-#{options[:version]}(#{options[:build]})-blue"
icon(
shield: shield,
distribution: false
)
fabric(
groups: "qa-1,managers,dev"
)
slack(
message: "New iOS-LiT-TEST #{options[:version]}(#{options[:build]}) is available on Fabric 🔬",
channel: "new_builds",
success: true
)
end
desc "Build pull request and try to run it on connected device via USB. Pass feature name as 'build'"
lane :build_pr do |options|
check_build_options(options)
ENV['MATCH_APP_IDENTIFIER'] = "*"
match_with_context(type: "development", force_for_new_devices: true)
pr_name = feature_name()
raise "Can't get PR name" unless pr_name
UI.message "PR name is #{pr_name} 🔮"
ENV['MATCH_APP_IDENTIFIER'] = "com.futuregroup.futureuniverse.#{pr_name}"
options[:shipping] = false
build(options)
shield = "pr-#{pr_name}-orange"
icon(
shield: shield,
distribution: false
)
resign(
signing_identity: ENV['CERT'],
use_app_entitlements: true
)
deploy_on_local_device
end
def feature_name
# name = git_branch
name = ENV['JOB_NAME'] if name.nil? || name.empty?
name = "UNKNOWN_FEATURE" if name.nil? || name.empty?
File.basename(name.gsub("%2F", "/"))
end
desc "Build for stage & deliver to Fabric"
lane :build_for_stage do |options|
# ensure_git_branch(branch: "stage")
check_build_options(options)
ENV['MATCH_APP_IDENTIFIER'] = 'com.futuregroup.futureuniverse' # add .stage
match_with_context(type: "adhoc", force_for_new_devices: true)
options[:shipping] = true
build(options)
icon(distribution: true)
fabric
slack(
message: "New iOS-LiT-STAGE #{options[:version]}(#{options[:build]}) is available on Fabric 🚀",
channel: "new_builds",
success: true
)
end
desc "Build for beta & deliver to TestFlight"
lane :build_for_beta do |options|
# ensure_git_branch(branch: "stage")
check_build_options(options)
ENV['MATCH_APP_IDENTIFIER'] = 'com.futuregroup.futureuniverse'
match_with_context(type: "appstore")
options[:shipping] = true
build(options)
icon(distribution: true)
beta
slack(
message: "New iOS-LiT-BETA #{options[:version]}(#{options[:build]}) is available on TestFlight ✈️",
channel: "new_builds",
success: true
)
end
desc "Build for dev"
lane :build_for_dev do |options|
# ensure_git_branch(branch: "stage")
check_build_options(options)
ENV['MATCH_APP_IDENTIFIER'] = 'com.futuregroup.futureuniverse.dev'
match_with_context(type: "development")
sh "cd .. && ruby configure.rb dev #{ENV['BUILD_NUMBER']} LIT"
build(options)
icon(distribution: false)
write_env
#
# slack(
# message: "New iOS-LiT-BETA #{options[:version]}(#{options[:build]}) is available on TestFlight ✈️",
# channel: "new_builds",
# success: true
# )
end
desc "Match that sets up Lane_context. Call separately for different types."
lane :match_with_context do |options|
if is_ci?
unlock_keychain(
path: "login",
password: "tfg2015"
)
end
# Might fail
begin
register_devices(devices_file: "fastlane/devices.txt")
rescue => ex
UI.error(ex)
end
type = options[:type]
case type
match(options)
ENV['PROVISIONING'] = ENV["sigh_#{ENV['MATCH_APP_IDENTIFIER']}_" + type] + '.mobileprovision'
Actions.lane_context[SharedValues::SIGH_UUID] = ENV["sigh_#{ENV['MATCH_APP_IDENTIFIER']}_" + type]
Actions.lane_context[SharedValues::SIGH_PROFILE_PATH] =
File.expand_path(File.join("~/Library/MobileDevice/Provisioning Profiles/", ENV['PROVISIONING']))
ENV['PROVISIONING_PATH'] = Actions.lane_context[SharedValues::SIGH_PROFILE_PATH]
ENV['CERT'] = type == "development" ? 'iPhone Developer: Hans Svilosen (RDGBAA364X)'
: 'iPhone Distribution: The Future Group AS (4TM2DK894Y)'
Actions.lane_context[SharedValues::CERT_CERTIFICATE_ID] = ENV['CERT']
# Mirror profiles & settings to config
file = File.join(ENV['FULL_PROJECT_PATH'], "Config/DefaultEngine.ini")
file_content = File.read(file)
file_content = file_content.gsub(/MobileProvision=.*/, "MobileProvision=#{ENV['PROVISIONING']}")
file_content = file_content.gsub(/SigningCertificate=.*/, "SigningCertificate=#{ENV['CERT']}")
File.open(file, 'w') { |file| file.write(file_content) }
copy_artifacts(
target_path: "artifacts",
artifacts: [Actions.lane_context[SharedValues::SIGH_PROFILE_PATH]],
keep_original: true
)
end
desc "Checks build options"
private_lane :check_build_options do |options|
raise "Missing build: use :build parameter" unless options[:build]
raise "Missing engine_path: use :engine_path parameter" unless options[:engine_path]
raise "Missing project_path: use :project_path parameter" unless options[:project_path]
ENV['PROJECT_PATH'] = options[:project_path]
ENV['FULL_PROJECT_PATH'] = File.join(ENV['ROOT_PATH'], ENV['PROJECT_PATH'])
end
desc "Setup environment & build"
private_lane :build do |options|
ENV['ENGINE_PATH'] = options[:engine_path]
copy_artifacts(
target_path: "artifacts",
artifacts: [File.join(ENV['FULL_PROJECT_PATH'], "/Config/DefaultEngine.ini"),
File.join(ENV['FULL_PROJECT_PATH'], "/build_config.json"),
File.join(ENV['FULL_PROJECT_PATH'], "/Source/FutureMobile/Webapi.h"),
File.join(ENV['FULL_PROJECT_PATH'], "/Plugins/Pushbots/Source/Pushbots/values.xml"),
File.join(ENV['FULL_PROJECT_PATH'], "/Source/SocketModule/Public/SocketClient.h")],
keep_original: true
)
sh "./Build_iOS.sh #{(options[:shipping] == true ? 'true' : 'false')} #{options[:project_path]}"
Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] =
File.join(ENV['FULL_PROJECT_PATH'], "/Build/IOS/",
(options[:shipping] ? "Distro_FutureMobile-IOS-Shipping.ipa" : "FutureMobile.ipa"))
ENV['IPA_OUTPUT_PATH'] = Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH] =
File.join(ENV['FULL_PROJECT_PATH'], "/Binaries/IOS/",
(options[:shipping] ? "FutureMobile-IOS-Shipping.dSYM.zip" : "FutureMobile.dSYM.zip"))
ENV['DSYM_OUTPUT_PATH'] = Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH]
copy_artifacts(
target_path: "artifacts",
artifacts: [Actions.lane_context[SharedValues::IPA_OUTPUT_PATH], Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH]],
keep_original: true
)
end
desc "Write env to file"
lane :write_env do |options|
File.open(".env", "w") do |file|
file.truncate(0)
file.write("PROJECT_PATH=\"#{ENV['PROJECT_PATH']}\"\n")
file.write("FULL_PROJECT_PATH=\"#{ENV['FULL_PROJECT_PATH']}\"\n")
file.write("CERT=\"#{ENV['CERT']}\"\n")
file.write("PROVISIONING=\"#{ENV['PROVISIONING']}\"\n")
file.write("PROVISIONING_PATH=\"#{ENV['PROVISIONING_PATH']}\"\n")
file.write("DSYM_OUTPUT_PATH=\"#{ENV['DSYM_OUTPUT_PATH']}\"\n")
file.write("IPA_OUTPUT_PATH=\"#{ENV['IPA_OUTPUT_PATH']}\"\n")
end
copy_artifacts(
target_path: "artifacts",
artifacts: "fastlane/.env",
keep_original: true
)
end
# desc "Setup environment & build"
# private_lane :build_assets do |options|
# # sh('git fetch --tags')
# # last_git_tag
# ENV['BUNDLE_DISPLAY_NAME'] = options[:shipping] ? 'Lost in Time' : 'LiT Dev'
# ENV['VERSION'] = options[:version]
# ENV['BUILD'] = options[:build]
# ENV['ENGINE_PATH'] = options[:engine_path]
#
# sh "./Build_iOS_Assets.sh " + (options[:shipping] == true ? 'true' : 'false') + " " + options[:project_path]
# Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] = ENV['ROOT_PATH'] + "/" + ENV['PROJECT_PATH'] + "/Build/IOS/" +
# + (options[:shipping] ? "Distro_FutureMobile-IOS-Shipping.ipa" : "FutureMobile.ipa")
# Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH] = ENV['ROOT_PATH'] + "/" + ENV['PROJECT_PATH'] + "/Binaries/IOS/" +
# + (options[:shipping] ? "FutureMobile-IOS-Shipping.dSYM" : "FutureMobile.dSYM")
#
# end
desc "Submit a new Beta Build to Apple TestFlight"
lane :beta do |options|
inject_dsym
# pem(
# save_private_key: true,
# new_profile: proc do |profile_path| # this block gets called when a new profile was generated
# UI.message profile_path # the absolute path to the new PEM file
# # insert the code to upload the PEM file to the server
# end
# )
resign(
signing_identity: ENV['CERT'],
use_app_entitlements: true
)
pilot(
skip_submission: true,
skip_waiting_for_build_processing: true
)
rocket
end
desc "Resigns app with correct entitlements from profile for AdHoc, upload ipa & dsym to Fabric"
lane :fabric do |options|
submit_path = File.join(ENV['PROJECT_PATH'], "/Plugins/Crashlytics/Extras/iOS/Crashlytics/iOS/Crashlytics.framework/")
# sh "chmod +x #{File.join(submit_path, "uploadDSYM")}"
sh "cd .. && chmod -R 777 #{submit_path}"
resign(
ipa: ENV['IPA_OUTPUT_PATH'],
provisioning_profile: ENV['PROVISIONING_PATH'],
signing_identity: ENV['CERT'],
use_app_entitlements: true
)
crashlytics(
ipa_path: ENV['IPA_OUTPUT_PATH'],
crashlytics_path: submit_path, # path to your Crashlytics submit binary.
api_token: ENV['CRASHLYTICS_API_TOKEN'] || "87192f9ac8a78692bbfb1140b8e239c318c1539e",
build_secret: ENV['CRASHLYTICS_BUILD_SECRET'] || "dad43aa5088ca2554dbe718797cdb2173bf32b072fef10056805443c72a91ae0",
groups: options[:groups],
notifications: false
)
upload_symbols_to_crashlytics(
binary_path: submit_path,
dsym_path: ENV['DSYM_OUTPUT_PATH']
)
rocket
end
desc "Generate icon from source, add badge optionally"
private_lane :icon do |options|
path = "Build/IOS"
appicon(
appicon_image_file: options[:distribution] ? "fastlane/icon_source.png" : "fastlane/icon_dev.png",
appicon_path: path,
appicon_devices: [:ipad, :iphone]
)
if options[:shield]
badge(
path: path,
shield: options[:shield],
shield_no_resize: false,
no_badge: true
)
end
ipa_path = File.expand_path(Actions.lane_context[SharedValues::IPA_OUTPUT_PATH])
act(
ipa: ipa_path,
app_name: "FutureMobile.app",
iconset: File.join(path, "/AppIcon.appiconset")
)
end
desc "Install new build on connected device"
lane :deploy_on_local_device do |options|
sh "npm install -g ios-deploy"
ipa_path = File.expand_path(Actions.lane_context[SharedValues::IPA_OUTPUT_PATH])
install_on_device(
ipa: ipa_path
)
end
desc "Inject .DSYM into existing .ipa"
private_lane :inject_dsym do
ipa_path = File.expand_path(Actions.lane_context[SharedValues::IPA_OUTPUT_PATH])
raise "Missing ipa path" unless ipa_path
app_name = File.basename(ipa_path, ".ipa")
folder_path = File.dirname(ipa_path)
Dir.mktmpdir do |dir|
app_binary = File.join(dir, "Payload", "#{app_name}.app", app_name)
symbols = File.join(dir, "Symbols")
Actions.sh "unzip \"#{ipa_path}\" -d \"#{dir}\""
Actions.sh "mkdir \"#{symbols}\""
Actions.sh "xcrun symbols -noTextInSOD -noDaemon -arch all -symbolsPackageDir \"#{symbols}\" \"#{app_binary}\""
all_folders = Dir.glob(File.join(dir, "*")).map { |f| "\"#{File.basename(f)}\"" }.join(" ")
Actions.sh "cd \"#{dir}\" && zip -r \"#{ipa_path}\" #{all_folders}"
end
end
error do |lane, exception|
# if is_ci?
# slack(
# message: exception.message,
# channel: "new_builds",
# success: false
# )
# 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://github.com/fastlane/fastlane/blob/master/fastlane/docs/Actions.md
# fastlane reports which actions are used
# No personal data is recorded. Learn more at https://github.com/fastlane/enhancer
`./fastlane/Appfile`
app_identifier "com.futuregroup.futureuniverse" # The bundle identifier of your app
apple_id "developer@futureuniverse.com" # Your Apple email address
#team_id "4TM2DK894Y" # Developer Portal Team ID
# you can even provide different app identifiers, Apple IDs and team names per lane:
# More information: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Appfile.md
fastlane gems
| Gem | Version | Update-Status |
|---|---|---|
| fastlane | 2.14.2 | ✅ Up-To-Date |
Loaded fastlane plugins:
| Plugin | Version | Update-Status |
|---|---|---|
| fastlane-plugin-appicon | 0.4.1 | ✅ Up-To-Date |
| fastlane-plugin-act | 1.0.1 | ✅ Up-To-Date |
Loaded gems
| Gem | Version |
|---|---|
| did_you_mean | 1.0.0 |
| bundler | 1.13.6 |
| io-console | 0.4.5 |
| CFPropertyList | 2.3.5 |
| i18n | 0.8.0 |
| json | 1.8.6 |
| minitest | 5.10.1 |
| thread_safe | 0.3.5 |
| tzinfo | 1.2.2 |
| activesupport | 4.2.7.1 |
| public_suffix | 2.0.5 |
| addressable | 2.5.0 |
| babosa | 1.0.2 |
| fastimage | 2.0.1 |
| colored | 1.2 |
| highline | 1.7.8 |
| commander | 4.4.3 |
| dotenv | 2.2.0 |
| excon | 0.54.0 |
| multipart-post | 2.0.0 |
| faraday | 0.11.0 |
| unf_ext | 0.0.7.2 |
| unf | 0.1.4 |
| domain_name | 0.5.20161129 |
| http-cookie | 1.0.3 |
| faraday-cookie_jar | 0.0.6 |
| faraday_middleware | 0.11.0.1 |
| gh_inspector | 1.0.3 |
| jwt | 1.5.6 |
| little-plugger | 1.1.4 |
| multi_json | 1.12.1 |
| logging | 2.1.0 |
| memoist | 0.15.0 |
| os | 0.9.6 |
| signet | 0.7.3 |
| googleauth | 0.5.1 |
| httpclient | 2.8.3 |
| hurley | 0.2 |
| mime-types-data | 3.2016.0521 |
| mime-types | 3.1 |
| uber | 0.0.15 |
| representable | 2.3.0 |
| retriable | 2.1.0 |
| google-api-client | 0.9.26 |
| mini_magick | 4.5.1 |
| multi_xml | 0.6.0 |
| plist | 3.2.0 |
| rubyzip | 1.2.0 |
| security | 0.1.3 |
| slack-notifier | 1.5.1 |
| terminal-notifier | 1.7.1 |
| unicode-display_width | 1.1.3 |
| terminal-table | 1.7.3 |
| word_wrap | 1.0.0 |
| claide | 1.0.1 |
| nanaimo | 0.2.3 |
| xcodeproj | 1.4.2 |
| rouge | 1.11.1 |
| xcpretty | 0.2.4 |
| xcpretty-travis-formatter | 0.0.4 |
| badge | 0.7.1 |
| fastlane-plugin-act | 1.0.1 |
| fastlane-plugin-appicon | 0.4.1 |
generated on: 2017-02-06
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Comments: 17 (7 by maintainers)
It seems like this issue might be related to code signing 🚫
Have you seen our new Code Signing Troubleshooting Guide? It will help you resolve the most common code signing issues 👍