fastlane 2.131.0 → 2.135.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +70 -70
- data/cert/lib/cert/module.rb +2 -0
- data/cert/lib/cert/options.rb +6 -0
- data/cert/lib/cert/runner.rb +17 -11
- data/fastlane/lib/fastlane/action.rb +1 -1
- data/{pilot/lib/pilot/.manager.rb.swp → fastlane/lib/fastlane/actions/.google_play_track_version_codes.rb.swp} +0 -0
- data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +10 -2
- data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
- data/fastlane/lib/fastlane/actions/cocoapods.rb +24 -2
- data/fastlane/lib/fastlane/actions/copy_artifacts.rb +1 -1
- data/fastlane/lib/fastlane/actions/deploygate.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +26 -5
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +26 -2
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +26 -3
- data/fastlane/lib/fastlane/actions/download_from_play_store.rb +1 -1
- data/fastlane/lib/fastlane/actions/ensure_env_vars.rb +58 -0
- data/fastlane/lib/fastlane/actions/get_version_number.rb +12 -3
- data/fastlane/lib/fastlane/actions/google_play_track_version_codes.rb +5 -1
- data/fastlane/lib/fastlane/actions/onesignal.rb +59 -29
- data/fastlane/lib/fastlane/actions/pod_push.rb +10 -1
- data/fastlane/lib/fastlane/actions/register_devices.rb +1 -1
- data/fastlane/lib/fastlane/actions/sonar.rb +16 -0
- data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_fastlane.rb +9 -49
- data/fastlane/lib/fastlane/actions/update_keychain_access_groups.rb +94 -0
- data/fastlane/lib/fastlane/environment_printer.rb +9 -3
- data/fastlane/lib/fastlane/fast_file.rb +10 -4
- data/fastlane/lib/fastlane/lane_manager.rb +1 -1
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +12 -2
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
- data/fastlane/lib/fastlane/runner.rb +2 -2
- data/fastlane/lib/fastlane/setup/setup_android.rb +1 -1
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +10 -2
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +72 -3
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +121 -1
- data/fastlane/swift/Fastlane.swift +3928 -18
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +81 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +63 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +15 -2
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +109 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +39 -2
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +71 -1
- data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +3 -3
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +1 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +1 -3
- data/fastlane_core/lib/fastlane_core/swag.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +3 -2
- data/frameit/lib/frameit/screenshot.rb +4 -0
- data/match/lib/match/generator.rb +1 -0
- data/match/lib/match/importer.rb +1 -1
- data/match/lib/match/module.rb +2 -0
- data/match/lib/match/nuke.rb +5 -5
- data/match/lib/match/options.rb +12 -0
- data/match/lib/match/runner.rb +2 -0
- data/match/lib/match/storage/git_storage.rb +8 -2
- data/match/lib/match/storage/google_cloud_storage.rb +85 -33
- data/produce/lib/produce/service.rb +7 -1
- data/scan/lib/scan/error_handler.rb +9 -4
- data/scan/lib/scan/runner.rb +1 -1
- data/sigh/lib/assets/resign.sh +2 -2
- data/sigh/lib/sigh/runner.rb +13 -5
- data/snapshot/lib/snapshot/options.rb +5 -0
- data/snapshot/lib/snapshot/reports_generator.rb +3 -0
- data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +2 -2
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +16 -1
- data/spaceship/lib/spaceship/client.rb +2 -2
- data/spaceship/lib/spaceship/connect_api/models/app.rb +6 -6
- data/spaceship/lib/spaceship/connect_api/models/build.rb +3 -3
- data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/device.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +1 -1
- data/spaceship/lib/spaceship/portal/provisioning_profile.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_version.rb +4 -0
- data/spaceship/lib/spaceship/tunes/application.rb +4 -0
- data/spaceship/lib/spaceship/tunes/iap_family_details.rb +10 -2
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +25 -0
- data/supply/lib/supply.rb +23 -0
- data/supply/lib/supply/client.rb +101 -55
- data/supply/lib/supply/options.rb +49 -14
- data/supply/lib/supply/release_listing.rb +18 -0
- data/supply/lib/supply/setup.rb +42 -34
- data/supply/lib/supply/uploader.rb +168 -93
- metadata +50 -53
- 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/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/gym/lib/gym/.runner.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fe764bd3b1a32e200d3338929d3fa02a91deffd9479300b16769132fd42cabd
|
4
|
+
data.tar.gz: 651915b3334ee1f7bde2fbade3c0669e587494569e02709572ac7baad44d7b12
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 230ff3dc2b23e63be722cb1d6871d6663200ba62abd427d63aa0f5e571f982663951ae5eafa5ba8b60505a617be36ce4823ff6708064b22753f6b5d2a1fba10f
|
7
|
+
data.tar.gz: 9528e57ea82bc5dffb36291132fb00d67c7f82b3740b69f64c238eb7c7969bc75cde2baf4bd34b1aef76af880eb487fa54cddf1b075ce90e8ff64cb5801216b1
|
data/README.md
CHANGED
@@ -34,87 +34,93 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
34
34
|
<!-- This table is regenerated and resorted on each release -->
|
35
35
|
<table id='team'>
|
36
36
|
<tr>
|
37
|
-
<td id='
|
38
|
-
<a href='https://github.com/
|
39
|
-
<img src='https://github.com/
|
40
|
-
</a>
|
41
|
-
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
42
|
-
</td>
|
43
|
-
<td id='jorge-revuelta-h'>
|
44
|
-
<a href='https://github.com/minuscorp'>
|
45
|
-
<img src='https://github.com/minuscorp.png?size=140'>
|
46
|
-
</a>
|
47
|
-
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
48
|
-
</td>
|
49
|
-
<td id='jimmy-dee'>
|
50
|
-
<a href='https://github.com/jdee'>
|
51
|
-
<img src='https://github.com/jdee.png?size=140'>
|
52
|
-
</a>
|
53
|
-
<h4 align='center'>Jimmy Dee</h4>
|
54
|
-
</td>
|
55
|
-
<td id='kohki-miki'>
|
56
|
-
<a href='https://github.com/giginet'>
|
57
|
-
<img src='https://github.com/giginet.png?size=140'>
|
37
|
+
<td id='felix-krause'>
|
38
|
+
<a href='https://github.com/KrauseFx'>
|
39
|
+
<img src='https://github.com/KrauseFx.png?size=140'>
|
58
40
|
</a>
|
59
|
-
<h4 align='center'><a href='https://twitter.com/
|
41
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
60
42
|
</td>
|
61
|
-
<td id='
|
62
|
-
<a href='https://github.com/
|
63
|
-
<img src='https://github.com/
|
43
|
+
<td id='manu-wallner'>
|
44
|
+
<a href='https://github.com/milch'>
|
45
|
+
<img src='https://github.com/milch.png?size=140'>
|
64
46
|
</a>
|
65
|
-
<h4 align='center'><a href='https://twitter.com/
|
47
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
66
48
|
</td>
|
67
|
-
</tr>
|
68
|
-
<tr>
|
69
49
|
<td id='stefan-natchev'>
|
70
50
|
<a href='https://github.com/snatchev'>
|
71
51
|
<img src='https://github.com/snatchev.png?size=140'>
|
72
52
|
</a>
|
73
53
|
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
74
54
|
</td>
|
75
|
-
<td id='
|
76
|
-
<a href='https://github.com/
|
77
|
-
<img src='https://github.com/
|
55
|
+
<td id='maksym-grebenets'>
|
56
|
+
<a href='https://github.com/mgrebenets'>
|
57
|
+
<img src='https://github.com/mgrebenets.png?size=140'>
|
78
58
|
</a>
|
79
|
-
<h4 align='center'><a href='https://twitter.com/
|
59
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
80
60
|
</td>
|
61
|
+
<td id='jimmy-dee'>
|
62
|
+
<a href='https://github.com/jdee'>
|
63
|
+
<img src='https://github.com/jdee.png?size=140'>
|
64
|
+
</a>
|
65
|
+
<h4 align='center'>Jimmy Dee</h4>
|
66
|
+
</td>
|
67
|
+
</tr>
|
68
|
+
<tr>
|
81
69
|
<td id='andrew-mcburney'>
|
82
70
|
<a href='https://github.com/armcburney'>
|
83
71
|
<img src='https://github.com/armcburney.png?size=140'>
|
84
72
|
</a>
|
85
73
|
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
86
74
|
</td>
|
87
|
-
<td id='
|
88
|
-
<a href='https://github.com/
|
89
|
-
<img src='https://github.com/
|
75
|
+
<td id='jorge-revuelta-h'>
|
76
|
+
<a href='https://github.com/minuscorp'>
|
77
|
+
<img src='https://github.com/minuscorp.png?size=140'>
|
90
78
|
</a>
|
91
|
-
<h4 align='center'><a href='https://twitter.com/
|
79
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
92
80
|
</td>
|
93
|
-
<td id='
|
94
|
-
<a href='https://github.com/
|
95
|
-
<img src='https://github.com/
|
81
|
+
<td id='helmut-januschka'>
|
82
|
+
<a href='https://github.com/hjanuschka'>
|
83
|
+
<img src='https://github.com/hjanuschka.png?size=140'>
|
96
84
|
</a>
|
97
|
-
<h4 align='center'><a href='https://twitter.com/
|
85
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
86
|
+
</td>
|
87
|
+
<td id='iulian-onofrei'>
|
88
|
+
<a href='https://github.com/revolter'>
|
89
|
+
<img src='https://github.com/revolter.png?size=140'>
|
90
|
+
</a>
|
91
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
98
92
|
</td>
|
99
|
-
</tr>
|
100
|
-
<tr>
|
101
93
|
<td id='matthew-ellis'>
|
102
94
|
<a href='https://github.com/matthewellis'>
|
103
95
|
<img src='https://github.com/matthewellis.png?size=140'>
|
104
96
|
</a>
|
105
97
|
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
106
98
|
</td>
|
107
|
-
|
108
|
-
<
|
109
|
-
<
|
99
|
+
</tr>
|
100
|
+
<tr>
|
101
|
+
<td id='fumiya-nakamura'>
|
102
|
+
<a href='https://github.com/nafu'>
|
103
|
+
<img src='https://github.com/nafu.png?size=140'>
|
110
104
|
</a>
|
111
|
-
<h4 align='center'><a href='https://twitter.com/
|
105
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
112
106
|
</td>
|
113
|
-
<td id='
|
114
|
-
<a href='https://github.com/
|
115
|
-
<img src='https://github.com/
|
107
|
+
<td id='jérôme-lacoste'>
|
108
|
+
<a href='https://github.com/lacostej'>
|
109
|
+
<img src='https://github.com/lacostej.png?size=140'>
|
116
110
|
</a>
|
117
|
-
<h4 align='center'><a href='https://twitter.com/
|
111
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
112
|
+
</td>
|
113
|
+
<td id='aaron-brager'>
|
114
|
+
<a href='https://github.com/getaaron'>
|
115
|
+
<img src='https://github.com/getaaron.png?size=140'>
|
116
|
+
</a>
|
117
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
118
|
+
</td>
|
119
|
+
<td id='danielle-tomlinson'>
|
120
|
+
<a href='https://github.com/endocrimes'>
|
121
|
+
<img src='https://github.com/endocrimes.png?size=140'>
|
122
|
+
</a>
|
123
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
118
124
|
</td>
|
119
125
|
<td id='joshua-liebowitz'>
|
120
126
|
<a href='https://github.com/taquitos'>
|
@@ -122,37 +128,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
122
128
|
</a>
|
123
129
|
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
124
130
|
</td>
|
131
|
+
</tr>
|
132
|
+
<tr>
|
125
133
|
<td id='olivier-halligon'>
|
126
134
|
<a href='https://github.com/AliSoftware'>
|
127
135
|
<img src='https://github.com/AliSoftware.png?size=140'>
|
128
136
|
</a>
|
129
137
|
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
130
138
|
</td>
|
131
|
-
|
132
|
-
<
|
133
|
-
<
|
134
|
-
<a href='https://github.com/getaaron'>
|
135
|
-
<img src='https://github.com/getaaron.png?size=140'>
|
136
|
-
</a>
|
137
|
-
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
138
|
-
</td>
|
139
|
-
<td id='felix-krause'>
|
140
|
-
<a href='https://github.com/KrauseFx'>
|
141
|
-
<img src='https://github.com/KrauseFx.png?size=140'>
|
139
|
+
<td id='jan-piotrowski'>
|
140
|
+
<a href='https://github.com/janpio'>
|
141
|
+
<img src='https://github.com/janpio.png?size=140'>
|
142
142
|
</a>
|
143
|
-
<h4 align='center'><a href='https://twitter.com/
|
143
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
144
144
|
</td>
|
145
|
-
<td id='
|
146
|
-
<a href='https://github.com/
|
147
|
-
<img src='https://github.com/
|
145
|
+
<td id='luka-mirosevic'>
|
146
|
+
<a href='https://github.com/lmirosevic'>
|
147
|
+
<img src='https://github.com/lmirosevic.png?size=140'>
|
148
148
|
</a>
|
149
|
-
<h4 align='center'><a href='https://twitter.com/
|
149
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
150
150
|
</td>
|
151
|
-
<td id='
|
152
|
-
<a href='https://github.com/
|
153
|
-
<img src='https://github.com/
|
151
|
+
<td id='kohki-miki'>
|
152
|
+
<a href='https://github.com/giginet'>
|
153
|
+
<img src='https://github.com/giginet.png?size=140'>
|
154
154
|
</a>
|
155
|
-
<h4 align='center'><a href='https://twitter.com/
|
155
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
156
156
|
</td>
|
157
157
|
<td id='josh-holtz'>
|
158
158
|
<a href='https://github.com/joshdholtz'>
|
data/cert/lib/cert/module.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'fastlane_core/helper'
|
2
|
+
require 'fastlane/boolean'
|
2
3
|
|
3
4
|
module Cert
|
4
5
|
# Use this to just setup the configuration attribute and set it later somewhere else
|
@@ -8,6 +9,7 @@ module Cert
|
|
8
9
|
|
9
10
|
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
10
11
|
UI = FastlaneCore::UI
|
12
|
+
Boolean = Fastlane::Boolean
|
11
13
|
ROOT = Pathname.new(File.expand_path('../../..', __FILE__))
|
12
14
|
|
13
15
|
ENV['FASTLANE_TEAM_ID'] ||= ENV["CERT_TEAM_ID"]
|
data/cert/lib/cert/options.rb
CHANGED
@@ -20,6 +20,12 @@ module Cert
|
|
20
20
|
description: "Create a certificate even if an existing certificate exists",
|
21
21
|
is_string: false,
|
22
22
|
default_value: false),
|
23
|
+
FastlaneCore::ConfigItem.new(key: :generate_apple_certs,
|
24
|
+
env_name: "CERT_GENERATE_APPLE_CERTS",
|
25
|
+
description: "Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)",
|
26
|
+
type: Boolean,
|
27
|
+
default_value: FastlaneCore::Helper.mac? && FastlaneCore::Helper.xcode_at_least?('11'),
|
28
|
+
default_value_dynamic: true),
|
23
29
|
FastlaneCore::ConfigItem.new(key: :username,
|
24
30
|
short_option: "-u",
|
25
31
|
env_name: "CERT_USERNAME",
|
data/cert/lib/cert/runner.rb
CHANGED
@@ -134,19 +134,25 @@ module Cert
|
|
134
134
|
|
135
135
|
# The kind of certificate we're interested in
|
136
136
|
def certificate_type
|
137
|
-
|
138
|
-
|
139
|
-
cert_type = Spaceship.certificate.
|
140
|
-
cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
|
141
|
-
cert_type = Spaceship.certificate.
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
137
|
+
# Check if apple certs (Xcode 11 and later) should be used
|
138
|
+
if Cert.config[:generate_apple_certs]
|
139
|
+
cert_type = Spaceship.certificate.apple_distribution
|
140
|
+
cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house? # Enterprise doesn't use Apple Distribution
|
141
|
+
cert_type = Spaceship.certificate.apple_development if Cert.config[:development]
|
142
|
+
else
|
143
|
+
case Cert.config[:platform].to_s
|
144
|
+
when 'ios', 'tvos'
|
145
|
+
cert_type = Spaceship.certificate.production
|
146
|
+
cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
|
147
|
+
cert_type = Spaceship.certificate.development if Cert.config[:development]
|
148
|
+
|
149
|
+
when 'macos'
|
150
|
+
cert_type = Spaceship.certificate.mac_app_distribution
|
151
|
+
cert_type = Spaceship.certificate.mac_development if Cert.config[:development]
|
152
|
+
end
|
147
153
|
end
|
148
154
|
|
149
|
-
cert_type
|
155
|
+
return cert_type
|
150
156
|
end
|
151
157
|
|
152
158
|
def create_certificate
|
@@ -134,7 +134,7 @@ module Fastlane
|
|
134
134
|
UI.user_error!("To call another action from an action use `other_action.#{method_sym}` instead")
|
135
135
|
end
|
136
136
|
|
137
|
-
# When shelling out from the
|
137
|
+
# When shelling out from the action, should we use `bundle exec`?
|
138
138
|
def self.shell_out_should_use_bundle_exec?
|
139
139
|
return File.exist?('Gemfile') && !Helper.contained_fastlane?
|
140
140
|
end
|
Binary file
|
@@ -77,7 +77,7 @@ module Fastlane
|
|
77
77
|
# rubocop:enable Style/AccessorMethodName
|
78
78
|
|
79
79
|
# Returns the class ref to the action based on the action name
|
80
|
-
# Returns nil if the action is not
|
80
|
+
# Returns nil if the action is not available
|
81
81
|
def self.action_class_ref(action_name)
|
82
82
|
class_name = action_name.to_s.fastlane_class + 'Action'
|
83
83
|
class_ref = nil
|
@@ -36,6 +36,7 @@ module Fastlane
|
|
36
36
|
return build_nr
|
37
37
|
else
|
38
38
|
version_number = params[:version]
|
39
|
+
platform = params[:platform]
|
39
40
|
|
40
41
|
# Create filter for get_builds with optional version number
|
41
42
|
filter = { app: app.apple_id }
|
@@ -46,18 +47,25 @@ module Fastlane
|
|
46
47
|
version_number_message = "any version"
|
47
48
|
end
|
48
49
|
|
50
|
+
if platform
|
51
|
+
filter["preReleaseVersion.platform"] = Spaceship::ConnectAPI::Platform.map(platform)
|
52
|
+
platform_message = "#{platform} platform"
|
53
|
+
else
|
54
|
+
platform_message = "any platform"
|
55
|
+
end
|
56
|
+
|
49
57
|
UI.message("Fetching the latest build number for #{version_number_message}")
|
50
58
|
|
51
59
|
# Get latest build for optional version number and return build number if found
|
52
60
|
build = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion", limit: 1).first
|
53
61
|
if build
|
54
62
|
build_nr = build.version
|
55
|
-
UI.message("Latest upload for version #{build.app_version} is build: #{build_nr}")
|
63
|
+
UI.message("Latest upload for version #{build.app_version} on #{platform_message} is build: #{build_nr}")
|
56
64
|
return build_nr
|
57
65
|
end
|
58
66
|
|
59
67
|
# Let user know that build couldn't be found
|
60
|
-
UI.important("Could not find a build for #{version_number_message} on App Store Connect")
|
68
|
+
UI.important("Could not find a build for #{version_number_message} on #{platform_message} on App Store Connect")
|
61
69
|
|
62
70
|
if params[:initial_build_number].nil?
|
63
71
|
UI.user_error!("Could not find a build on App Store Connect - and 'initial_build_number' option is not set")
|
@@ -21,6 +21,7 @@ module Fastlane
|
|
21
21
|
cmd << "--use-ssh" if params[:use_ssh]
|
22
22
|
cmd << "--use-submodules" if params[:use_submodules]
|
23
23
|
cmd << "--no-use-binaries" if params[:use_binaries] == false
|
24
|
+
cmd << "--no-checkout" if params[:no_checkout] == true
|
24
25
|
cmd << "--no-build" if params[:no_build] == true
|
25
26
|
cmd << "--no-skip-current" if params[:no_skip_current] == true
|
26
27
|
cmd << "--verbose" if params[:verbose] == true
|
@@ -94,6 +95,12 @@ module Fastlane
|
|
94
95
|
is_string: false,
|
95
96
|
type: Boolean,
|
96
97
|
optional: true),
|
98
|
+
FastlaneCore::ConfigItem.new(key: :no_checkout,
|
99
|
+
env_name: "FL_CARTHAGE_NO_CHECKOUT",
|
100
|
+
description: "When bootstrapping Carthage do not checkout",
|
101
|
+
is_string: false,
|
102
|
+
type: Boolean,
|
103
|
+
optional: true),
|
97
104
|
FastlaneCore::ConfigItem.new(key: :no_build,
|
98
105
|
env_name: "FL_CARTHAGE_NO_BUILD",
|
99
106
|
description: "When bootstrapping Carthage do not build",
|
@@ -14,15 +14,17 @@ module Fastlane
|
|
14
14
|
cmd << ["cd '#{podfile_folder}' &&"]
|
15
15
|
end
|
16
16
|
|
17
|
-
cmd << ['bundle exec'] if
|
17
|
+
cmd << ['bundle exec'] if use_bundle_exec?(params)
|
18
18
|
cmd << ['pod install']
|
19
19
|
|
20
20
|
cmd << '--no-clean' unless params[:clean]
|
21
21
|
cmd << '--no-integrate' unless params[:integrate]
|
22
|
+
cmd << '--clean-install' if params[:clean_install] && pod_version.to_f >= 1.7
|
22
23
|
cmd << '--repo-update' if params[:repo_update]
|
23
24
|
cmd << '--silent' if params[:silent]
|
24
25
|
cmd << '--verbose' if params[:verbose]
|
25
26
|
cmd << '--no-ansi' unless params[:ansi]
|
27
|
+
cmd << '--deployment' if params[:deployment]
|
26
28
|
|
27
29
|
Actions.sh(cmd.join(' '), error_callback: lambda { |result|
|
28
30
|
if !params[:repo_update] && params[:try_repo_update_on_error]
|
@@ -36,6 +38,14 @@ module Fastlane
|
|
36
38
|
})
|
37
39
|
end
|
38
40
|
|
41
|
+
def self.use_bundle_exec?(params)
|
42
|
+
params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.pod_version
|
46
|
+
use_bundle_exec?(params) ? `bundle exec pod --version` : `pod --version`
|
47
|
+
end
|
48
|
+
|
39
49
|
def self.call_error_callback(params, result)
|
40
50
|
if params[:error_callback]
|
41
51
|
Dir.chdir(FastlaneCore::FastlaneFolder.path) do
|
@@ -57,6 +67,11 @@ module Fastlane
|
|
57
67
|
description: "Add `--repo-update` flag to `pod install` command",
|
58
68
|
is_string: false,
|
59
69
|
default_value: false),
|
70
|
+
FastlaneCore::ConfigItem.new(key: :clean_install,
|
71
|
+
env_name: "FL_COCOAPODS_CLEAN_INSTALL",
|
72
|
+
description: "Execute a full pod installation ignoring the content of the project cache",
|
73
|
+
is_string: false,
|
74
|
+
default_value: false),
|
60
75
|
FastlaneCore::ConfigItem.new(key: :silent,
|
61
76
|
env_name: "FL_COCOAPODS_SILENT",
|
62
77
|
description: "Execute command without logging output",
|
@@ -98,11 +113,18 @@ module Fastlane
|
|
98
113
|
is_string: false,
|
99
114
|
default_value: false,
|
100
115
|
type: Boolean),
|
116
|
+
FastlaneCore::ConfigItem.new(key: :deployment,
|
117
|
+
env_name: "FL_COCOAPODS_DEPLOYMENT",
|
118
|
+
description: 'Disallow any changes to the Podfile or the Podfile.lock during installation',
|
119
|
+
optional: true,
|
120
|
+
is_string: false,
|
121
|
+
default_value: false,
|
122
|
+
type: Boolean),
|
101
123
|
|
102
124
|
# Deprecated
|
103
125
|
FastlaneCore::ConfigItem.new(key: :clean,
|
104
126
|
env_name: "FL_COCOAPODS_CLEAN",
|
105
|
-
description: "(Option
|
127
|
+
description: "(Option renamed as clean_install) Remove SCM directories",
|
106
128
|
deprecated: true,
|
107
129
|
is_string: false,
|
108
130
|
default_value: true),
|
@@ -16,7 +16,7 @@ module Fastlane
|
|
16
16
|
# If any of the paths include "*", we assume that we are referring to the Unix entries
|
17
17
|
# e.g /tmp/fastlane/* refers to all the files in /tmp/fastlane
|
18
18
|
# We use Dir.glob to expand all those paths, this would create an array of arrays though, so flatten
|
19
|
-
artifacts = artifacts_to_search.
|
19
|
+
artifacts = artifacts_to_search.flat_map { |f| f.include?("*") ? Dir.glob(f) : f }
|
20
20
|
|
21
21
|
UI.verbose("Copying artifacts #{artifacts.join(', ')} to #{target_path}")
|
22
22
|
UI.verbose(params[:keep_original] ? "Keeping original files" : "Not keeping original files")
|
@@ -33,7 +33,7 @@ module Fastlane
|
|
33
33
|
options[:disable_notify] = 'yes' if options[:disable_notify]
|
34
34
|
|
35
35
|
connection.post("/api/users/#{user_name}/apps", options)
|
36
|
-
rescue Faraday::
|
36
|
+
rescue Faraday::TimeoutError
|
37
37
|
UI.crash!("Timed out while uploading build. Check https://deploygate.com/ to see if the upload was completed.")
|
38
38
|
end
|
39
39
|
|
@@ -128,7 +128,7 @@ Your screenshots will be stored in the `./screenshots/` folder by default (or `.
|
|
128
128
|
|
129
129
|
New with Xcode 9, *snapshot* can run multiple simulators concurrently. This is the default behavior in order to take your screenshots as quickly as possible. This can be disabled to run each device, one at a time, by setting the `:concurrent_simulators` option to `false`.
|
130
130
|
|
131
|
-
**Note:** While running *snapshot* with Xcode 9, the simulators will not be visibly spawned. So, while you
|
131
|
+
**Note:** While running *snapshot* with Xcode 9, the simulators will not be visibly spawned. So, while you won't see the simulators running your tests, they will, in fact, be taking your screenshots.
|
132
132
|
|
133
133
|
If any error occurs while running the snapshot script on a device, that device will not have any screenshots, and _snapshot_ will continue with the next device or language. To stop the flow after the first error, run
|
134
134
|
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
A new approach to iOS code signing: Share one code signing identity across your development team to simplify your codesigning setup and prevent code signing issues.
|
8
8
|
|
9
|
-
_match_ is the implementation of the [
|
9
|
+
_match_ is the implementation of the [codesigning.guide concept](https://codesigning.guide). _match_ creates all required certificates & provisioning profiles and stores them in a separate git repository. Every team member with access to the repo can use those credentials for code signing. _match_ also automatically repairs broken and expired credentials. It's the easiest way to share signing credentials across teams
|
10
10
|
|
11
11
|
[More information on how to get started with codesigning](https://docs.fastlane.tools/codesigning/getting-started/)
|
12
12
|
|
@@ -79,7 +79,7 @@ You'll be asked if you want to store your code signing identities inside a **Git
|
|
79
79
|
|
80
80
|
Use Git Storage to store all code signing identities in a private git repo, owned and operated by you. The files will be encrypted using OpenSSL.
|
81
81
|
|
82
|
-
First, enter the URL to your private (!) Git repo (You can create one for free on e.g. [GitHub](https://github.com/new) or [BitBucket](https://bitbucket.org/repo/create)). The URL you enter can be either a `https://` or a `git` URL.
|
82
|
+
First, enter the URL to your private (!) Git repo (You can create one for free on e.g. [GitHub](https://github.com/new) or [BitBucket](https://bitbucket.org/repo/create)). The URL you enter can be either a `https://` or a `git` URL. `fastlane match init` won't read or modify your certificates or profiles yet, and also won't validate your git URL.
|
83
83
|
|
84
84
|
This will create a `Matchfile` in your current directory (or in your `./fastlane/` folder).
|
85
85
|
|
@@ -92,6 +92,25 @@ app_identifier("tools.fastlane.app")
|
|
92
92
|
username("user@fastlane.tools")
|
93
93
|
```
|
94
94
|
|
95
|
+
##### Git Storage on GitHub
|
96
|
+
|
97
|
+
If your machine is currently using SSH to authenticate with GitHub, you'll want to use a `git` URL, otherwise, you may see an authentication error when you attempt to use match. Alternatively, you can set a basic authorization for _match_:
|
98
|
+
|
99
|
+
Using parameter:
|
100
|
+
|
101
|
+
```
|
102
|
+
match(git_basic_authorization: '<YOUR KEY>')
|
103
|
+
```
|
104
|
+
|
105
|
+
Using environment variable:
|
106
|
+
|
107
|
+
```
|
108
|
+
ENV['MATCH_GIT_BASIC_AUTHORIZATION'] = '<YOUR KEY>'
|
109
|
+
match
|
110
|
+
```
|
111
|
+
|
112
|
+
You can find more information about GitHub basic authentication and personal token generation here: [https://developer.github.com/v3/auth/#basic-authentication](https://developer.github.com/v3/auth/#basic-authentication)
|
113
|
+
|
95
114
|
#### Google Cloud Storage
|
96
115
|
|
97
116
|
Use [Google Cloud Storage](https://cloud.google.com/storage/) for a fully hosted solution for your code signing identities. Certificates are stored on Google Cloud, encrypted using Google managed keys. Everything will be stored on your Google account, inside a storage bucket you provide. You can also directly access the files using the web console.
|
@@ -119,7 +138,7 @@ match(git_branch: "team2", username: "user@team2.com")
|
|
119
138
|
|
120
139
|
#### Google Cloud Storage
|
121
140
|
|
122
|
-
If you use Google Cloud Storage, you don't need to do anything manually. Just use Google Cloud Storage, and the top level folder will be the team ID.
|
141
|
+
If you use Google Cloud Storage, you don't need to do anything manually for multiple teams. Just use Google Cloud Storage, and the top level folder will be the team ID.
|
123
142
|
|
124
143
|
### Run
|
125
144
|
|
@@ -214,12 +233,14 @@ There are two cases for reading and writing certificates stored in a Google Clou
|
|
214
233
|
1. Continuous integration jobs. These will authenticate to your Google Cloud project via a service account, and use a `gc_keys.json` file as credentials.
|
215
234
|
1. Developers on a local workstation. In this case, you should choose whether everyone on your team will create their own `gc_keys.json` file, or whether you want to manage access to the bucket directly using your developers' Google accounts.
|
216
235
|
|
217
|
-
When running `fastlane match init` the first time, the setup process will give you the option to create your `gc_keys.json` file. This file contains the
|
236
|
+
When running `fastlane match init` the first time, the setup process will give you the option to create your `gc_keys.json` file. This file contains the authentication credentials needed to access your Google Cloud storage bucket. Make sure to keep that file secret and never add it to version control. We recommend adding `gc_keys.json` to your `.gitignore`
|
218
237
|
|
219
238
|
##### Managing developer access via keys
|
239
|
+
|
220
240
|
If you want to manage developer access to your certificates via authentication keys, every developer should create their own `gc_keys.json` and add the file to all their work machines. This will give the admin full control over who has read/write access to the given Storage bucket. At the same time it allows your team to revoke a single key if a file gets compromised.
|
221
241
|
|
222
|
-
##### Managing developer
|
242
|
+
##### Managing developer access via Google accounts
|
243
|
+
|
223
244
|
If your developers already have Google accounts and access to your Google Cloud project, you can also manage access to the storage bucket via [Cloud Identity and Access Management (IAM)](https://cloud.google.com/storage/docs/access-control/iam). Just [set up](https://cloud.google.com/storage/docs/access-control/lists) individual developer accounts or an entire Google Group containing your team as readers and writers on your storage bucket.
|
224
245
|
|
225
246
|
You can then specify the Google Cloud project id containing your storage bucket in your `Matchfile`:
|