Skip to content
This repository has been archived by the owner on Nov 19, 2018. It is now read-only.

Getting error "The version number has been previously used." #113

Closed
aziz-boudi4 opened this issue Oct 1, 2015 · 24 comments
Closed

Getting error "The version number has been previously used." #113

aziz-boudi4 opened this issue Oct 1, 2015 · 24 comments

Comments

@aziz-boudi4
Copy link

Hello Felix,
I made all the modifications as stated in the "Migration Guide", and all the previous errors disappeared.

But now I keep having this error with "Spaceship" about
The version number has been previously used.

/Library/Ruby/Gems/2.0.0/gems/spaceship-0.10.2/lib/spaceship/tunes/tunes_client.rb:147:in  `handle_itc_response': The version number has been previously used. (Spaceship::TunesClient::ITunesConnectError) 
  • I tried running fastlane with the " Deliverfile" empty , and i still got the error.
  • I tried running fastlane with the new modification provided on "Migration Guide" for the "Deliverfile" and still got the same error.

could you please point out what I'm doing wrong, thank you.

here is a copy of my "deliverfile" :

###################### IPA File ######################
# This part is only relevant, if you want to submit a new binary
# If you don't use fastlane (https://github.com/KrauseFx/fastlane)
# you can set the path to your ipa file using:
   # ipa "./app.ipa"

# to provide an ipa file for TestFlight distribution, use beta_ipa 
  # beta_ipa "./app.ipa"

# The version of your app - remove this if you provide an ipa file
  #app_version "2.0.5"

# Feel free to remove the following lines if you use fastlane

   app_identifier "com.######.######" # The bundle identifier of your app
   app "#########" # This is NOT your Apple login ID, but the App ID of your app
   username "test@########.com" # the login email address

here is a copy of the trace :

/Library/Ruby/Gems/2.0.0/gems/spaceship-0.10.2/lib/spaceship/tunes/tunes_client.rb:147:in `handle_itc_response': The version number has been previously used. (Spaceship::TunesClient::ITunesConnectError)
    from /Library/Ruby/Gems/2.0.0/gems/spaceship-0.10.2/lib/spaceship/tunes/tunes_client.rb:236:in `create_version!'
    from /Library/Ruby/Gems/2.0.0/gems/spaceship-0.10.2/lib/spaceship/tunes/application.rb:154:in `create_version!'
    from /Library/Ruby/Gems/2.0.0/gems/spaceship-0.10.2/lib/spaceship/tunes/application.rb:173:in `ensure_version!'
    from /Library/Ruby/Gems/2.0.0/gems/deliver-1.1.1/lib/deliver/runner.rb:33:in `verify_version'
    from /Library/Ruby/Gems/2.0.0/gems/deliver-1.1.1/lib/deliver/runner.rb:18:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/actions/deliver.rb:18:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/runner.rb:142:in `block (2 levels) in execute_action'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/actions/actions_helper.rb:37:in `execute_action'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/runner.rb:128:in `block in execute_action'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/runner.rb:127:in `chdir'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/runner.rb:127:in `execute_action'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/fast_file.rb:137:in `method_missing'
    from (eval):52:in `block (3 levels) in parse'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/lane.rb:36:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/lane.rb:36:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/runner.rb:51:in `block in execute'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/runner.rb:46:in `chdir'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/runner.rb:46:in `execute'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/lane_manager.rb:43:in `cruise_lane'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/lib/fastlane/command_line_handler.rb:31:in `handle'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/bin/fastlane:36:in `block (2 levels) in run'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.5/lib/commander/command.rb:178:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.5/lib/commander/command.rb:178:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.5/lib/commander/command.rb:153:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.5/lib/commander/runner.rb:428:in `run_active_command'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.5/lib/commander/runner.rb:68:in `run!'
    from /Library/Ruby/Gems/2.0.0/gems/commander-4.3.5/lib/commander/delegates.rb:15:in `run!'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/bin/fastlane:127:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/fastlane-1.30.2/bin/fastlane:133:in `<top (required)>'
    from /usr/bin/fastlane:23:in `load'
@KrauseFx
Copy link
Contributor

KrauseFx commented Oct 1, 2015

What's the version number of the plist of your ipa? Probably the same of a version you already deployed to Apple, right? You have to increment the version number in your ipa file.

@aziz-boudi4
Copy link
Author

So I should use " increment_version_number " ?
and set up an automatic incrementation of the version number like shown in the "Wikepedia" example:

 plist_version = get_version_short_string File.expand_path(File.join(ENV['PWD'], 'Wikipedia/Wikipedia- Info.plist'))

    increment_version_number(
       version_number: ENV['WMF_VERSION_NUMBER'] || plist_version
    )

@KrauseFx
Copy link
Contributor

KrauseFx commented Oct 1, 2015

Yes, you can just use increment_version_number(bump_type: "patch") to automatically increment the version.

@KrauseFx
Copy link
Contributor

KrauseFx commented Oct 1, 2015

This is an iTunes Connect requirement, as it doesn't allow TestFlight uploads for apps already being in the store, so you need to increment the version number.

@iOSAppMaker
Copy link

Same problem.

@vpolouchkine
Copy link
Contributor

@iOSAppMaker Have you tried incrementing the the version number?

@iOSAppMaker
Copy link

Yes ofcource.
It gets incremented autmatcally through the build_increment command in FastFile itself.
These problems all started after updating to the new versions of everything.
Untill then everyhign was working fine.
Now I'm confused because I'm getting multiple errors from multiple corners in different projects.
I don't know which one to revert, because I don't know which ones are the problem.
Fastlane itself is working a bit odd overall. Sometimes it works and sometimes it doesn't.

@iOSAppMaker
Copy link

@vpolouchkine Why should I have to regenerate it every time anyway?? Isn't that itself an error??

@vpolouchkine
Copy link
Contributor

See #113 (comment)

@iOSAppMaker
Copy link

Sorry, I didn't get it, what??

@vpolouchkine
Copy link
Contributor

Were you asking why you need to increment the version number? That's an iTC requirement, as Felix posted in his comment above.

@iOSAppMaker
Copy link

I think you misunderstood, no I didn't ask why the number has to be incremented. I was saying it keeps asking me to do it, even after it was already incremented.

@vpolouchkine
Copy link
Contributor

Ah, gotcha.

@vpolouchkine
Copy link
Contributor

@iOSAppMaker Would you mind posting your Fastfile and the full log?

@iOSAppMaker
Copy link

Fastfile (the lane I use currently is updateAllS):

# Customise this file, documentation can be found here:
# https://github.com/KrauseFx/fastlane/tree/master/docs
# All available actions: https://github.com/KrauseFx/fastlane/blob/master/docs/Actions.md
# 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`

