fastlane: match failed with "[!] You need to instantiate this module with provisioning_request_client"
New Issue Checklist
- Updated fastlane to the latest version
- I read the Contribution Guidelines
- I read docs.fastlane.tools
- I searched for existing GitHub issues
We updated to the latest version this morning after having different issues delivering our apps to Apple. After updating, we are unable to build the iOS apps with the error
10:01:16 /Users/xxx/.rvm/gems/ruby-2.4.4@xxx_wlma_ios/gems/fastlane-2.157.2/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb:13:in 'provisioning_request_client': [!] You need to instantiate this module with provisioning_request_client (TypeError)
✅ fastlane environment ✅
Stack
| Key | Value |
|---|---|
| OS | 10.15.3 |
| Ruby | 2.4.4 |
| Bundler? | true |
| Git | git version 2.21.1 (Apple Git-122.3) |
| Installation Source | ~/.rvm/gems/ruby-2.4.4@xxx_wlma_ios/bin/fastlane |
| Host | Mac OS X 10.15.3 (19D76) |
| Ruby Lib Dir | ~/.rvm/rubies/ruby-2.4.4/lib |
| OpenSSL Version | OpenSSL 1.1.1d 10 Sep 2019 |
| Is contained | false |
| Is homebrew | false |
| Is installed via Fabric.app | false |
| Xcode Path | /Applications/Xcode.app/Contents/Developer/ |
| Xcode Version | 11.3.1 |
System Locale
| Variable | Value | |
|---|---|---|
| LANG | en_US.UTF-8 | ✅ |
| LC_ALL | en_US.UTF-8 | ✅ |
| LANGUAGE |
fastlane files:
`./fastlane/Fastfile`
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
fastlane_require 'date'
fastlane_require 'active_support/all'
app_email = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
default_platform(:ios)
platform :ios do
before_all do |lane, options|
load_env_vars
ENV['KEYCHAIN_PASSWORD'] = "xxxxxxxxxxxxxxxx"
ENV['KEYCHAIN_NAME'] = "xxxxxxxxxxxxxxxxxxxxx"
pods_up_to_date = system("cd ..; diff Podfile.lock Pods/Manifest.lock > /dev/null")
cocoapods unless pods_up_to_date
create_build_keychain
unless ['clean','show_help', 'update_plists', 'update_info_plist', 'update_config_plist', 'copy_customer_assets_into_project'].include? lane.to_s
check_for_mobile_config_data(options)
check_for_team_name(options)
check_for_org_id(options)
end
end
after_all do |lane|
clear_build_keychain
end
error do |lane, exception, options|
revert_signing_identity
clear_build_keychain
end
desc "creates the keychain"
lane :create_build_keychain do
create_keychain(
name: ENV['KEYCHAIN_NAME'],
default_keychain: false,
password: ENV['KEYCHAIN_PASSWORD'],
unlock: true,
timeout: false,
lock_when_sleeps: true
)
end
desc "deletes the created keychain"
lane :clear_build_keychain do
delete_keychain(name: ENV['KEYCHAIN_NAME'])
end
desc "Clean project build files"
lane :clean do
xcclean(scheme:'XXX')
end
desc "Show help"
lane :show_help do |options|
UI.header "Example of generating a release build for a customer in Fastlane if you don't have a document.xml handy..."
UI.header "Print out all custom lanes configured"
UI.important 'fastlane lanes'
end
desc "For managing certificates and creating app within Developer and iTunes Connect Portals"
lane :setup_new_app do |options|
check_for_app_name(options)
create_app(options)
pull_all_signing_certs
end
desc "Builds a local Debug version"
lane :local_beta do |options|
match(
type: 'appstore',
git_branch: @match_git_org_branch,
app_identifier: @bundle_id,
keychain_name: ENV['KEYCHAIN_NAME'],
keychain_password: ENV['KEYCHAIN_PASSWORD'],
)
set_signing_identity
gym(export_method: "app-store", clean: true)
revert_signing_identity
end
desc "Builds & Deploys debug version to Customer's iTC Testflight"
lane :customer_beta do |options|
#ensure_git_status_clean(show_uncommitted_changes: true)
# Make sure we have all signing certs and such ready to go!
setup_new_app(options)
match(
type: 'appstore',
git_branch: @match_git_org_branch,
app_identifier: @bundle_id,
keychain_name: ENV['KEYCHAIN_NAME'],
keychain_password: ENV['KEYCHAIN_PASSWORD'],
)
set_provisioning_profile
set_signing_identity
code_version = ENV['VERSION']
custom_build = get_custom_build_number
increment_version_number(
version_number: code_version # Set a specific version number
)
increment_build_number(
build_number: custom_build # Set a specific build number
)
formatted_version_name = format_version_name(code_version, custom_build)
UI.important "iOS app version set to '#{formatted_version_name}'"
write_version_file(formatted_version_name)
gym(export_method: "app-store", clean: true)
revert_signing_identity
pilot(
skip_waiting_for_build_processing: true,
skip_submission: true,
distribute_external: false,
app_identifier: @bundle_id,
)
end
desc "Builds & Deploys release version to Customer's iTC Store"
lane :customer_release do |options|
check_for_app_name(options)
#ensure_git_branch(branch: 'master')
#ensure_git_status_clean(show_uncommitted_changes: true)
# Make sure we have all signing certs and such ready to go!
setup_new_app(options)
match(
type: 'appstore',
git_branch: @match_git_org_branch,
app_identifier: @bundle_id,
keychain_name: ENV['KEYCHAIN_NAME'],
keychain_password: ENV['KEYCHAIN_PASSWORD'],
)
set_provisioning_profile
set_signing_identity
code_version = ENV['VERSION']
custom_build = get_custom_build_number
#switch_to_git_tag_branch(code_version)
increment_version_number(
version_number: code_version # Set a specific version number
)
increment_build_number(
build_number: custom_build # Set a specific build number
)
formatted_version_name = format_version_name(code_version, custom_build)
write_version_file(formatted_version_name)
gym(export_method: "app-store", clean: true)
revert_signing_identity
deliver(
app_identifier: @bundle_id,
keywords: {
'en-US' => @app_team_name.scan(/\w+/)
}, # Breaking up team_name on word boundaries for now... Creates keyword hash instead of array.
release_notes: "",
languages: "en-US",
price_tier: 0,
name: {
'en-US' => @app_name
}, # Sets app name as a hash instead of string.
support_url: "",
marketing_url: "",
privacy_url: "",
copyright: "#{Time.now.year} #{ENV['FASTLANE_ITC_TEAM_NAME']}",
primary_category: "Lifestyle",
app_review_information: {
first_name: "xxxx",
last_name: "xxxx",
phone_number: "",
email_address: "xxxxxxxxxxxxxxx",
notes: "",
},
submit_for_review: false,
automatic_release: true,
skip_metadata: true, # Will not look on drive for metadata, but will still upload screenshots
force: true, # Will not require verifying the upload via the HTML file since we are in non-interactive mode
)
end
desc "Use XML file to update Info.plist & Config.plist with Customer's Preferences"
lane :update_plists do |options|
update_ios_info_plist(options)
update_ios_config_plist(options)
end
private_lane :update_ios_info_plist do |options|
unless options[:xml_path]
UI.user_error! "xml_path: parameter missing. We need to know the Mobile Application's Customer Configuration!"
end
update_wlma_info_plist_from_config(
xml_path: options[:xml_path],
plist_path: 'XXX/Info.plist',
)
end
private_lane :update_ios_config_plist do |options|
unless options[:xml_path]
UI.user_error! "xml_path: parameter missing. We need to know the Mobile Application's Customer Configuration!"
end
update_wlma_config_plist_from_config(
xml_path: options[:xml_path],
plist_path: 'XXX/Config/Config.plist',
)
end
desc "Copy XML and Image assets into the project directory. Generally used in CI but can be tested locally"
lane :copy_customer_assets_into_project do |options|
unless options[:asset_path]
UI.user_error! "asset_path: parameter missing. We need to know the Mobile Application's Customer Configuration Filepath!"
end
UI.important "asset_path set to: #{options[:asset_path]}"
copy_ios_app_assets_into_project(
asset_path: options[:asset_path],
)
end
private_lane :set_provisioning_profile do
# Manually determine the correct name of the Match certificate
# in order to set the automatic signing of the bundle
ENV["PROVISIONING_PROFILE_TARGET1"] = ENV["sigh_#{@bundle_id}_appstore"]
end
private_lane :set_signing_identity do
team_id = ENV["sigh_#{@bundle_id}_appstore_team-id"]
UI.important "Setting team_id in project to: #{team_id}"
automatic_code_signing(
path: "XXX.xcodeproj",
use_automatic_signing: false,
team_id: ENV["sigh_#{@bundle_id}_appstore_team-id"],
)
ENV['DEVELOPMENT_TEAM'] = ENV["sigh_#{@bundle_id}_appstore_team-id"]
ENV['PROVISIONING_PROFILE_SPECIFIER'] = "match AppStore #{@bundle_id}"
update_project_team(
path: "XXX.xcodeproj",
teamid: team_id,
)
update_project_provisioning(
xcodeproj: "XXX.xcodeproj",
profile: ENV["sigh_#{@bundle_id}_appstore_profile-path"],
build_configuration: "Release",
)
update_app_identifier(
xcodeproj: "XXX.xcodeproj", # Optional path to xcodeproj, will use the first .xcodeproj if not set
plist_path: "XXX/Info.plist", # Path to info plist file, relative to xcodeproj
app_identifier: @bundle_id # The App Identifier
)
end
private_lane :revert_signing_identity do
sh('cd ../ && git checkout -- XXX.xcodeproj')
sh('cd ../ && git checkout -- XXX/')
end
private_lane :create_app do |options|
# Fool Fastlane into thinking we're running on CI so that we get failures
# if Customer has not properly registered xxxxxxxxxxxxxxxxxx to their Dev & iTC teams
# regardless of running on Macos build slave or local dev machine.
# We really do want this as turnkey as possible!
ENV['JENKINS_HOME'] = 'Y'
check_for_app_name(options)
produce(
username: app_email,
app_identifier: @bundle_id,
app_name: @app_name,
app_version: "1.0",
company_name: ENV['FASTLANE_ITC_TEAM_NAME'],
language: 'English',
)
ENV.delete('JENKINS_HOME')
end
private_lane :pull_all_signing_certs do |options|
register_devices(
devices: {
'Developer iPhone' => 'xxxxxxxxxxxxxxxxxxxxxxxxx'
},
team_name: @app_team_name
)
match(
type: 'development',
git_branch: @match_git_org_branch,
app_identifier: @bundle_id,
keychain_name: ENV['KEYCHAIN_NAME'],
keychain_password: ENV['KEYCHAIN_PASSWORD'],
)
match(
type: 'appstore',
git_branch: @match_git_org_branch,
app_identifier: @bundle_id,
keychain_name: ENV['KEYCHAIN_NAME'],
keychain_password: ENV['KEYCHAIN_PASSWORD'],
)
end
def generate_bundle_id(org_id)
return "com.carwash#{org_id}"
end
def switch_to_git_tag_branch(code_version)
sh("git fetch --all --tags")
sh("git checkout v#{code_version}")
end
def get_custom_build_number
current_year = Date.today.year()
day_of_year = Date.today.yday()
unless ENV['BUILD_NUMBER']
return "#{current_year}.#{day_of_year}.1"
end
"#{current_year}.#{day_of_year}.#{ENV['BUILD_NUMBER']}"
end
def format_version_name(version, build)
"#{version} (#{build})"
end
end
def check_for_mobile_config_data(options)
path_to_load = './document.xml'
if (options[:xml_path])
path_to_load = options[:xml_path]
end
if (options[:asset_path])
path_to_load = options[:asset_path] + '/Config/document.xml'
end
@config_data = get_mobile_app_config_data_from_xml(xml_path: path_to_load)
end
def check_for_app_name(options)
unless @app_name
@app_name ||= options[:app_name]
@app_name ||= ENV['WLMA_MOBILE_APP_NAME']
@app_name ||= @config_data.application_name
if (options[:wlma_env])
UI.important "Updating App Name for Mobile Connect Environment: #{options[:wlma_env]}"
@app_name = @app_name + " " + options[:wlma_env].titleize
UI.important "New App Name is: #{@app_name}"
end
end
end
def check_for_team_name(options)
unless @app_team_name
@app_team_name ||= options[:team_name]
@app_team_name ||= ENV['WLMA_IOS_TEAM_NAME']
if (@config_data)
@app_team_name ||= @config_data.ios_team_name
end
team_name(@app_team_name)
itc_team_name(@app_team_name)
end
end
def check_for_org_id(options)
unless @org_id
@org_id ||= options[:org_id]
@org_id ||= ENV['WLMA_ORG_ID']
@org_id ||= @config_data.organization_id
@match_git_org_branch = "org-#{@org_id}"
@bundle_id = @config_data.application_id || generate_bundle_id(@org_id)
if (options[:wlma_env])
UI.important "Updating Bundle ID for Mobile Connect Environment: #{options[:wlma_env]}"
@bundle_id = @bundle_id + "." + options[:wlma_env].downcase
UI.important "New Bundle ID is: #{@bundle_id}"
end
end
end
def write_version_file(version)
File.write('../version.tmp', version)
end
`./fastlane/Appfile`
# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
# apple_id("[[APPLE_ID]]") # Your Apple email address
apple_id("xxxxxxxxxxxxxxxxxxxxxxxxxxxx")
# For more information about the Appfile, see:
# https://docs.fastlane.tools/advanced/#appfile
fastlane gems
| Gem | Version | Update-Status |
|---|---|---|
| fastlane | 2.157.2 | ✅ Up-To-Date |
Loaded fastlane plugins:
No plugins Loaded
Loaded gems
| Gem | Version |
|---|---|
| did_you_mean | 1.1.0 |
| executable-hooks | 1.6.0 |
| bundler-unload | 1.0.2 |
| rubygems-bundler | 1.4.5 |
| bundler | 1.16.6 |
| rake | 13.0.1 |
| CFPropertyList | 3.0.2 |
| concurrent-ruby | 1.1.5 |
| i18n | 0.9.5 |
| minitest | 5.11.3 |
| thread_safe | 0.3.6 |
| tzinfo | 1.2.5 |
| activesupport | 4.2.11.1 |
| public_suffix | 4.0.5 |
| addressable | 2.7.0 |
| httpclient | 2.8.3 |
| json | 2.3.1 |
| algoliasearch | 1.27.0 |
| atomos | 0.1.3 |
| aws-eventstream | 1.1.0 |
| aws-partitions | 1.363.0 |
| aws-sigv4 | 1.2.2 |
| jmespath | 1.4.0 |
| aws-sdk-core | 3.105.0 |
| aws-sdk-kms | 1.37.0 |
| aws-sdk-s3 | 1.79.1 |
| babosa | 1.0.3 |
| claide | 1.0.3 |
| fuzzy_match | 2.0.4 |
| nap | 1.1.0 |
| cocoapods-core | 1.8.0 |
| cocoapods-deintegrate | 1.0.4 |
| cocoapods-downloader | 1.2.2 |
| cocoapods-plugins | 1.0.0 |
| cocoapods-search | 1.0.0 |
| cocoapods-stats | 1.1.0 |
| netrc | 0.11.0 |
| cocoapods-trunk | 1.4.0 |
| cocoapods-try | 1.1.0 |
| colored2 | 3.1.2 |
| escape | 0.0.4 |
| fourflusher | 2.3.1 |
| gh_inspector | 1.1.3 |
| molinillo | 0.6.6 |
| ruby-macho | 1.4.0 |
| nanaimo | 0.3.0 |
| xcodeproj | 1.18.0 |
| cocoapods | 1.8.0 |
| coderay | 1.1.2 |
| colored | 1.2 |
| highline | 1.7.10 |
| commander-fastlane | 4.4.6 |
| declarative | 0.0.20 |
| declarative-option | 0.1.0 |
| digest-crc | 0.6.1 |
| unf_ext | 0.0.7.7 |
| unf | 0.1.4 |
| domain_name | 0.5.20190701 |
| dotenv | 2.7.6 |
| emoji_regex | 3.0.0 |
| excon | 0.76.0 |
| multipart-post | 2.0.0 |
| faraday | 1.0.1 |
| http-cookie | 1.0.3 |
| faraday-cookie_jar | 0.0.6 |
| faraday_middleware | 1.0.0 |
| fastimage | 2.2.0 |
| jwt | 2.2.2 |
| memoist | 0.16.2 |
| multi_json | 1.15.0 |
| os | 1.1.1 |
| signet | 0.14.0 |
| googleauth | 0.13.1 |
| mini_mime | 1.0.2 |
| uber | 0.1.0 |
| representable | 3.0.4 |
| retriable | 3.1.2 |
| google-api-client | 0.38.0 |
| google-cloud-env | 1.3.3 |
| google-cloud-errors | 1.0.1 |
| google-cloud-core | 1.5.0 |
| google-cloud-storage | 1.28.0 |
| mini_magick | 4.10.1 |
| plist | 3.5.0 |
| rubyzip | 2.3.0 |
| security | 0.1.3 |
| naturally | 2.2.0 |
| simctl | 1.6.8 |
| slack-notifier | 2.3.2 |
| terminal-notifier | 2.0.0 |
| unicode-display_width | 1.7.0 |
| terminal-table | 1.8.0 |
| tty-screen | 0.8.1 |
| tty-cursor | 0.7.1 |
| tty-spinner | 0.9.3 |
| word_wrap | 1.0.0 |
| rouge | 2.0.7 |
| xcpretty | 0.3.0 |
| xcpretty-travis-formatter | 1.0.0 |
| method_source | 0.9.0 |
| ox | 2.11.0 |
| pry | 0.12.2 |
generated on: 2020-09-01
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 4
- Comments: 23 (7 by maintainers)
@CovertLeopard Thank you! I was able to reproduce it now. I will have a fix out later today 💪
And for your ITMSTransporter issues, can you try setting this ENV? 👇
I wonder if you are having issues with DAV and need to use Aspera or Signiant