fastlane 2.118.0.beta.20190302200102 → 2.118.0.beta.20190303200015
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +14 -0
- data/fastlane/lib/fastlane/actions/hockey.rb +7 -0
- data/fastlane/lib/fastlane/actions/import_certificate.rb +12 -9
- data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +11 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/project.rb +1 -1
- data/gym/lib/gym/code_signing_mapping.rb +22 -1
- data/supply/lib/supply/client.rb +17 -0
- data/supply/lib/supply/options.rb +21 -1
- data/supply/lib/supply/uploader.rb +22 -0
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d1b799e1027ecb9a7c84922a1b5a73de470cc3d
|
4
|
+
data.tar.gz: 6012942fdc8fc7bab6b073225aa492808145796f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfa686c56e9ed17d85b80a4021e749e8f10d99b257d7acba8cc31230e5fb63105cf67051b15fe4f37929c6f0ebf97c19ebdb88b7c7c5cfa16cf46e96b5d2a585
|
7
|
+
data.tar.gz: 67c0bf3b3f678ace7e68758acbaa87b81579afab56a3894572b5e230aea9418226d59cd9c72bcd95093d186de9aa6b848f336c32fe5272918058385ac7c8bace
|
@@ -78,11 +78,25 @@ To gradually roll out a new build use
|
|
78
78
|
fastlane supply --apk path/app.apk --track rollout --rollout 0.5
|
79
79
|
```
|
80
80
|
|
81
|
+
### Expansion files (`.obb`)
|
82
|
+
|
81
83
|
Expansion files (obbs) found under the same directory as your APK will also be uploaded together with your APK as long as:
|
82
84
|
|
83
85
|
- they are identified as type 'main' or 'patch' (by containing 'main' or 'patch' in their file name)
|
84
86
|
- you have at most one of each type
|
85
87
|
|
88
|
+
If you only want to update the APK, but keep the expansion files from the previous version on Google Play use
|
89
|
+
|
90
|
+
```no-highlight
|
91
|
+
fastlane supply --apk path/app.apk --obb_main_references_version 21 --obb_main_file_size 666154207
|
92
|
+
```
|
93
|
+
|
94
|
+
or
|
95
|
+
|
96
|
+
```no-highlight
|
97
|
+
fastlane supply --apk path/app.apk --obb_patch_references_version 21 --obb_patch_file_size 666154207
|
98
|
+
```
|
99
|
+
|
86
100
|
## Uploading an AAB
|
87
101
|
|
88
102
|
To upload a new [Android application bundle](https://developer.android.com/guide/app-bundle/) to Google Play, simply run
|
@@ -376,6 +376,13 @@ module Fastlane
|
|
376
376
|
bundle_version: "1.0.2.145",
|
377
377
|
ipa: "./my.msi",
|
378
378
|
notes: "Changelog"
|
379
|
+
)',
|
380
|
+
'# You can bypass the CDN if you are uploading to Hockey and receive an SSL error (which can happen on corporate firewalls)
|
381
|
+
hockey(
|
382
|
+
api_token: "...",
|
383
|
+
ipa: "./app.ipa",
|
384
|
+
notes: "Changelog",
|
385
|
+
bypass_cdn: true
|
379
386
|
)'
|
380
387
|
]
|
381
388
|
end
|
@@ -15,6 +15,14 @@ module Fastlane
|
|
15
15
|
|
16
16
|
def self.available_options
|
17
17
|
[
|
18
|
+
FastlaneCore::ConfigItem.new(key: :certificate_path,
|
19
|
+
description: "Path to certificate",
|
20
|
+
optional: false),
|
21
|
+
FastlaneCore::ConfigItem.new(key: :certificate_password,
|
22
|
+
description: "Certificate password",
|
23
|
+
sensitive: true,
|
24
|
+
default_value: "",
|
25
|
+
optional: true),
|
18
26
|
FastlaneCore::ConfigItem.new(key: :keychain_name,
|
19
27
|
env_name: "KEYCHAIN_NAME",
|
20
28
|
description: "Keychain the items should be imported to",
|
@@ -28,14 +36,6 @@ module Fastlane
|
|
28
36
|
description: "The password for the keychain. Note that for the login keychain this is your user's password",
|
29
37
|
sensitive: true,
|
30
38
|
optional: true),
|
31
|
-
FastlaneCore::ConfigItem.new(key: :certificate_path,
|
32
|
-
description: "Path to certificate",
|
33
|
-
optional: false),
|
34
|
-
FastlaneCore::ConfigItem.new(key: :certificate_password,
|
35
|
-
description: "Certificate password",
|
36
|
-
sensitive: true,
|
37
|
-
default_value: "",
|
38
|
-
optional: true),
|
39
39
|
FastlaneCore::ConfigItem.new(key: :log_output,
|
40
40
|
description: "If output should be logged to the console",
|
41
41
|
type: Boolean,
|
@@ -53,7 +53,7 @@ module Fastlane
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def self.details
|
56
|
-
"Import certificates into the current default keychain. Use `create_keychain` to create a new keychain."
|
56
|
+
"Import certificates (and private keys) into the current default keychain. Use the `create_keychain` action to create a new keychain."
|
57
57
|
end
|
58
58
|
|
59
59
|
def self.example_code
|
@@ -62,6 +62,9 @@ module Fastlane
|
|
62
62
|
'import_certificate(
|
63
63
|
certificate_path: "certs/dist.p12",
|
64
64
|
certificate_password: ENV["CERTIFICATE_PASSWORD"] || "default"
|
65
|
+
)',
|
66
|
+
'import_certificate(
|
67
|
+
certificate_path: "certs/development.cer"
|
65
68
|
)'
|
66
69
|
]
|
67
70
|
end
|
@@ -26,6 +26,9 @@ module Fastlane
|
|
26
26
|
# optionally add the force component
|
27
27
|
command << '--force-with-lease' if params[:force_with_lease]
|
28
28
|
|
29
|
+
# optionally add the no-verify component
|
30
|
+
command << '--no-verify' if params[:no_verify]
|
31
|
+
|
29
32
|
# execute our command
|
30
33
|
Actions.sh('pwd')
|
31
34
|
return command.join(' ') if Helper.test?
|
@@ -68,7 +71,12 @@ module Fastlane
|
|
68
71
|
FastlaneCore::ConfigItem.new(key: :remote,
|
69
72
|
env_name: "FL_GIT_PUSH_REMOTE",
|
70
73
|
description: "The remote to push to",
|
71
|
-
default_value: 'origin')
|
74
|
+
default_value: 'origin'),
|
75
|
+
FastlaneCore::ConfigItem.new(key: :no_verify,
|
76
|
+
env_name: "FL_GIT_PUSH_USE_NO_VERIFY",
|
77
|
+
description: "Whether or not to use --no-verify",
|
78
|
+
type: Boolean,
|
79
|
+
default_value: false)
|
72
80
|
]
|
73
81
|
end
|
74
82
|
|
@@ -93,7 +101,8 @@ module Fastlane
|
|
93
101
|
remote_branch: "develop", # optional, default is set to local_branch
|
94
102
|
force: true, # optional, default: false
|
95
103
|
force_with_lease: true, # optional, default: false
|
96
|
-
tags: false
|
104
|
+
tags: false, # optional, default: true
|
105
|
+
no_verify: true # optional, default: false
|
97
106
|
)'
|
98
107
|
]
|
99
108
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.118.0.beta.
|
2
|
+
VERSION = '2.118.0.beta.20190303200015'.freeze
|
3
3
|
DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
|
4
4
|
MINIMUM_XCODE_RELEASE = "7.0".freeze
|
5
5
|
RUBOCOP_REQUIREMENT = '0.49.1'.freeze
|
@@ -103,8 +103,8 @@ module FastlaneCore
|
|
103
103
|
# returns the Xcodeproj::Workspace or nil if it is a project
|
104
104
|
def workspace
|
105
105
|
return nil unless workspace?
|
106
|
+
|
106
107
|
@workspace ||= Xcodeproj::Workspace.new_from_xcworkspace(path)
|
107
|
-
@workspace.load_schemes(path)
|
108
108
|
@workspace
|
109
109
|
end
|
110
110
|
|
@@ -91,9 +91,30 @@ module Gym
|
|
91
91
|
return destination_sdkroot.include?(sdkroot)
|
92
92
|
end
|
93
93
|
|
94
|
+
def detect_configuration_for_archive
|
95
|
+
extract_from_scheme = lambda do
|
96
|
+
if self.project.workspace?
|
97
|
+
available_schemes = self.project.workspace.schemes.reject { |k, v| v.include?("Pods/Pods.xcodeproj") }
|
98
|
+
project_path = available_schemes[Gym.config[:scheme]]
|
99
|
+
else
|
100
|
+
project_path = self.project.path
|
101
|
+
end
|
102
|
+
|
103
|
+
if project_path
|
104
|
+
scheme_path = File.join(project_path, "xcshareddata", "xcschemes", "#{Gym.config[:scheme]}.xcscheme")
|
105
|
+
Xcodeproj::XCScheme.new(scheme_path).archive_action.build_configuration if File.exist?(scheme_path)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
configuration = Gym.config[:configuration]
|
110
|
+
configuration ||= extract_from_scheme.call if Gym.config[:scheme]
|
111
|
+
configuration ||= self.project.default_build_settings(key: "CONFIGURATION")
|
112
|
+
return configuration
|
113
|
+
end
|
114
|
+
|
94
115
|
def detect_project_profile_mapping
|
95
116
|
provisioning_profile_mapping = {}
|
96
|
-
specified_configuration =
|
117
|
+
specified_configuration = detect_configuration_for_archive
|
97
118
|
|
98
119
|
self.project.project_paths.each do |project_path|
|
99
120
|
UI.verbose("Parsing project file '#{project_path}' to find selected provisioning profiles")
|
data/supply/lib/supply/client.rb
CHANGED
@@ -357,6 +357,23 @@ module Supply
|
|
357
357
|
end
|
358
358
|
end
|
359
359
|
|
360
|
+
def update_obb(apk_version_code, expansion_file_type, references_version, file_size)
|
361
|
+
ensure_active_edit!
|
362
|
+
|
363
|
+
call_google_api do
|
364
|
+
client.update_expansion_file(
|
365
|
+
current_package_name,
|
366
|
+
current_edit.id,
|
367
|
+
apk_version_code,
|
368
|
+
expansion_file_type,
|
369
|
+
Google::Apis::AndroidpublisherV2::ExpansionFile.new(
|
370
|
+
references_version: references_version,
|
371
|
+
file_size: file_size
|
372
|
+
)
|
373
|
+
)
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
360
377
|
#####################################################
|
361
378
|
# @!group Screenshots
|
362
379
|
#####################################################
|
@@ -238,7 +238,27 @@ module Supply
|
|
238
238
|
version_codes.each do |version_code|
|
239
239
|
UI.user_error!("Version code '#{version_code}' is not an integer") unless version_code.kind_of?(Integer)
|
240
240
|
end
|
241
|
-
end)
|
241
|
+
end),
|
242
|
+
FastlaneCore::ConfigItem.new(key: :obb_main_references_version,
|
243
|
+
env_name: "SUPPLY_OBB_MAIN_REFERENCES_VERSION",
|
244
|
+
description: "References version of 'main' expansion file",
|
245
|
+
optional: true,
|
246
|
+
type: Numeric),
|
247
|
+
FastlaneCore::ConfigItem.new(key: :obb_main_file_size,
|
248
|
+
env_name: "SUPPLY_OBB_MAIN_FILE SIZE",
|
249
|
+
description: "Size of 'main' expansion file in bytes",
|
250
|
+
optional: true,
|
251
|
+
type: Numeric),
|
252
|
+
FastlaneCore::ConfigItem.new(key: :obb_patch_references_version,
|
253
|
+
env_name: "SUPPLY_OBB_PATCH_REFERENCES_VERSION",
|
254
|
+
description: "References version of 'patch' expansion file",
|
255
|
+
optional: true,
|
256
|
+
type: Numeric),
|
257
|
+
FastlaneCore::ConfigItem.new(key: :obb_patch_file_size,
|
258
|
+
env_name: "SUPPLY_OBB_PATCH_FILE SIZE",
|
259
|
+
description: "Size of 'patch' expansion file in bytes",
|
260
|
+
optional: true,
|
261
|
+
type: Numeric)
|
242
262
|
]
|
243
263
|
end
|
244
264
|
# rubocop:enable Metrics/PerceivedComplexity
|
@@ -184,6 +184,20 @@ module Supply
|
|
184
184
|
apk_version_code = client.upload_apk(apk_path)
|
185
185
|
UI.user_error!("Could not upload #{apk_path}") unless apk_version_code
|
186
186
|
|
187
|
+
if Supply.config[:obb_main_references_version] && Supply.config[:obb_main_file_size]
|
188
|
+
update_obb(apk_version_code,
|
189
|
+
'main',
|
190
|
+
Supply.config[:obb_main_references_version],
|
191
|
+
Supply.config[:obb_main_file_size])
|
192
|
+
end
|
193
|
+
|
194
|
+
if Supply.config[:obb_patch_references_version] && Supply.config[:obb_patch_file_size]
|
195
|
+
update_obb(apk_version_code,
|
196
|
+
'patch',
|
197
|
+
Supply.config[:obb_patch_references_version],
|
198
|
+
Supply.config[:obb_patch_file_size])
|
199
|
+
end
|
200
|
+
|
187
201
|
upload_obbs(apk_path, apk_version_code)
|
188
202
|
|
189
203
|
if metadata_path
|
@@ -198,6 +212,14 @@ module Supply
|
|
198
212
|
apk_version_code
|
199
213
|
end
|
200
214
|
|
215
|
+
def update_obb(apk_version_code, expansion_file_type, references_version, file_size)
|
216
|
+
UI.message("Updating '#{expansion_file_type}' expansion file from version '#{references_version}'...")
|
217
|
+
client.update_obb(apk_version_code,
|
218
|
+
expansion_file_type,
|
219
|
+
references_version,
|
220
|
+
file_size)
|
221
|
+
end
|
222
|
+
|
201
223
|
def update_track(apk_version_codes)
|
202
224
|
UI.message("Updating track '#{Supply.config[:track]}'...")
|
203
225
|
check_superseded_tracks(apk_version_codes) if Supply.config[:check_superseded_tracks]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.118.0.beta.
|
4
|
+
version: 2.118.0.beta.20190303200015
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Dee
|
@@ -27,7 +27,7 @@ authors:
|
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2019-03-
|
30
|
+
date: 2019-03-03 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
requirements:
|
56
56
|
- - ">="
|
57
57
|
- !ruby/object:Gem::Version
|
58
|
-
version: 1.
|
58
|
+
version: 1.8.1
|
59
59
|
- - "<"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 2.0.0
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: 1.8.1
|
69
69
|
- - "<"
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: 2.0.0
|
@@ -1687,23 +1687,23 @@ metadata:
|
|
1687
1687
|
post_install_message:
|
1688
1688
|
rdoc_options: []
|
1689
1689
|
require_paths:
|
1690
|
-
- pem/lib
|
1691
|
-
- cert/lib
|
1692
|
-
- fastlane/lib
|
1693
1690
|
- spaceship/lib
|
1691
|
+
- fastlane_core/lib
|
1692
|
+
- produce/lib
|
1693
|
+
- frameit/lib
|
1694
|
+
- fastlane/lib
|
1695
|
+
- screengrab/lib
|
1696
|
+
- pem/lib
|
1694
1697
|
- credentials_manager/lib
|
1698
|
+
- cert/lib
|
1699
|
+
- pilot/lib
|
1700
|
+
- gym/lib
|
1695
1701
|
- sigh/lib
|
1696
|
-
-
|
1697
|
-
- supply/lib
|
1702
|
+
- snapshot/lib
|
1698
1703
|
- scan/lib
|
1699
1704
|
- match/lib
|
1700
|
-
-
|
1701
|
-
- frameit/lib
|
1702
|
-
- produce/lib
|
1703
|
-
- gym/lib
|
1704
|
-
- screengrab/lib
|
1705
|
+
- supply/lib
|
1705
1706
|
- precheck/lib
|
1706
|
-
- snapshot/lib
|
1707
1707
|
- deliver/lib
|
1708
1708
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1709
1709
|
requirements:
|