# By default, fastlane will send which actions are used
# No personal data is shared, more information on https://github.com/fastlane/enhancer
# Uncomment the following line to opt out

require 'json'

opt_out_usage

# 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.33.0"

default_platform :ios

scheme_names_list = ["App Scheme 1"]

jsonFilePath = "../../../../Common Components/AppsController/AppsSetDB.json"

usernameID = "email@mail.com" 

ENV["PROJECT_FILE_PATH"] = (File.basename(Dir.glob('../*.xcodeproj').first))
#ENV["WORKSPACE_PATH"] = (File.basename(Dir.glob('../*.xcworkspace').first))

platform :ios do
  before_all do
    # ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."

    # recreate_schemes(project: ENV["PROJECT_FILE_PATH"])
    # increment_build_number

    # xctool # run the tests of your app
  end

  desc "Runs all the tests"
  lane :test do
    snapshot
  end

  desc "Submit a new Beta Build to Apple TestFlight"
  desc "This will also make sure the profile is up to date"

  desc "Update a new version to the App Store"
  lane :metadataDownload do

    File.open(jsonFilePath, "r") do |file|
      jsonFile = file.read
      parsedItems = JSON.parse(jsonFile)

      scheme_names_list.each do |scheme_name| 

        item = parsedItems.find {|item| item['appName'] == scheme_name}

        pro_scheme_name = scheme_name + " Pro" 
        item = parsedItems.find {|item| item['appName'] == pro_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_pro')
        sh "deliver download_metadata" 

        free_scheme_name = scheme_name + " Free"
        item = parsedItems.find {|item| item['appName'] == free_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_free')
        sh "deliver download_metadata" 

        ENV["TARGET_GROUP_ROOT_SCHEME"] = item["appName"] 
        ENV["SCHEME"] = item["appName"] 
        ENV["APPBUNDLEID"] = item["appBundleID"]
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata')
        ENV["SCREENSHOTS_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/screenshots')
        sh "deliver download_metadata" 
      end
    end 
  end


  desc "Update a new version to the App Store"
  lane :screenshotsDownload do

    File.open(jsonFilePath, "r") do |file|
      jsonFile = file.read
      parsedItems = JSON.parse(jsonFile)

      scheme_names_list.each do |scheme_name| 

        item = parsedItems.find {|item| item['appName'] == scheme_name}
        ENV["TARGET_GROUP_ROOT_SCHEME"] = item["appName"] 
        ENV["SCREENSHOTS_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/screenshots')

        pro_scheme_name = scheme_name + " Pro"
        item = parsedItems.find {|item| item['appName'] == pro_scheme_name} 
        ENV["SCHEME"] = item["appName"] 
        ENV["APPBUNDLEID"] = item["appBundleID"]
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata')
        sh "deliver download_screenshots"
      end
    end 

    screenshotsFrame
  end

  desc "Frame the screenshots"
  lane :screenshotsFrame do

    File.open(jsonFilePath, "r") do |file|
      jsonFile = file.read
      parsedItems = JSON.parse(jsonFile)

      i = 0 

      scheme_names_list.each do |scheme_name| 

        item = parsedItems.find {|item| item['appName'] == scheme_name}
        ENV["TARGET_GROUP_ROOT_SCHEME"] = item["appName"] 
        ENV["SCREENSHOTS_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/screenshots')

        pro_scheme_name = scheme_name + " Pro"
        item = parsedItems.find {|item| item['appName'] == pro_scheme_name} 
        ENV["SCHEME"] = item["appName"] 
        ENV["APPBUNDLEID"] = item["appBundleID"]
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata')

        if (i%2 == 0)
          frameit(white: true)
        else
          frameit(white: false)
        end

        i += 1
      end
    end 
  end

  desc "Update a new version to the App Store"
  lane :metadataUpdate do

    File.open(jsonFilePath, "r") do |file|
      jsonFile = file.read
      parsedItems = JSON.parse(jsonFile)

      scheme_names_list.each do |scheme_name| 

        item = parsedItems.find {|item| item['appName'] == scheme_name}

        ENV["TARGET_GROUP_ROOT_SCHEME"] = item["appName"] 
        ENV["SCHEME"] = item["appName"] 
        ENV["APPBUNDLEID"] = item["appBundleID"]
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata')
        deliver(skip_screenshots: true)

        free_scheme_name = scheme_name + " Free"
        item = parsedItems.find {|item| item['appName'] == free_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_free')
        deliver(skip_screenshots: true)

        pro_scheme_name = scheme_name + " Pro" 
        item = parsedItems.find {|item| item['appName'] == pro_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_pro')
        deliver(skip_screenshots: true)
      end
    end 
  end

  desc "Update screenshots"
  lane :screenshotsUpdate do

    File.open(jsonFilePath, "r") do |file|
      jsonFile = file.read
      parsedItems = JSON.parse(jsonFile)
      i = 0

      scheme_names_list.each do |scheme_name| 

        item = parsedItems.find {|item| item['appName'] == scheme_name}
        ENV["TARGET_GROUP_ROOT_SCHEME"] = item["appName"] 
        ENV["SCREENSHOTS_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/screenshots')

        pro_scheme_name = scheme_name + " Pro" 
        item = parsedItems.find {|item| item['appName'] == pro_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        snapshot
        #if (i%2 == 0)
        #  frameit(white: true)
        #else
        #  frameit(white: false)
        #end
        deliver(skip_metadata: true) # Upload screenshots to iTunes Connect 

        free_scheme_name = scheme_name + " Free"
        item = parsedItems.find {|item| item['appName'] == free_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        deliver(skip_metadata: true) # Upload screenshots to iTunes Connect

        item = parsedItems.find {|item| item['appName'] == scheme_name} 
        ENV["SCHEME"] = item["appName"] 
        ENV["APPBUNDLEID"] = item["appBundleID"]
        deliver(skip_metadata: true) # Upload screenshots to iTunes Connect

        i += 1
      end
    end 
  end

  desc "Deploy a new version to the App Store"

  desc "Deploy a new version to the App Store"
  lane :prepareScreenshots do
    snapshot
    frameit(white: true)
  end

  desc "Update a new version to the App Store"
  lane :updateAll do  
    prepareAll
    deliverAll 
  end

  desc "Update a new version to the App Store"
  lane :updateAllS do  
    prepareAll
    deliverAll 
    submitAll
  end

  desc "Update a new version to the App Store"
  lane :updateAllSS do  
    prepareAll
    deliverAll 
    submitAll
    updateScreenshotsAll
  end

  desc "Prepare new versions for the App Store"
  lane :prepareAll do

    File.open(jsonFilePath, "r") do |file|
      jsonFile = file.read
      parsedItems = JSON.parse(jsonFile)

      i = 0

      scheme_names_list.each do |scheme_name| 

        item = parsedItems.find {|item| item['appName'] == scheme_name}
        ENV["TARGET_GROUP_ROOT_SCHEME"] = item["appName"] 
        ENV["SCREENSHOTS_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/screenshots')

        pro_scheme_name = scheme_name + " Pro" 
        item = parsedItems.find {|item| item['appName'] == pro_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_pro')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        increment_build_number 
        cert(username: usernameID)
        sigh(
            app_identifier: ENV["APPBUNDLEID"], 
            username: usernameID, 
            output_path: ENV["PROFILES_AND_IPA_PATH"]
        )
        gym
        #snapshot
        #if (i%2 == 0)
        #  frameit(white: true)
        #else
        #  frameit(white: false)
        #end

        free_scheme_name = scheme_name + " Free"
        item = parsedItems.find {|item| item['appName'] == free_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_free')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"]) 
        increment_build_number 
        cert(username: usernameID)
        sigh(
            app_identifier: ENV["APPBUNDLEID"], 
            username: usernameID, 
            output_path: ENV["PROFILES_AND_IPA_PATH"]
        )
        gym

        item = parsedItems.find {|item| item['appName'] == scheme_name}
        ENV["SCHEME"] = item["appName"] 
        ENV["APPBUNDLEID"] = item["appBundleID"]
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        increment_build_number 
        cert(username: usernameID)
        sigh(
            app_identifier: ENV["APPBUNDLEID"], 
            username: usernameID, 
            output_path: ENV["PROFILES_AND_IPA_PATH"]
        )
        gym

        i += 1
      end
    end 
  end

  desc "Deliver all new version to the App Store"
  lane :deliverAll do

    File.open(jsonFilePath, "r") do |file|
      jsonFile = file.read
      parsedItems = JSON.parse(jsonFile)
      i = 0

      scheme_names_list.each do |scheme_name| 

        item = parsedItems.find {|item| item['appName'] == scheme_name}
        ENV["TARGET_GROUP_ROOT_SCHEME"] = item["appName"] 
        ENV["SCREENSHOTS_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/screenshots')

        pro_scheme_name = scheme_name + " Pro" 
        item = parsedItems.find {|item| item['appName'] == pro_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_pro')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        deliverRectified

        free_scheme_name = scheme_name + " Free"
        item = parsedItems.find {|item| item['appName'] == free_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_free')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        deliverRectified

        item = parsedItems.find {|item| item['appName'] == scheme_name} 
        ENV["SCHEME"] = item["appName"] 
        ENV["APPBUNDLEID"] = item["appBundleID"]
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        deliverRectified

        i += 1
      end
    end 
  end

  desc "Deliver common"
  lane :deliverRectified do
    deliver(skip_screenshots: true, submit_for_review: false)
  end

  desc "Deliver all new version to the App Store"
  lane :submitAll do

    File.open(jsonFilePath, "r") do |file|
      jsonFile = file.read
      parsedItems = JSON.parse(jsonFile)
      i = 0

      scheme_names_list.each do |scheme_name| 

        item = parsedItems.find {|item| item['appName'] == scheme_name}
        ENV["TARGET_GROUP_ROOT_SCHEME"] = item["appName"] 
        ENV["SCREENSHOTS_PATH"] = ('/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/screenshots')

        pro_scheme_name = scheme_name + " Pro" 
        item = parsedItems.find {|item| item['appName'] == pro_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_pro')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        submitRectified

        free_scheme_name = scheme_name + " Free"
        item = parsedItems.find {|item| item['appName'] == free_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_free')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        submitRectified

        item = parsedItems.find {|item| item['appName'] == scheme_name} 
        ENV["SCHEME"] = item["appName"] 
        ENV["APPBUNDLEID"] = item["appBundleID"]
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        submitRectified

        i += 1
      end
    end 
  end

  desc "Submit all delivered apps; call deliverAll first"
  lane :submitRectified do
    deliver(skip_screenshots: true, submit_for_review: true)
  end

  desc "Deliver all new version to the App Store"
  lane :updateScreenshotsAll do

    File.open(jsonFilePath, "r") do |file|
      jsonFile = file.read
      parsedItems = JSON.parse(jsonFile)
      i = 0

      scheme_names_list.each do |scheme_name| 

        item = parsedItems.find {|item| item['appName'] == scheme_name}
        ENV["TARGET_GROUP_ROOT_SCHEME"] = item["appName"] 
        ENV["SCREENSHOTS_PATH"] = ('fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/screenshots')

        pro_scheme_name = scheme_name + " Pro" 
        item = parsedItems.find {|item| item['appName'] == pro_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_pro')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        screenshotsRectified

        free_scheme_name = scheme_name + " Free"
        item = parsedItems.find {|item| item['appName'] == free_scheme_name}
        ENV["SCHEME"] = item["appName"]  
        ENV["APPBUNDLEID"] = item["appBundleID"] 
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata_free')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        screenshotsRectified

        item = parsedItems.find {|item| item['appName'] == scheme_name} 
        ENV["SCHEME"] = item["appName"] 
        ENV["APPBUNDLEID"] = item["appBundleID"]
        ENV["METADATA_PATH"] = ('targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/metadata')
        ENV["IPA"] = ('./targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + ENV["SCHEME"] + '.ipa')
        ENV["PROVISIONING_PROFILE_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"] + "/" + 'AppStore_' + ENV["APPBUNDLEID"] + '.mobileprovision') 
        ENV["PROFILES_AND_IPA_PATH"] = ('./fastlane/targetGroupFiles/' + ENV["TARGET_GROUP_ROOT_SCHEME"] + '/profilesAndIPA/' + ENV["SCHEME"])
        screenshotsRectified

        i += 1
      end
    end 
  end

  desc "Submit all delivered apps; call deliverAll first"
  lane :screenshotsRectified do
    deliver(skip_screenshots: false)
  end

  # You can define as many lanes as you want

  after_all do |lane|
    # This block is called, only if the executed lane was successful

    # slack(
    #   message: "Successfully deployed new App Update."
    # )
  end

  error do |lane, exception|
    # slack(
    #   message: exception.message,
    #   success: false
    # )
  end
end


# More information about multiple platforms in fastlane: 
# https://github.com/KrauseFx/fastlane/blob/master/docs/Platforms.md

@iOSAppMaker
Copy link

@vpolouchkine This used to work before. I didn't change anything, except updated all using "sudo gem fastlane update". Mine was 3-4 version backward in most thing like gym, cert, deliver, fastlane_core, fastlane, snapshot, etc.

@iOSAppMaker
Copy link

Error log from CLI:

[01:28:10]: -----------------
[01:28:10]: --- Step: gym ---
[01:28:10]: -----------------
[01:28:11]: Installing provisioning profile...
[01:28:13]: xcrun xcodebuild -list -project './App Name 1.xcodeproj'
[01:28:23]: Variable Dump:
[01:28:23]: {:DEFAULT_PLATFORM=>:ios, :PLATFORM_NAME=>:ios, :LANE_NAME=>"ios updateAllSS", :BUILD_NUMBER=>"66", :CERT_FILE_PATH=>"/Users/username/Desktop/Desk/Published Nov 27 2015/6 - Utilities/5.1 - App Name x10/App Name/NPVB3AQ9UW.cer", :CERT_CERTIFICATE_ID=>"NPVB3AQ9UW", :SIGH_PROFILE_PATH=>"/Users/username/Desktop/Desk/Published Nov 27 2015/6 - Utilities/5.1 - App Name x10/App Name/fastlane/targetGroupFiles/App Name/profilesAndIPA/App Name Pro/AppStore_com.bigalpha.app-name-pro.mobileprovision", :SIGH_PROFILE_PATHS=>["/Users/username/Desktop/Desk/Published Nov 27 2015/6 - Utilities/5.1 - App Name x10/App Name/fastlane/targetGroupFiles/App Name/profilesAndIPA/App Name Pro/AppStore_com.bigalpha.app-name-pro.mobileprovision"], :SIGH_UDID=>"b5ddb279-5eb0-44e9-8790-590406df101c", :SIGH_PROFILE_TYPE=>"app-store"}
[01:28:23]: xcodebuild -list timed-out. You might need to recreate the user schemes. See https://github.com/fastlane/gym/issues/143

+------+-------------------------------------+-------------+
|                     fastlane summary                     |
+------+-------------------------------------+-------------+
| Step | Action                              | Time (in s) |
+------+-------------------------------------+-------------+
| 1    | opt_out_usage                       | 0           |
| 2    | Verifying required fastlane version | 0           |
| 3    | default_platform                    | 0           |
| 4    | recreate_schemes                    | 7           |
| 5    | Switch to ios prepareAll lane       | 0           |
| 6    | increment_build_number              | 30          |
| 7    | cert                                | 30          |
| 8    | sigh                                | 16          |
| 9    | gym                                 | 13          |
+------+-------------------------------------+-------------+

[01:28:24]: fastlane finished with errors
-------------------------------------------------------------------------------------------
😨  An error occured. Please enable crash reports using `fastlane enable_crash_reporting`.
👍  This makes resolving issues much easier and helps improve fastlane.
🔒  The reports will be stored securely on getsentry.com.
✨  Once crash reporting is enabled, you get a clean output when something goes wrong.
🙊  More information about privacy: https://github.com/KrauseFx/fastlane/releases/tag/1.33.3
-------------------------------------------------------------------------------------------
/Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane_core-0.32.1/lib/fastlane_core/project.rb:230:in `rescue in raw_info': xcodebuild -list timed-out. You might need to recreate the user schemes. See https://github.com/fastlane/gym/issues/143 (RuntimeError)
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane_core-0.32.1/lib/fastlane_core/project.rb:226:in `raw_info'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane_core-0.32.1/lib/fastlane_core/project.rb:242:in `parsed_info'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane_core-0.32.1/lib/fastlane_core/project.rb:85:in `schemes'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane_core-0.32.1/lib/fastlane_core/project.rb:92:in `select_scheme'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/gym-1.4.0/lib/gym/detect_values.rb:59:in `detect_scheme'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/gym-1.4.0/lib/gym/detect_values.rb:24:in `set_additional_default_values'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/gym-1.4.0/lib/gym.rb:25:in `config='
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/gym-1.4.0/lib/gym/manager.rb:4:in `work'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/actions/gym.rb:22:in `run'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/runner.rb:142:in `block (2 levels) in execute_action'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/actions/actions_helper.rb:37:in `execute_action'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/runner.rb:128:in `block in execute_action'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/runner.rb:127:in `chdir'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/runner.rb:127:in `execute_action'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/fast_file.rb:149:in `method_missing'
    from Fastfile:425:in `block (4 levels) in parsing_binding'
    from Fastfile:404:in `each'
    from Fastfile:404:in `block (3 levels) in parsing_binding'
    from Fastfile:398:in `open'
    from Fastfile:398:in `block (2 levels) in parsing_binding'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/lane.rb:36:in `call'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/lane.rb:36:in `call'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/runner.rb:109:in `try_switch_to_lane'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/fast_file.rb:141:in `rescue in method_missing'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/fast_file.rb:136:in `method_missing'
    from Fastfile:389:in `block (2 levels) in parsing_binding'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/lane.rb:36:in `call'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/lane.rb:36:in `call'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/runner.rb:52:in `block in execute'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/runner.rb:46:in `chdir'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/runner.rb:46:in `execute'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/lane_manager.rb:46:in `cruise_lane'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/lib/fastlane/command_line_handler.rb:30:in `handle'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/bin/fastlane:37:in `block (2 levels) in run'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/commander-4.3.5/lib/commander/command.rb:178:in `call'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/commander-4.3.5/lib/commander/command.rb:178:in `call'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/commander-4.3.5/lib/commander/command.rb:153:in `run'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/commander-4.3.5/lib/commander/runner.rb:428:in `run_active_command'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/commander-4.3.5/lib/commander/runner.rb:68:in `run!'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/commander-4.3.5/lib/commander/delegates.rb:15:in `run!'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/bin/fastlane:155:in `run'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/gems/fastlane-1.50.0/bin/fastlane:161:in `<top (required)>'
    from /Users/username/.rvm/rubies/ruby-2.2.3/bin/fastlane:23:in `load'
    from /Users/username/.rvm/rubies/ruby-2.2.3/bin/fastlane:23:in `<main>'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/bin/ruby_executable_hooks:15:in `eval'
    from /Users/username/.rvm/gems/ruby-2.2.3@global/bin/ruby_executable_hooks:15:in `<main>'

@iOSAppMaker
Copy link

This might be a path problem. I had edited the path reading format in the previous version. The new one is reading from the new format, so let me check that.

@ohayon
Copy link
Contributor

ohayon commented Jan 14, 2016

thanks for your help so far @iOSAppMaker - looking forward to hearing what you find out!

@iOSAppMaker
Copy link

The problem was with my Fastfile itself. The path to IPA passed was the old one. So naturally, it was asking me to increment build number.

@ohayon
Copy link
Contributor

ohayon commented Jan 15, 2016

@aziz-boudi4 were you experiencing the same issue? can we close this?

@molind
Copy link

molind commented Jan 28, 2016

Sometimes I need to update app description or what's new after app release. I launch deliver with --skip_screenshots option and basically it should just update what's new and description or, even better, check changes and update only changed info. And throw exception if I changed screenshot or keywords.

But it exits with error "The version number has been previously used." and I'll update my metadata manually. Huh

@ohayon
Copy link
Contributor

ohayon commented Feb 10, 2016

thanks for letting us know you are having that issue @molind, right now this is not supported, so we will definitely mark it as a feature request and close the issue for now.

@fastlanebot
Copy link

This issue was migrated to fastlane/fastlane#3522. Please post all further comments there.

fastlane is now a mono repo, you can read more about the change in our blog post. All tools are now available in the fastlane main repo 🚀

@fastlane-old fastlane-old locked and limited conversation to collaborators Mar 12, 2016
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

7 participants