Class: Pilot::BuildManager

Inherits:
Manager
  • Object
show all
Defined in:
lib/pilot/build_manager.rb

Instance Attribute Summary

Attributes inherited from Manager

#config

Instance Method Summary collapse

Methods inherited from Manager

#app, #fetch_app_id, #fetch_app_identifier, #login, #start

Instance Method Details

#list(options) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/pilot/build_manager.rb', line 47

def list(options)
  start(options)
  if config[:apple_id].to_s.length == 0 and config[:app_identifier].to_s.length == 0
    config[:app_identifier] = ask("App Identifier: ")
  end

  builds = app.all_processing_builds + app.builds
  # sort by upload_date
  builds.sort! {|a, b| a.upload_date <=> b.upload_date }
  rows = builds.collect { |build| describe_build(build) }

  puts Terminal::Table.new(
    title: "#{app.name} Builds".green,
    headings: ["Version #", "Build #", "Testing", "Installs", "Sessions"],
    rows: rows
  )
end

#upload(options) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/pilot/build_manager.rb', line 3

def upload(options)
  start(options)

  UI.user_error!("No ipa file given") unless config[:ipa]

  UI.success("Ready to upload new build to TestFlight (App: #{app.apple_id})...")

  plist = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(config[:ipa]) || {}
  platform = plist["DTPlatformName"]
  platform = "ios" if platform == "iphoneos" # via https://github.com/fastlane/spaceship/issues/247
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(app_id: app.apple_id,
                                                                  ipa_path: config[:ipa],
                                                              package_path: "/tmp",
                                                                  platform: platform)

  transporter = FastlaneCore::ItunesTransporter.new(options[:username])
  result = transporter.upload(app.apple_id, package_path)

  unless result
    UI.user_error!("Error uploading ipa file, for more information see above")
  end

  UI.message("Successfully uploaded the new binary to iTunes Connect")

  if config[:skip_waiting_for_build_processing]
    UI.important("Skip waiting for build processing")
    UI.important("This means that no changelog will be set and no build will be distributed to testers")
    return
  end

  UI.message("If you want to skip waiting for the processing to be finished, use the `skip_waiting_for_build_processing` option")
  uploaded_build = wait_for_processing_build # this might take a while

  # First, set the changelog (if necessary)
  if options[:changelog].to_s.length > 0
    uploaded_build.update_build_information!(whats_new: options[:changelog])
    UI.success "Successfully set the changelog for build"
  end

  return if config[:skip_submission]
  distribute_build(uploaded_build, options)
  UI.message("Successfully distributed build to beta testers 🚀")
end