fastlane 2.157.2 → 2.157.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +66 -66
- data/deliver/lib/deliver/runner.rb +0 -1
- data/fastlane/lib/fastlane/actions/{.git_commit.rb.swp → .ensure_git_status_clean.rb.swp} +0 -0
- data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +11 -8
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +87 -68
- data/fastlane/lib/fastlane/actions/set_changelog.rb +0 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +12 -12
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/match/lib/match/spaceship_ensure.rb +5 -5
- data/{fastlane/lib/fastlane/.erb_template_helper.rb.swp → pilot/lib/pilot/.manager.rb.swp} +0 -0
- data/pilot/lib/pilot/build_manager.rb +0 -3
- data/pilot/lib/pilot/manager.rb +1 -2
- data/produce/lib/produce/itunes_connect.rb +0 -1
- data/sigh/lib/assets/resign.sh +9 -6
- data/sigh/lib/sigh/runner.rb +0 -1
- data/spaceship/lib/spaceship/client.rb +1 -0
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/{.DS_Store → connect_api/.DS_Store} +0 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +10 -4
- data/spaceship/lib/spaceship/connect_api/file_uploader.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +5 -5
- data/spaceship/lib/spaceship/connect_api/models/app_price_point.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +7 -1
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +50 -50
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +8 -0
- metadata +25 -20
@@ -6,7 +6,6 @@ module Fastlane
|
|
6
6
|
|
7
7
|
UI.message("Login to App Store Connect (#{params[:username]})")
|
8
8
|
Spaceship::ConnectAPI.login(params[:username], use_portal: false, use_tunes: true)
|
9
|
-
Spaceship::ConnectAPI.select_team
|
10
9
|
UI.message("Login successful")
|
11
10
|
|
12
11
|
app = Spaceship::ConnectAPI::App.find(params[:app_identifier])
|
@@ -2886,7 +2886,7 @@ func downloadDsyms(username: String,
|
|
2886
2886
|
func downloadFromPlayStore(packageName: String,
|
2887
2887
|
versionName: String? = nil,
|
2888
2888
|
track: String = "production",
|
2889
|
-
metadataPath: String
|
2889
|
+
metadataPath: String = "./metadata",
|
2890
2890
|
key: String? = nil,
|
2891
2891
|
issuer: String? = nil,
|
2892
2892
|
jsonKey: String? = nil,
|
@@ -7431,7 +7431,7 @@ func supply(packageName: String,
|
|
7431
7431
|
releaseStatus: String = "completed",
|
7432
7432
|
track: String = "production",
|
7433
7433
|
rollout: String? = nil,
|
7434
|
-
metadataPath: String
|
7434
|
+
metadataPath: String = "./metadata",
|
7435
7435
|
key: String? = nil,
|
7436
7436
|
issuer: String? = nil,
|
7437
7437
|
jsonKey: String? = nil,
|
@@ -8588,7 +8588,7 @@ func uploadToPlayStore(packageName: String,
|
|
8588
8588
|
releaseStatus: String = "completed",
|
8589
8589
|
track: String = "production",
|
8590
8590
|
rollout: String? = nil,
|
8591
|
-
metadataPath: String
|
8591
|
+
metadataPath: String = "./metadata",
|
8592
8592
|
key: String? = nil,
|
8593
8593
|
issuer: String? = nil,
|
8594
8594
|
jsonKey: String? = nil,
|
@@ -9118,7 +9118,7 @@ func xcov(workspace: String? = nil,
|
|
9118
9118
|
coverallsServiceJobId: String? = nil,
|
9119
9119
|
coverallsRepoToken: String? = nil,
|
9120
9120
|
xcconfig: String? = nil,
|
9121
|
-
ideFoundationPath: String = "/Applications/Xcode-
|
9121
|
+
ideFoundationPath: String = "/Applications/Xcode-12.beta.5.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
9122
9122
|
legacySupport: Bool = false)
|
9123
9123
|
{
|
9124
9124
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
@@ -9254,14 +9254,14 @@ func parseInt(fromString: String, function: String = #function) -> Int {
|
|
9254
9254
|
return NSString(string: fromString.trimmingCharacters(in: .punctuationCharacters)).integerValue
|
9255
9255
|
}
|
9256
9256
|
|
9257
|
-
let deliverfile
|
9258
|
-
let gymfile
|
9259
|
-
let matchfile
|
9260
|
-
let precheckfile
|
9261
|
-
let scanfile
|
9262
|
-
let screengrabfile
|
9263
|
-
let snapshotfile
|
9257
|
+
let deliverfile = Deliverfile()
|
9258
|
+
let gymfile = Gymfile()
|
9259
|
+
let matchfile = Matchfile()
|
9260
|
+
let precheckfile = Precheckfile()
|
9261
|
+
let scanfile = Scanfile()
|
9262
|
+
let screengrabfile = Screengrabfile()
|
9263
|
+
let snapshotfile = Snapshotfile()
|
9264
9264
|
|
9265
9265
|
// Please don't remove the lines below
|
9266
9266
|
// They are used to detect outdated files
|
9267
|
-
// FastlaneRunnerAPIVersion [0.9.
|
9267
|
+
// FastlaneRunnerAPIVersion [0.9.91]
|
Binary file
|
@@ -19,17 +19,17 @@ module Match
|
|
19
19
|
end
|
20
20
|
|
21
21
|
UI.message("Verifying that the certificate and profile are still valid on the Dev Portal...")
|
22
|
-
Spaceship.login(
|
23
|
-
Spaceship.select_team
|
22
|
+
Spaceship::ConnectAPI.login(use_portal: true, use_tunes: false)
|
23
|
+
Spaceship::ConnectAPI.select_team
|
24
24
|
end
|
25
25
|
|
26
26
|
# The team ID of the currently logged in team
|
27
27
|
def team_id
|
28
|
-
return Spaceship.client.team_id
|
28
|
+
return Spaceship::ConnectAPI.client.team_id
|
29
29
|
end
|
30
30
|
|
31
31
|
def bundle_identifier_exists(username: nil, app_identifier: nil, platform: nil)
|
32
|
-
found = Spaceship.
|
32
|
+
found = Spaceship::ConnectAPI::BundleId.find(app_identifier)
|
33
33
|
return if found
|
34
34
|
|
35
35
|
require 'sigh/runner'
|
@@ -39,7 +39,7 @@ module Match
|
|
39
39
|
})
|
40
40
|
UI.error("An app with that bundle ID needs to exist in order to create a provisioning profile for it")
|
41
41
|
UI.error("================================================================")
|
42
|
-
available_apps = Spaceship.
|
42
|
+
available_apps = Spaceship::ConnectAPI::BundleId.all.collect { |a| "#{a.identifier} (#{a.name})" }
|
43
43
|
UI.message("Available apps:\n- #{available_apps.join("\n- ")}")
|
44
44
|
UI.error("Make sure to run `fastlane match` with the same user and team every time.")
|
45
45
|
UI.user_error!("Couldn't find bundle identifier '#{app_identifier}' for the user '#{username}'")
|
Binary file
|
@@ -364,10 +364,7 @@ module Pilot
|
|
364
364
|
begin
|
365
365
|
team = tunes_client.teams.find { |t| t['contentProvider']['contentProviderId'].to_s == tunes_client.team_id }
|
366
366
|
name = team['contentProvider']['name']
|
367
|
-
STDERR.puts("name: #{name}")
|
368
|
-
STDERR.puts("id: #{generic_transporter.provider_ids}")
|
369
367
|
provider_id = generic_transporter.provider_ids[name]
|
370
|
-
STDERR.puts("provider_id: #{provider_id}")
|
371
368
|
UI.verbose("Inferred provider id #{provider_id} for team #{name}.")
|
372
369
|
return FastlaneCore::ItunesTransporter.new(options[:username], nil, false, provider_id)
|
373
370
|
rescue => ex
|
data/pilot/lib/pilot/manager.rb
CHANGED
@@ -24,8 +24,7 @@ module Pilot
|
|
24
24
|
config[:username] ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)
|
25
25
|
|
26
26
|
UI.message("Login to App Store Connect (#{config[:username]})")
|
27
|
-
Spaceship::ConnectAPI.login(config[:username], use_portal: false, use_tunes: true)
|
28
|
-
Spaceship::ConnectAPI.select_team(tunes_team_id: config[:team_id], team_name: config[:team_name])
|
27
|
+
Spaceship::ConnectAPI.login(config[:username], use_portal: false, use_tunes: true, tunes_team_id: config[:team_id], team_name: config[:team_name])
|
29
28
|
UI.message("Login successful")
|
30
29
|
end
|
31
30
|
end
|
@@ -10,7 +10,6 @@ module Produce
|
|
10
10
|
@full_bundle_identifier.gsub!('*', Produce.config[:bundle_identifier_suffix].to_s) if wildcard_bundle?
|
11
11
|
|
12
12
|
Spaceship::ConnectAPI.login(Produce.config[:username], nil, use_portal: false, use_tunes: true)
|
13
|
-
Spaceship::ConnectAPI.client.select_team
|
14
13
|
|
15
14
|
create_new_app
|
16
15
|
end
|
data/sigh/lib/assets/resign.sh
CHANGED
@@ -72,6 +72,9 @@
|
|
72
72
|
# new features June 2020
|
73
73
|
# 1. enable (re)signing of OnDemandResources when ipa has been built for the appstore
|
74
74
|
#
|
75
|
+
# new features August 2020
|
76
|
+
# 1. fixes usage for users with GNU-sed in their $PATH
|
77
|
+
#
|
75
78
|
|
76
79
|
# Logging functions
|
77
80
|
|
@@ -762,7 +765,7 @@ function resign {
|
|
762
765
|
|
763
766
|
# Get the entry from app's entitlements
|
764
767
|
# Read it with PlistBuddy as XML, then strip the header and <plist></plist> part
|
765
|
-
ENTITLEMENTS_VALUE="$(PlistBuddy -x -c "Print $KEY" "$APP_ENTITLEMENTS" 2>/dev/null | sed -e 's,.*<plist[^>]*>\(.*\)</plist>,\1,g')"
|
768
|
+
ENTITLEMENTS_VALUE="$(PlistBuddy -x -c "Print $KEY" "$APP_ENTITLEMENTS" 2>/dev/null | /usr/bin/sed -e 's,.*<plist[^>]*>\(.*\)</plist>,\1,g')"
|
766
769
|
if [[ -z "$ENTITLEMENTS_VALUE" ]]; then
|
767
770
|
log "No value for '$KEY'"
|
768
771
|
continue
|
@@ -780,7 +783,7 @@ function resign {
|
|
780
783
|
log "Certificate $CERTIFICATE matches a SHA1 pattern"
|
781
784
|
local certificate_matches="$( security find-identity -v -p codesigning | grep -m 1 "$CERTIFICATE" )"
|
782
785
|
if [ -n "$certificate_matches" ]; then
|
783
|
-
certificate_name="$(
|
786
|
+
certificate_name="$(/usr/bin/sed -E s/[^\"]+\"\([^\"]+\)\".*/\\1/ <<< $certificate_matches )"
|
784
787
|
log "Certificate name: $certificate_name"
|
785
788
|
fi
|
786
789
|
fi
|
@@ -807,18 +810,18 @@ function resign {
|
|
807
810
|
# otherwise it interprets they key path as nested keys
|
808
811
|
# TODO: Should be able to replace with echo ${KEY//\./\\\\.} and remove shellcheck disable directive
|
809
812
|
# shellcheck disable=SC2001
|
810
|
-
PLUTIL_KEY=$(echo "$KEY" | sed 's/\./\\\./g')
|
813
|
+
PLUTIL_KEY=$(echo "$KEY" | /usr/bin/sed 's/\./\\\./g')
|
811
814
|
plutil -insert "$PLUTIL_KEY" -xml "$ENTITLEMENTS_VALUE" "$PATCHED_ENTITLEMENTS"
|
812
815
|
|
813
816
|
# Patch the ID value if specified
|
814
817
|
if [[ "$ID_TYPE" == "APP_ID" ]]; then
|
815
818
|
# Replace old value with new value in patched entitlements
|
816
819
|
log "Replacing old app identifier prefix '$OLD_APP_ID' with new value '$NEW_APP_ID'"
|
817
|
-
sed -i .bak "s/$OLD_APP_ID/$NEW_APP_ID/g" "$PATCHED_ENTITLEMENTS"
|
820
|
+
/usr/bin/sed -i .bak "s/$OLD_APP_ID/$NEW_APP_ID/g" "$PATCHED_ENTITLEMENTS"
|
818
821
|
elif [[ "$ID_TYPE" == "TEAM_ID" ]]; then
|
819
822
|
# Replace old team identifier with new value
|
820
823
|
log "Replacing old team ID '$OLD_TEAM_ID' with new team ID: '$NEW_TEAM_ID'"
|
821
|
-
sed -i .bak "s/$OLD_TEAM_ID/$NEW_TEAM_ID/g" "$PATCHED_ENTITLEMENTS"
|
824
|
+
/usr/bin/sed -i .bak "s/$OLD_TEAM_ID/$NEW_TEAM_ID/g" "$PATCHED_ENTITLEMENTS"
|
822
825
|
else
|
823
826
|
continue
|
824
827
|
fi
|
@@ -835,7 +838,7 @@ function resign {
|
|
835
838
|
# e.g. <string>AB1GP98Q19.com.example.foo</string>
|
836
839
|
# vs
|
837
840
|
# com.example.foo
|
838
|
-
sed -i .bak "s!${OLD_BUNDLE_ID}</string>!${NEW_BUNDLE_ID}</string>!g" "$PATCHED_ENTITLEMENTS"
|
841
|
+
/usr/bin/sed -i .bak "s!${OLD_BUNDLE_ID}</string>!${NEW_BUNDLE_ID}</string>!g" "$PATCHED_ENTITLEMENTS"
|
839
842
|
|
840
843
|
log "Resigning application using certificate: '$CERTIFICATE'"
|
841
844
|
log "and patched entitlements:"
|
data/sigh/lib/sigh/runner.rb
CHANGED
@@ -19,7 +19,6 @@ module Sigh
|
|
19
19
|
|
20
20
|
UI.message("Starting login with user '#{Sigh.config[:username]}'")
|
21
21
|
Spaceship::ConnectAPI.login(Sigh.config[:username], nil, use_portal: true, use_tunes: false)
|
22
|
-
Spaceship::ConnectAPI.select_team
|
23
22
|
UI.message("Successfully logged in")
|
24
23
|
|
25
24
|
profiles = [] if Sigh.config[:skip_fetch_profiles]
|
@@ -39,6 +39,7 @@ require 'spaceship/connect_api/models/app_info_localization'
|
|
39
39
|
require 'spaceship/connect_api/models/app_preview_set'
|
40
40
|
require 'spaceship/connect_api/models/app_preview'
|
41
41
|
require 'spaceship/connect_api/models/app_price'
|
42
|
+
require 'spaceship/connect_api/models/app_price_point'
|
42
43
|
require 'spaceship/connect_api/models/app_price_tier'
|
43
44
|
require 'spaceship/connect_api/models/app_store_review_attachment'
|
44
45
|
require 'spaceship/connect_api/models/app_store_review_detail'
|
Binary file
|
@@ -51,12 +51,18 @@ module Spaceship
|
|
51
51
|
portal_client = Spaceship::Portal.login(user, password) if use_portal
|
52
52
|
tunes_client = Spaceship::Tunes.login(user, password) if use_tunes
|
53
53
|
|
54
|
+
# Check if environment variables are set for Spaceship::Portal or Spaceship::Tunes to select team
|
55
|
+
portal_team_id ||= ENV['FASTLANE_TEAM_ID']
|
56
|
+
portal_team_name = team_name || ENV['FASTLANE_TEAM_NAME']
|
57
|
+
tunes_team_id ||= ENV['FASTLANE_ITC_TEAM_ID']
|
58
|
+
tunes_team_name = team_name || ENV['FASTLANE_ITC_TEAM_NAME']
|
59
|
+
|
54
60
|
# The clients will automatically select the first team if none is given
|
55
|
-
if portal_client && (!portal_team_id.
|
56
|
-
portal_client.select_team(team_id: portal_team_id, team_name:
|
61
|
+
if portal_client && (!portal_team_id.to_s.strip.empty? || !portal_team_name.to_s.strip.empty?)
|
62
|
+
portal_client.select_team(team_id: portal_team_id, team_name: portal_team_name)
|
57
63
|
end
|
58
|
-
if tunes_client && (!tunes_team_id.
|
59
|
-
tunes_client.select_team(team_id: tunes_team_id, team_name:
|
64
|
+
if tunes_client && (!tunes_team_id.to_s.strip.empty? || !tunes_team_name.to_s.strip.empty?)
|
65
|
+
tunes_client.select_team(team_id: tunes_team_id, team_name: tunes_team_name)
|
60
66
|
end
|
61
67
|
|
62
68
|
return ConnectAPI::Client.new(tunes_client: tunes_client, portal_client: portal_client)
|
@@ -192,7 +192,7 @@ module Spaceship
|
|
192
192
|
.last
|
193
193
|
end
|
194
194
|
|
195
|
-
def get_live_app_store_version(platform: nil, includes:
|
195
|
+
def get_live_app_store_version(platform: nil, includes: Spaceship::ConnectAPI::AppStoreVersion::ESSENTIAL_INCLUDES)
|
196
196
|
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
197
197
|
filter = {
|
198
198
|
appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::READY_FOR_SALE,
|
@@ -201,7 +201,7 @@ module Spaceship
|
|
201
201
|
return get_app_store_versions(filter: filter, includes: includes).first
|
202
202
|
end
|
203
203
|
|
204
|
-
def get_edit_app_store_version(platform: nil, includes:
|
204
|
+
def get_edit_app_store_version(platform: nil, includes: Spaceship::ConnectAPI::AppStoreVersion::ESSENTIAL_INCLUDES)
|
205
205
|
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
206
206
|
filter = {
|
207
207
|
appStoreState: [
|
@@ -221,7 +221,7 @@ module Spaceship
|
|
221
221
|
.last
|
222
222
|
end
|
223
223
|
|
224
|
-
def get_in_review_app_store_version(platform: nil, includes:
|
224
|
+
def get_in_review_app_store_version(platform: nil, includes: Spaceship::ConnectAPI::AppStoreVersion::ESSENTIAL_INCLUDES)
|
225
225
|
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
226
226
|
filter = {
|
227
227
|
appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::IN_REVIEW,
|
@@ -230,7 +230,7 @@ module Spaceship
|
|
230
230
|
return get_app_store_versions(filter: filter, includes: includes).first
|
231
231
|
end
|
232
232
|
|
233
|
-
def get_pending_release_app_store_version(platform: nil, includes:
|
233
|
+
def get_pending_release_app_store_version(platform: nil, includes: Spaceship::ConnectAPI::AppStoreVersion::ESSENTIAL_INCLUDES)
|
234
234
|
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
235
235
|
filter = {
|
236
236
|
appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::PENDING_DEVELOPER_RELEASE,
|
@@ -239,7 +239,7 @@ module Spaceship
|
|
239
239
|
return get_app_store_versions(filter: filter, includes: includes).first
|
240
240
|
end
|
241
241
|
|
242
|
-
def get_app_store_versions(filter: {}, includes:
|
242
|
+
def get_app_store_versions(filter: {}, includes: Spaceship::ConnectAPI::AppStoreVersion::ESSENTIAL_INCLUDES, limit: nil, sort: nil)
|
243
243
|
resps = Spaceship::ConnectAPI.get_app_store_versions(app_id: id, filter: filter, includes: includes, limit: limit, sort: sort).all_pages
|
244
244
|
return resps.flat_map(&:to_models)
|
245
245
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
module Spaceship
|
3
|
+
class ConnectAPI
|
4
|
+
class AppPricePoint
|
5
|
+
include Spaceship::ConnectAPI::Model
|
6
|
+
|
7
|
+
attr_accessor :customer_price
|
8
|
+
|
9
|
+
attr_accessor :proceeds
|
10
|
+
|
11
|
+
attr_accessor :price_tier
|
12
|
+
attr_accessor :territory
|
13
|
+
|
14
|
+
attr_mapping({
|
15
|
+
"customerPrice" => "customer_price",
|
16
|
+
"proceeds" => "proceeds",
|
17
|
+
"priceTier" => "price_tier",
|
18
|
+
"territory" => "territory"
|
19
|
+
})
|
20
|
+
|
21
|
+
def self.type
|
22
|
+
return "appPricePoints"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -55,9 +55,15 @@ module Spaceship
|
|
55
55
|
"downloadable" => "downloadable",
|
56
56
|
"createdDate" => "created_date",
|
57
57
|
|
58
|
-
"appStoreVersionSubmission" => "app_store_version_submission"
|
58
|
+
"appStoreVersionSubmission" => "app_store_version_submission",
|
59
|
+
"build" => "build"
|
59
60
|
})
|
60
61
|
|
62
|
+
ESSENTIAL_INCLUDES = [
|
63
|
+
"appStoreVersionSubmission",
|
64
|
+
"build"
|
65
|
+
].join(",")
|
66
|
+
|
61
67
|
def self.type
|
62
68
|
return "appStoreVersions"
|
63
69
|
end
|