fastlane-old / deliver Goto Github PK
View Code? Open in Web Editor NEWUpload screenshots, metadata and your app to the App Store using a single command
Home Page: https://fastlane.tools
Upload screenshots, metadata and your app to the App Store using a single command
Home Page: https://fastlane.tools
I wanted deliver
to be fully transparent, since it handles your iTunes credentials.
It would be great to provide an option in the Deliverfile
which hides unnecessary output.
At the moment the video uploaded manually to iTunes Connect just gets deleted after running deliver
If I directly create new version of app in iTunes Connect, They automatically use former screenshots. So I don't need to upload new one.
In using deliver, even if I set "screenshots_path" to comment, It might tries to upload pictures.
As a result, there is only blank space and I must upload screenshots again.
Could you make this easier?
Thanks
In my organization, we have to specify -t DAV as a parameter to use iTMSTransporter properly, because Signiant and Aspera ports are not cool with our firewall. I imagine there are others with the same situation, so it might be worthwhile to allow the user to specify a Transport method.
Would it be possible in future to upload app icon for itunes connect with deliver?
It looks like deliver had such functionality (lines 259-281 in itunes_connect.rb) but now it's commented out.
This may just be an idea from a noob, but I ran deliver init
before I had populated much of my iTunesConnect app metadata. After filling in the metadata online, I was looking for a way to update the local .json file based on my online edits.
May be interesting to add a command like
deliver pullMetadata
(or something like that).
I understand that the end goal is to have the metadata's origin be the .json
file and this may be an edge case. But just throwing it out there.
Thanks!
I have a precompiled IPA. Shenzhen's ipa info
shows the correct App ID. But when I try to submit using deliver I get error: App Identifier of IPA does not match with the given one ('net.app.id' != 'com.app.frameworkid')
.
It looks like it's trying to validate the Deliverfile
app id against the app id of one of the frameworks I use in my project rather than the app id of the project itself.
deliver init --trace
Do you want Deliver to automatically create the Deliverfile for you based on your current app? (y/n)
y
App Identifier of your app (e.g. at.felixkrause.app_name): br.com.banese.app
ERROR [2014-11-07 22:13:23.07]: Could not find object 'https://itunes.apple.com/lookup?bundleId=br.com.banese.app' using the iTunes API
INFO [2014-11-07 22:13:23.07]: Could not find Apple ID based on the app identifier in the US App Store. Maybe the app is not yet in the store?
Apple ID of your app (e.g. 284882215): 727238928
INFO [2014-11-07 22:13:28.38]: Going to download app metadata from iTunesConnect
INFO [2014-11-07 22:13:34.47]: Successfully downloaded the latest package from iTunesConnect.
INFO [2014-11-07 22:13:34.47]: Modifying version '2.1' of app br.com.banese.app
~/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/deliver-0.2.0/lib/deliver/deliverfile/deliverfile_creator.rb:79:in `generate_deliver_file': uninitialized constant Deliver::DeliverfileCreator::JSON (NameError)
from ~/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/deliver-0.2.0/lib/deliver/deliverfile/deliverfile_creator.rb:59:in `create_based_on_identifier'
I'm pretty sure that this happens because of duplicates in resulting_path
(app_metadata.rb:303) extensions:
resulting_path = "#{current_path}/**/*.{png,PNG,jpg,JPG,jpeg,JPEG}"
My assumption is that this happens on case-insensitive partitions. Possible fix could be to make sure that all values in Dir[resulting_path]
are unique.
Here's an example of what's returned:
["./deliver/screenshots/da-DK/ipad 1.png", "./deliver/screenshots/da-DK/ipad 2.png",
"./deliver/screenshots/da-DK/ipad 3.png", "./deliver/screenshots/da-DK/ipad 4.png",
"./deliver/screenshots/da-DK/iphone 1.png", "./deliver/screenshots/da-DK/iphone 2.png",
"./deliver/screenshots/da-DK/iphone 3.png", "./deliver/screenshots/da-DK/iphone 4.png",
"./deliver/screenshots/da-DK/iphone 5 1.png", "./deliver/screenshots/da-DK/iphone 5 2.png",
"./deliver/screenshots/da-DK/iphone 5 3.png", "./deliver/screenshots/da-DK/iphone 5 4.png",
"./deliver/screenshots/da-DK/iphone 5 5.png", "./deliver/screenshots/da-DK/iphone 5.png",
"./deliver/screenshots/da-DK/iphone 6 1.png", "./deliver/screenshots/da-DK/iphone 6 2.png",
"./deliver/screenshots/da-DK/iphone 6 3.png", "./deliver/screenshots/da-DK/iphone 6 4.png",
"./deliver/screenshots/da-DK/iphone 6 5.png", "./deliver/screenshots/da-DK/iphone 6+ 1.png",
"./deliver/screenshots/da-DK/iphone 6+ 2.png", "./deliver/screenshots/da-DK/iphone 6+ 3.png",
"./deliver/screenshots/da-DK/iphone 6+ 4.png", "./deliver/screenshots/da-DK/iphone 6+ 5.png",
"./deliver/screenshots/da-DK/ipad 1.png", "./deliver/screenshots/da-DK/ipad 2.png",
"./deliver/screenshots/da-DK/ipad 3.png", "./deliver/screenshots/da-DK/ipad 4.png",
"./deliver/screenshots/da-DK/iphone 1.png", "./deliver/screenshots/da-DK/iphone 2.png",
"./deliver/screenshots/da-DK/iphone 3.png", "./deliver/screenshots/da-DK/iphone 4.png",
"./deliver/screenshots/da-DK/iphone 5 1.png", "./deliver/screenshots/da-DK/iphone 5 2.png",
"./deliver/screenshots/da-DK/iphone 5 3.png", "./deliver/screenshots/da-DK/iphone 5 4.png",
"./deliver/screenshots/da-DK/iphone 5 5.png", "./deliver/screenshots/da-DK/iphone 5.png",
"./deliver/screenshots/da-DK/iphone 6 1.png", "./deliver/screenshots/da-DK/iphone 6 2.png",
"./deliver/screenshots/da-DK/iphone 6 3.png", "./deliver/screenshots/da-DK/iphone 6 4.png",
"./deliver/screenshots/da-DK/iphone 6 5.png", "./deliver/screenshots/da-DK/iphone 6+ 1.png",
"./deliver/screenshots/da-DK/iphone 6+ 2.png", "./deliver/screenshots/da-DK/iphone 6+ 3.png",
"./deliver/screenshots/da-DK/iphone 6+ 4.png", "./deliver/screenshots/da-DK/iphone 6+ 5.png"]
/Users/kovpas/.rvm/gems/ruby-2.2.0/gems/deliver-0.4.1/lib/deliver/app_metadata.rb:249:in `add_screenshot': Only 5 screenshots are allowed per language per device type (iOS-iPad) (Deliver::AppMetadataParameterError)
First of all, congrats for the program—I'm sure it's going to be a massive success.
I'm working on an app that has never been released, and the code seems not to take that into account:
def get_live_version(app)
begin
verify_app(app)
open_app_page(app)
return first(".status.ready").text.split(" ").first
rescue Exception => ex
error_occured(ex)
end
end
Therefore, I get an error:
(...)deliver/itunes_connect.rb:177:in `get_live_version': undefined method `text' for nil:NilClass (NoMethodError)
Can something be done here?
Thanks!
Think I found another bug. Had a brief wifi outage during the transporter upload, which caused it to print:
[Transpoter Output]: ERROR: Communication error. Please use diagnostic mode to check connectivity. You need to have outbound access to TCP port 443.
[Transpoter Output]: ERROR: An exception has occurred: Operation timed out
[Transpoter Output]: DEBUG: java.net.SocketException: Operation timed out
However, transporter automatically re-tried and succeeded (could see it retry and succeed in the log messages). It finished by printing this:
[Transpoter Output]: INFO: The package: /tmp/687072002.itmsp has been successfully uploaded.
[Transpoter Output]: DBG-X: Returning 0
but deliver aborted with this message:
error: Error uploading ipa file. Use --trace to view backtrace
I guess deliver is parsing the error message in the transporter log and aborting, but it seems like it should first consider the return code from transporter, and only try to parse errors if transporter returns a failed code (non zero).
I did wait 10 minutes and verified that the binary was in fact uploaded and accepted by iTC. I only had to choose the build and hit the Submit button.
Oh and one more, as I type this message I notice that [Transporter Output] is mis-spelled ;)
I have fresh new app created in iTunesConntect, aka, have not released in App Store.
When I deliver the compiled ipa, it failed with
INFO [2014-12-09 15:08:30.82]: Got all information needed to deploy a new update ('1.2.2') for app 'xx.oo'
INFO [2014-12-09 15:08:33.25]: Logging into iTunesConnect
INFO [2014-12-09 15:08:39.34]: Successfully logged into iTunesConnect
INFO [2014-12-09 15:08:39.34]: Opening detail page for app 931751802 - xx.oo
DEBUG [2014-12-09 15:08:45.72]: Could not fetch version number of the live version for app 931751802 - xx.oo.
INFO [2014-12-09 15:08:45.72]: Opening detail page for app 931751802 - xx.oo
WARN [2014-12-09 15:08:53.96]: Can not create version 1.2.2 on iTunesConnect. Maybe it was already created.
INFO [2014-12-09 15:08:53.97]: Check out 'https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app/931751802' what's the latest version.
error: Some other version was created instead of the one you defined ('1.2.2').. Use --trace to view backtrace
Presume this is meant to have a URL after screenshot upload:
# This folder has to include one folder for each language
# More information about automatic screenshot upload:
screenshots_path "./deliver/screenshots/"
I had created a new version manually in iTunesConnect, which copied across all the data from the previous version apart from the What's New section.
(I have over 80 apps to update with about 12 localisations of What's New so wanted to automate this with a loop, so am not using a DeliverFile. Fortunately I tested with a single update first.)
I used the following code with deliver, which apparently worked fine and did the required updates BUT wiped out the screenshots in the process.
require 'deliver'
app = Deliver::App.new(app_identifier: 'com.lingopal.Language.af')
whatsNew = {"en-US" => "Improved notification service", # English
"pt-BR" => "Serviço de notificação aprimorado", # Brazilian
"fr-CA" => "French Service de notification améliorée", # Canadian
"da-DK" => "Forbedret meddelelse tjeneste", # Danish
"nl-NL" => "Verbeterde meldingsservice", # Dutch
"fi-FI" => "Parempi ilmoituspalvelu", # Finnish
"fr-FR" => "Service de notification améliorée", # French
"de-DE" => "Verbesserte Benachrichtigungsdienst", # German
"el-GR" => "Βελτιωμένη υπηρεσία ειδοποίησης", # Greek
"id-ID" => "Peningkatan layanan pemberitahuan", # Indonesian
"it-IT" => "Correzioni minori", # Italian
"ja-JP" => "細かい修正", # Japanese
"ko-KR" => "마이너 수정", # Korean
"ms-MY" => "Pembaikan kecil", # Malay
"es-MX" => "Correcciones menores", # Mexican
"no-NO" => "Mindre feilrettinger", # Norwegian
"pt-PT" => "Pequenas correções", # Portugese
"ru-RU" => "Мелкие исправления", # Russian
"cmn-Hans" => "小幅修正", # Simplified Chinese
"es-ES" => "Correcciones menores", # Spanish
"sv-SE" => "Mindre korrigeringar", # Swedish
"th-TH" => "การแก้ไขเล็กน้อย", # Thai
"cmn-Hant" => "小幅修正", # Traditional Chinese
"tr-TR" => "Küçük düzeltmeler", # Turkish
"vi-VI" => "Sửa chữa nhỏ" # Vietnamese
}
status = app.get_app_status # => Waiting for Review
print status
app.metadata.update_changelog(whatsNew)
#app.metadata.update_title({ "en-US" => "iPhone App Title" })
#app.metadata.set_all_screenshots_from_path("./screenshots")
app.upload_metadata!
Trying to upload a new version with deliver I always get the following error:
"Can not create version 1.2.0 on iTunesConnect. Maybe it was already created."
The current app version on iTunesConnect is 1.1.4 so this should not be the problem.
Deliverfile:
default_language "de-DE"
email "xxxxxxxxx"
app_identifier "de.xxxxxxxxxx.xxx"
version '1.2.0' (error also occurs if removed)
ipa do
system("ipa build -w xxxxx.xcworkspace -c Release -s "xxxxxxxxxx" --archive")
"./xxxxxxxx.ipa"
end
Trace:
/Library/Ruby/Gems/2.0.0/gems/deliver-0.2.2/lib/deliver/itunes_connect.rb:516:in wait_for_elements': Couldn't find element '.page-subnav' after waiting for quite some time (Deliver::ItunesConnect::ItunesConnectGeneralError) from /Library/Ruby/Gems/2.0.0/gems/deliver-0.2.2/lib/deliver/itunes_connect.rb:121:in
open_app_page'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.2.2/lib/deliver/itunes_connect.rb:207:in create_new_version!' from /Library/Ruby/Gems/2.0.0/gems/deliver-0.2.2/lib/deliver/app.rb:138:in
create_new_version!'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.2.2/lib/deliver/deliver_process.rb:94:in verify_app_on_itunesconnect' from /Library/Ruby/Gems/2.0.0/gems/deliver-0.2.2/lib/deliver/deliver_process.rb:30:in
run'
[...]
Thanks for help.
What's missing to also support Mac Apps:
Everything else should work out of the box.
Hi. Can you provide example for *.itmsp/metadata.xml in case when I want to load ipa for beta testing via testflight?
Checking itunesconnect only 0.0.6 version and 0.0.8 in pre-release is existing
Check out 'https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app/XXXXXX' what's the latest version.
/usr/local/lib/ruby/gems/2.1.0/gems/deliver-0.4.2/lib/deliver/itunes_connect.rb:248:in `rescue in create_new_version!': Some other version was created instead of the one you defined ('0.0.9'). (RuntimeError)
I tried running deliver init on my MacOSX Yosemite but here the error message I got:
/Users/sarbogast/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:2052:in raise_if_conflicts': can't activate json-1.6.8, already activated json-1.8.1 (Gem::LoadError) from /Users/sarbogast/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/specification.rb:1262:in
activate'
from /Users/sarbogast/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:96:in block in require' from /Users/sarbogast/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:95:in
each'
from /Users/sarbogast/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:95:in require' from /Users/sarbogast/.rvm/gems/ruby-2.1.0@global/gems/deliver-0.3.6/lib/deliver.rb:1:in
<top (required)>'
from /Users/sarbogast/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:73:in require' from /Users/sarbogast/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:73:in
require'
from /Users/sarbogast/.rvm/gems/ruby-2.1.0@global/gems/deliver-0.3.6/bin/deliver:5:in <top (required)>' from /Users/sarbogast/.rvm/rubies/ruby-2.1.0/bin/deliver:23:in
load'
from /Users/sarbogast/.rvm/rubies/ruby-2.1.0/bin/deliver:23:in <main>' from /Users/sarbogast/.rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in
eval'
from /Users/sarbogast/.rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in `
Since I know absolutely nothing about Ruby, I don't know what to do about it. Any idea?
When Deliver gets its metadata from iTunes Connect it gets the info for the in-app purchase related to the app instead of the app itself. The app I tried this with contains just one in-app purchase.
More info may be needed to locate this bug.
Most developers have more than one Apple ID (having only one wouldn't make code signing that much fun)
The idea would be to define the Apple ID in the Deliverfile
and still store the password in the keychain.
Deliver
will then lookup the password for a given Apple ID in the keychain. Therefore, once setup, you don't have to think about switching Apple accounts.
IpaUploader
. It will ultimately use transporter
to upload the binary.Deliver
will proceed with publishing to iTunes Connect anyway.In my case there was already such a version existing on iTunes Connect. However it'd be nice if Deliver would raise an exception if there are any problems with upload.
iTunes connect error:
DEBUG [2014-11-20 12:33:32.74]: [Transpoter Output]: ERROR: ERROR ITMS-9000: "Redundant Binary Upload. There already exists a binary upload with build '244' for version '1.12.0'"
DEBUG [2014-11-20 12:33:32.74]: [Transpoter Output]: ERROR: ERROR ITMS-9000: "This bundle is invalid. The value for key CFBundleShortVersionString [1.12.0] in the Info.plist file must contain a higher version than that of the previously approved version [1.12.0]."
Hi,
Thanks for making this, it's going to be a huge timesaver.
I'm getting the error app.rb:34: Can't assign to nil
when I run deliver init. Any ideas?
This is on OS X Yosemite, using ruby-1.9.3-p547 (installed with RVM) and homebrew updated and phantomjs and XCode 6.1+commandline tools installed.
Installed deliver using:
$ sudo gem install deliver -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2
deliver init
output:
$ deliver init
/Users/gijs/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require': /Users/gijs/.rvm/gems/ruby-1.9.3-p547@global/gems/deliver-0.2.1/lib/deliver/app.rb:34: syntax error, unexpected tLABEL, expecting ')' (SyntaxError)
def initialize(apple_id: nil, app_identifier: nil)
^
/Users/gijs/.rvm/gems/ruby-1.9.3-p547@global/gems/deliver-0.2.1/lib/deliver/app.rb:34: Can't assign to nil
def initialize(apple_id: nil, app_identifier: nil)
^
/Users/gijs/.rvm/gems/ruby-1.9.3-p547@global/gems/deliver-0.2.1/lib/deliver/app.rb:153: syntax error, unexpected keyword_end, expecting $end
from /Users/gijs/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/gijs/.rvm/gems/ruby-1.9.3-p547@global/gems/deliver-0.2.1/lib/deliver.rb:4:in `<top (required)>'
from /Users/gijs/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/gijs/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/gijs/.rvm/gems/ruby-1.9.3-p547@global/gems/deliver-0.2.1/bin/deliver:5:in `<top (required)>'
from /Users/gijs/.rvm/rubies/ruby-1.9.3-p547/bin/deliver:23:in `load'
from /Users/gijs/.rvm/rubies/ruby-1.9.3-p547/bin/deliver:23:in `<main>'
from /Users/gijs/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:in `eval'
from /Users/gijs/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:in `<main>'
iTunes Connect supports screenshots in JPEG format, but deliver
doesn't let me upload them. It seems that the reason is this regexp in app_metadata.rb.
Modifying version '2.2' of app br.com.banese.app
error: no implicit conversion of String into Integer. Use --trace to view backtrace
For some reason if I remove the keywords line it works.
Hi Felix,
the PDF generation throws an error:
$ deliver --version
deliver 0.3.5
deliver --trace
[...]
INFO [2014-11-18 20:41:44.75]: [PDF] Exporting locale 'ja-JP' for app with title 'ミニペディア - オフライン百科事典 ウィキペディアリーダー'
/Library/Ruby/Gems/2.0.0/gems/ttfunk-1.4.0/lib/ttfunk.rb:34:in `verify_and_open': /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/fonts/mona.ttf not found (ArgumentError)
from /Library/Ruby/Gems/2.0.0/gems/ttfunk-1.4.0/lib/ttfunk.rb:13:in `open'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/font/ttf.rb:347:in `read_ttf_file'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/font/ttf.rb:27:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/font.rb:292:in `new'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/font.rb:292:in `load'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/font.rb:244:in `find_font'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/font.rb:58:in `font'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:429:in `find_font_for_this_glyph'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:433:in `find_font_for_this_glyph'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:411:in `block (2 levels) in analyze_glyphs_for_fallback_font_support'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:410:in `each_char'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:410:in `block in analyze_glyphs_for_fallback_font_support'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/font.rb:208:in `save_font'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:409:in `analyze_glyphs_for_fallback_font_support'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:391:in `block in process_fallback_fonts'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:390:in `each'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:390:in `process_fallback_fonts'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:371:in `normalize_encoding'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:351:in `normalized_text'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:215:in `block (3 levels) in render'
from /Library/Ruby/Gems/2.0.0/gems/pdf-core-0.4.0/lib/pdf/core/text.rb:182:in `text_rendering_mode'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:212:in `block (2 levels) in render'
from /Library/Ruby/Gems/2.0.0/gems/pdf-core-0.4.0/lib/pdf/core/text.rb:204:in `character_spacing'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:211:in `block in render'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/font.rb:208:in `save_font'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text/formatted/box.rb:210:in `render'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text.rb:365:in `fill_formatted_text_box'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text.rb:220:in `formatted_text'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/text.rb:168:in `text'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/pdf_generator.rb:35:in `block (2 levels) in render'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/pdf_generator.rb:29:in `each'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/pdf_generator.rb:29:in `block in render'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/document.rb:226:in `instance_eval'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/document.rb:226:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/document.rb:142:in `new'
from /Library/Ruby/Gems/2.0.0/gems/prawn-1.3.0/lib/prawn/document.rb:142:in `generate'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/pdf_generator.rb:14:in `render'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/deliver_process.rb:192:in `verify_pdf_file'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/deliver_process.rb:42:in `run'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/deliverer.rb:109:in `finished_executing_deliver_file'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/deliverfile/deliverfile.rb:31:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/deliverer.rb:61:in `new'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/deliverer.rb:61:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/commands/run.rb:12:in `new'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.3.5/lib/deliver/commands/run.rb:12:in `block (2 levels) in <top (required)>'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:155:in `run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in `run_active_command'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/import.rb:10:in `block in <top (required)>'
Should mona.ttf
be shipped with deliver or are we supposed to download the font ourselves? If yes, would you be so kind and add documentation where to get it from and where to put it?
Thanks!
Robert
We have ~20 screenshots to upload, so we want them organized nicely.
Currently, screenshot search happens only in screenshots_path
and not in its subdirectory, forbids us to put screenshot for different dimensions in different folders.
Ran deliver init, entered my iTC username, and then:
App Identifier of your app (e.g. at.felixkrause.app_name): com.maker.polaris
ERROR [2014-11-11 17:47:14.60]: Could not find object 'https://itunes.apple.com/lookup?bundleId=com.maker.polaris' using the iTunes API
INFO [2014-11-11 17:47:14.60]: Could not find Apple ID based on the app identifier in the US App Store. Maybe the app is not yet in the store?
If I hit that itunes URL in my web browser it returns app data
We are running our app on Travis CI. On the CI we run a script that distributes a beta build using Deliver and TestFlight to iTunesConnect. The distribution is successful, but it looks like the CI is waiting for the build to become active on iTunesConnect, which takes too long. This causes the CI to time out. Is there any way we can use Deliver to distribute a build without waiting for a response that it's active?
Hi,
great work on this tool, it is really really helpful! I wanted to suggest an improvement:
Once upload is successful, it is the perfect time to do additional things like:
To do that it would be very helpful to pass the build information to the block such as:
success do |build|
end
It would be nice to have all metadata, but most importantly, version and is_beta.
Thanks!
My app is brand new, never existed in app store before. Can deliver
automate the initial creation or do I have to manually do that first step? If so I'd like to request this feature to be added.
deliver seems to ignore my changelog() statement completely, it is omitted in the output metadata.xml and PDF.
Discussion from #36 as issue here.
When providing both ipa
and beta_ipa
, deliver
will execute both blocks, which results in building the app twice.
This is more of a general note, but it'd be great if Deliver
could display warnings generated by Transporter in a bit more... visible manner. 😉
For instance, right now warnings get lost in huge amounts of additional logs:
DEBUG [2014-11-20 12:33:32.74]: [Transpoter Output]: ERROR: ERROR ITMS-9000: "Redundant Binary Upload. There already exists a binary upload with build '244' for version '1.12.0'"
DEBUG [2014-11-20 12:33:32.74]: [Transpoter Output]: ERROR: ERROR ITMS-9000: "This bundle is invalid. The value for key CFBundleShortVersionString [1.12.0] in the Info.plist file must contain a higher version than that of the previously approved version [1.12.0]."
DEBUG [2014-11-20 12:33:32.74]: [Transpoter Output]: DBG-X: The error code is: 1102
DEBUG [2014-11-20 12:33:32.74]: [Transpoter Output]: INFO: Done performing authentication.
DEBUG [2014-11-20 12:33:32.81]: [Transpoter Output]: INFO: The following warnings were received from Apple's web service ...
DEBUG [2014-11-20 12:33:32.81]: [Transpoter Output]: WARN: WARNING ITMS-9000: "Missing 64-bit support. Starting February 1, 2015, new iOS apps uploaded to the App Store must include 64-bit support and be built with the iOS 8 SDK, included in Xcode 6 or later. To enable 64-bit in your project, we recommend using the default Xcode build setting of “Standard architectures” to build a single binary with both 32-bit and 64-bit code."
DEBUG [2014-11-20 12:33:32.86]: [Transpoter Output]: DBG-X: Returning 1
INFO [2014-11-20 12:33:32.93]: Distributing the latest build to Beta Testers.
INFO [2014-11-20 12:33:32.95]: Logging into iTunesConnect
Would be great if we could have this printed at the end of upload process. Or perhaps written into a file. 😉
What I'd, ultimately, love to see is sort of a information that everything was validated and there were no errors/warnings when a build was uploaded (Xcode has a screen which says that exact thing).
Related #64 (comment)
It's possible to change the version number on the bottom of the page
Instead of activating newest build in currently testing version (at least same as uploading) it enables testing of top of list build/version. I.e. I have two version branches - 2.1 which is beta version and 2.0 version which is stable but needs testing of features before release. Uploading 2.0.5 version package activates disabled 2.1 testing.
In other words deliver must search for version same as uploaded and activate same build as uploaded package. If its hard to do, better to activate testing of top build of currently active for testing version.
Hi,
How is it possible to hide the traces, because the keyword "hide_transporter_output" seems not to work?
email '[email protected]'
hide_transporter_output # remove the '#' in the beginning of the line, to hide the output while uploading
app_identifier "com.xxx.xxxx"
apple_id "1234567"
Thanks
Robert
In console output Jenkins shows rotating busy icon and hangs forever. I use "Execute shell command" as last build command with "deliver" as content.
Hi @KrauseFx,
I just started using Deliver, which seems to be an epic initiative.
However, it seems to be doubling the amount of screenshots included, thus raising the exception Only 5 screenshots are allowed per language per device type (iOS-3.5-in).
when including more than two screenshots per device type.
Which is generated from this file structure:
I'm not quite sure if I'm doing something wrong or if this is actually a bug. Looking forward to hear from you.
Related: #22 (comment)
It would useful be very useful to have support for in app purchases. At the moment these have to be submitted separately from the rest of the app metadata.
I'm moving this a separate issue from #19 (comment) as it seems its a whole different problem.
I'm receiving following error after running deliver init
INFO [2014-11-14 17:34:39.69]: Going to download app metadata from iTunesConnect
INFO [2014-11-14 17:34:40.13]: Successfully downloaded the latest package from iTunesConnect.
/Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/app_metadata.rb:431:in `read': No such file or directory - /tmp/627716885.itmsp//metadata.xml (Errno::ENOENT)
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/app_metadata.rb:431:in `parse_package'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/app_metadata.rb:63:in `initialize'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/app.rb:112:in `new'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/app.rb:112:in `metadata'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/deliverfile/deliverfile_creator.rb:56:in `create_based_on_identifier'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/deliverfile/deliverfile_creator.rb:27:in `create'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/commands/init.rb:10:in `block (2 levels) in <top (required)>'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/commander-4.2.1/lib/commander/command.rb:155:in `run'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/commander-4.2.1/lib/commander/runner.rb:421:in `run_active_command'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/commander-4.2.1/lib/commander/runner.rb:81:in `run!'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/commander-4.2.1/lib/commander/delegates.rb:8:in `run!'
from /Users/eldudi/.rvm/gems/ruby-2.0.0-p576@ios/gems/commander-4.2.1/lib/commander/import.rb:10:in `block in <top (required)>'
From things that are special about this app: the bundle identifier that's visible in Info.plist
is different from the one that is actually on the app store (the one from .plist has an additional suffix). Is there any chance this could break things?
First off all thanks for this great tool.
Using your gist I tried to use Deliver for multiple applications in 1 project file.
https://gist.github.com/KrauseFx/3e7886f0590a9db64487
when I run deliver the terminal hangs and is not doing anything..
When I interrupt the command (after some minutes) I get this..
https://cloudup.com/cnatuECjPAS
Do you know a solution?
Thanks
Deliver installed fine. I then created a folder for it (~/Developer/itc/NightCap/) and CD'd into that folder in terminal.
I then ran 'deliver init' to create the initial deliver file for an existing app. It requested access to my ITC credentials (already in keychain), I gave it 'always' permission.
The App ID I copied + pasted from ITC.
At this point it seems to download the package from ITC but then fails to read a file. I've tried a couple of times with 2 different app IDs, same result. Stack trace:
deliver init --trace
Do you want Deliver to automatically create the Deliverfile for you based on your current app? (y/n)
y
First, you need to login with your iTunesConnect credentials.
This is necessary to fetch the latest metadata from your app and use it to create a Deliverfile for you.
If you have previously entered your credentials already, you will not be asked again.
App Identifier of your app (e.g. at.felixkrause.app_name): com.interealtime.NightCap
INFO [2014-11-05 21:24:22.78]: Going to download app metadata from iTunesConnect
INFO [2014-11-05 21:24:23.08]: Successfully downloaded the latest package from iTunesConnect.
/Library/Ruby/Gems/2.0.0/gems/deliver-0.1.1/lib/deliver/app_metadata.rb:431:in `read': No such file or directory - /tmp/486414195.itmsp//metadata.xml (Errno::ENOENT)
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.1.1/lib/deliver/app_metadata.rb:431:in `parse_package'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.1.1/lib/deliver/app_metadata.rb:63:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.1.1/lib/deliver/app.rb:105:in `new'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.1.1/lib/deliver/app.rb:105:in `metadata'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.1.1/lib/deliver/deliverfile/deliverfile_creator.rb:56:in `create_based_on_identifier'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.1.1/lib/deliver/deliverfile/deliverfile_creator.rb:27:in `create'
from /Library/Ruby/Gems/2.0.0/gems/deliver-0.1.1/lib/deliver/commands/init.rb:10:in `block (2 levels) in <top (required)>'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:180:in `call'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/command.rb:155:in `run'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:421:in `run_active_command'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/runner.rb:81:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/delegates.rb:8:in `run!'
from /Library/Ruby/Gems/2.0.0/gems/commander-4.2.1/lib/commander/import.rb:10:in `block in <top (required)>'
After doing a metadata-only upload, deliver left the .itmsp
directory in the current directory.
It should create it in a temporary directory and clear it after a success.
It would be even better to have an option to set if it should be cleared
It seems that deliver fails to parse website if Apple adds an additional information alert to the top of the window.
Here's the stack trace:
Error logging in user (...) with the given password. Make sure you entered them correctly.
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/itunes_connect.rb:96:in `rescue in login'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/itunes_connect.rb:92:in `login'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/itunes_connect.rb:58:in `initialize'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/app.rb:69:in `new'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/app.rb:69:in `itc'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/deliver-0.3.1/lib/deliver/app.rb:76:in `get_app_status'
/Users/paweldudek/Workspace/showcase-ios/Project/ios-build/deliver.rake:9:in `block (2 levels) in <top (required)>'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/task.rb:246:in `call'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/task.rb:241:in `each'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/application.rb:101:in `each'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/gems/rake-10.0.4/lib/rake/application.rb:70:in `run'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/bin/ruby_executable_hooks:15:in `eval'
/Users/paweldudek/.rvm/gems/ruby-2.0.0-p576@ios/bin/ruby_executable_hooks:15:in `<main>'
See the attached screenshot. Stack and error suggest that signing fail, though the screenshot clearly states that I've been logged in 😉
I'm also attaching part of the web page source code as it might be helpful:
<!-- "Warnings" (non-fatal warning messages) -->
<div id="warnings" class="homepage-msg-container ng-scope" ng-show="hasWarnings">
<div class="pagemessage warning">
<!-- ngRepeat: warning in warnings --><p ng-repeat="warning in warnings" class="ng-scope">
<span ng-bind-html="showHtml(warning.header)" class="alertHeader ng-binding">Agreements, Tax, and Banking</span>
<span ng-bind-html="showHtml(warning.message)" class="alertMsg ng-binding"><p>An updated contract is now available. Before you can offer your content in new iTunes Store territories, a user with the Legal role must agree to the new contract in the <strong>Agreements, Tax, and Banking</strong> module.<br><br>If your organization does not have a Legal user, see the <a href="/WebObjects/iTunesConnect.woa/wa/jumpTo?page=faqIndex&qa=createlegaluser">Contracts FAQ</a> for details on how to create one.</p></span>
</p><!-- end ngRepeat: warning in warnings -->
</div>
</div>
<!-- News Feed -->
<div id="news" class="homepage-msg-container ng-scope" ng-show="hasNews">
<div class="news-container" ng-class="{'truncated' : newsTruncated, 'show-toggle' : hasLongNews }">
<!-- <div class="news-container truncated"> -->
<h1 class="ng-binding">News</h1>
<div class="ellipsis">
<div>
<ul>
<!-- ngRepeat: newsitem in news --><li ng-repeat="newsitem in news" class="ng-scope">
<div ng-bind-html="showHtml(newsitem.header)" class="newsheader ng-binding"><h2><b>TestFlight Beta Testing for External Testers</b></h2></div>
<div ng-bind-html="showHtml(newsitem.message)" class="newstxt ng-binding"><p>You can now invite up to 1000 users to test prerelease builds of your app. To do so, go to External Testers in Prerelease for the app that you want to test and add external testers simply by sending an email invitation. The TestFlight app will allow them to install the prerelease build on their iOS device, receive updates, and provide feedback, all within the TestFlight app. </p><p><a href="https://itunesconnect.apple.com/downloads/Documentation/TestFlight-v09-iTC-Export-sw.mov">For more information, watch the video tutorial.</a></p></div>
</li><!-- end ngRepeat: newsitem in news -->
</ul>
</div>
</div>
<a class="show-more-news" href="javascript:void(0)" ng-click="toggleNewsVisibility()">
<span ng-show="newsTruncated" class="ng-binding ng-hide">More</span>
<span ng-show="!newsTruncated" class="ng-binding">Less</span>
</a>
</div>
</div>
A good feature enhancement would be to download and install the latest provisioning profiles and certificates for your app as they can change constantly by adding new developers or new devices.
It would be nice if we had an option to disable immediate submission for review. It's always nice to walk through all information to check it before pushing scary red button, that will take 5-10 days on the App Store review team side.
I searched through documentation and didn't find it. Do you have such option in plans or implemented?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.