Class: FastlaneCore::BuildWatcher

Inherits:
Object
  • Object
show all
Defined in:
fastlane_core/lib/fastlane_core/build_watcher.rb

Class Method Summary collapse

Class Method Details

.wait_for_build_processing_to_be_complete(app_id: nil, platform: nil, train_version: nil, app_version: nil, build_version: nil, poll_interval: 10, strict_build_watch: false, return_when_build_appears: false, return_spaceship_testflight_build: true) ⇒ Object

Returns The build we waited for. This method will always return a build.

Returns:

  • The build we waited for. This method will always return a build



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
46
47
48
49
# File 'fastlane_core/lib/fastlane_core/build_watcher.rb', line 9

def wait_for_build_processing_to_be_complete(app_id: nil, platform: nil, train_version: nil, app_version: nil, build_version: nil, poll_interval: 10, strict_build_watch: false, return_when_build_appears: false, return_spaceship_testflight_build: true)
  # Warn about train_version being removed in the future
  if train_version
    UI.deprecated(":train_version is no longer a used argument on FastlaneCore::BuildWatcher. Please use :app_version instead.")
    app_version = train_version
  end

  # Warn about strict_build_watch being removed in the future
  if strict_build_watch
    UI.deprecated(":strict_build_watch is no longer a used argument on FastlaneCore::BuildWatcher.")
  end

  platform = Spaceship::ConnectAPI::Platform.map(platform) if platform
  UI.message("Waiting for processing on... app_id: #{app_id}, app_version: #{app_version}, build_version: #{build_version}, platform: #{platform}")

  showed_info = false
  loop do
    matched_build = matching_build(watched_app_version: app_version, watched_build_version: build_version, app_id: app_id, platform: platform)

    if matched_build.nil? && !showed_info
      UI.important("Read more information on why this build isn't showing up yet - https://github.com/fastlane/fastlane/issues/14997")
      showed_info = true
    end

    report_status(build: matched_build)

    # Processing of builds by AppStoreConnect can be a very time consuming task and will
    # block the worker running this task until it is completed. In some cases,
    # having a build resource appear in AppStoreConnect (matched_build) may be enough (i.e. setting a changelog)
    # so here we may choose to skip the full processing of the build if return_when_build_appears is true
    if matched_build && (return_when_build_appears || matched_build.processed?)
      if return_spaceship_testflight_build
        return matched_build.to_testflight_build
      else
        return matched_build
      end
    end

    sleep(poll_interval)
  end
end