fastlane 2.138.0 → 2.143.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.md +75 -62
- data/cert/lib/cert/options.rb +12 -5
- data/cert/lib/cert/runner.rb +13 -0
- data/deliver/lib/deliver/options.rb +2 -2
- data/deliver/lib/deliver/runner.rb +13 -2
- data/deliver/lib/deliver/submit_for_review.rb +7 -1
- data/fastlane/lib/fastlane/action.rb +2 -2
- 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/README.md +2 -0
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +13 -5
- data/fastlane/lib/fastlane/actions/build_app.rb +157 -6
- data/fastlane/lib/fastlane/actions/build_ios_app.rb +28 -132
- data/fastlane/lib/fastlane/actions/build_mac_app.rb +46 -0
- data/fastlane/lib/fastlane/actions/cocoapods.rb +2 -2
- data/fastlane/lib/fastlane/actions/create_pull_request.rb +71 -2
- data/fastlane/lib/fastlane/actions/docs/{build_ios_app.md → build_app.md} +1 -1
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +22 -6
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +20 -4
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +10 -0
- data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +1 -1
- data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +35 -7
- data/fastlane/lib/fastlane/actions/frame_screenshots.rb +2 -1
- data/fastlane/lib/fastlane/actions/get_github_release.rb +3 -0
- data/fastlane/lib/fastlane/actions/gradle.rb +43 -2
- data/fastlane/lib/fastlane/actions/gym.rb +3 -7
- data/fastlane/lib/fastlane/actions/import_from_git.rb +4 -0
- data/fastlane/lib/fastlane/actions/last_git_tag.rb +14 -5
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +9 -3
- data/fastlane/lib/fastlane/actions/notarize.rb +183 -0
- data/fastlane/lib/fastlane/actions/run_tests.rb +5 -22
- data/fastlane/lib/fastlane/actions/s3.rb +5 -291
- data/fastlane/lib/fastlane/actions/set_github_release.rb +1 -1
- data/fastlane/lib/fastlane/actions/setup_ci.rb +14 -8
- data/fastlane/lib/fastlane/actions/spm.rb +8 -0
- data/fastlane/lib/fastlane/actions/swiftlint.rb +17 -2
- data/fastlane/lib/fastlane/actions/update_plist.rb +37 -2
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +13 -3
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +1 -0
- data/fastlane/lib/fastlane/actions/upload_to_play_store_internal_app_sharing.rb +78 -0
- data/fastlane/lib/fastlane/fast_file.rb +13 -3
- data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
- data/fastlane/lib/fastlane/helper/s3_client_helper.rb +56 -0
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +1 -1
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -0
- data/fastlane/lib/fastlane/runner.rb +23 -18
- data/fastlane/lib/fastlane/server/socket_server_action_command_executor.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +3 -3
- data/fastlane/swift/Fastlane.swift +429 -50
- 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 +17 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +23 -3
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +21 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +6 -2
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +28 -0
- data/fastlane_core/lib/fastlane_core/device_manager.rb +20 -0
- data/fastlane_core/lib/fastlane_core/helper.rb +7 -1
- data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +1 -0
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +2 -0
- data/fastlane_core/lib/fastlane_core/project.rb +27 -0
- data/frameit/lib/frameit/commands_generator.rb +25 -0
- data/frameit/lib/frameit/config_parser.rb +31 -9
- data/frameit/lib/frameit/device.rb +90 -0
- data/frameit/lib/frameit/device_types.rb +121 -5
- data/frameit/lib/frameit/editor.rb +31 -40
- data/frameit/lib/frameit/offsets.rb +8 -1
- data/frameit/lib/frameit/options.rb +81 -54
- data/frameit/lib/frameit/runner.rb +17 -7
- data/frameit/lib/frameit/screenshot.rb +35 -47
- data/frameit/lib/frameit/template_finder.rb +15 -12
- data/gym/lib/gym/code_signing_mapping.rb +32 -3
- data/gym/lib/gym/detect_values.rb +34 -2
- data/gym/lib/gym/generators/build_command_generator.rb +1 -0
- data/gym/lib/gym/generators/package_command_generator.rb +4 -0
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +47 -17
- data/gym/lib/gym/module.rb +8 -0
- data/gym/lib/gym/options.rb +25 -1
- data/gym/lib/gym/runner.rb +64 -24
- data/match/lib/match/change_password.rb +1 -1
- data/match/lib/match/encryption.rb +4 -0
- data/match/lib/match/encryption/openssl.rb +1 -1
- data/match/lib/match/generator.rb +17 -3
- data/match/lib/match/importer.rb +2 -2
- data/match/lib/match/module.rb +5 -2
- data/match/lib/match/nuke.rb +59 -17
- data/match/lib/match/options.rb +38 -15
- data/match/lib/match/runner.rb +24 -8
- data/match/lib/match/setup.rb +1 -1
- data/match/lib/match/spaceship_ensure.rb +19 -9
- data/match/lib/match/storage.rb +4 -0
- data/match/lib/match/storage/git_storage.rb +5 -2
- data/match/lib/match/storage/google_cloud_storage.rb +2 -2
- data/match/lib/match/storage/s3_storage.rb +162 -0
- data/pilot/lib/pilot/.manager.rb.swp +0 -0
- data/pilot/lib/pilot/build_manager.rb +55 -15
- data/pilot/lib/pilot/options.rb +3 -1
- data/scan/lib/scan/detect_values.rb +6 -1
- data/scan/lib/scan/manager.rb +18 -1
- data/scan/lib/scan/options.rb +28 -1
- data/scan/lib/scan/runner.rb +11 -3
- data/scan/lib/scan/slack_poster.rb +1 -1
- data/scan/lib/scan/test_command_generator.rb +9 -5
- data/screengrab/lib/screengrab/runner.rb +31 -18
- data/snapshot/lib/snapshot/fixes/simulator_shared_pasteboard.rb +16 -0
- data/snapshot/lib/snapshot/options.rb +12 -1
- data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +6 -0
- data/spaceship/lib/spaceship/portal/.certificate.rb.swp +0 -0
- data/spaceship/lib/spaceship/portal/app.rb +11 -2
- data/spaceship/lib/spaceship/tunes/iap.rb +11 -11
- data/spaceship/lib/spaceship/tunes/iap_detail.rb +7 -3
- data/spaceship/lib/spaceship/tunes/iap_families.rb +12 -1
- data/spaceship/lib/spaceship/tunes/iap_family_details.rb +26 -17
- data/spaceship/lib/spaceship/tunes/iap_status.rb +5 -1
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
- data/supply/lib/supply/client.rb +26 -0
- data/supply/lib/supply/uploader.rb +28 -0
- metadata +64 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e92b08dddc966a17437ad382e38fcc8e5a5f06a0d1d6e7f692574b9919ec5804
|
|
4
|
+
data.tar.gz: 2328317029dd9a9648ad22c61b028532cb2d1e18d792e6678d581d9e92494575
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 68a71d0cc29672e7d94851c951a040f8515985d655f306be4089b46f7a9d90079a995b6404402fda53d053c59f060b08d8acbdcfd4fb2acf753622258b94d8d7
|
|
7
|
+
data.tar.gz: 6889b1d8b59cbce13d432a0759381a29d84144c625feb3547c0b872611c07db87bb7827cbf613eee60fd2af21e6fc5bb322b2d595255a17d7a40ecaf0b90462d
|
data/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2015-
|
|
3
|
+
Copyright (c) 2015-2020 The Fastlane Authors
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
|
@@ -34,23 +34,23 @@ 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/
|
|
37
|
+
<td id='josh-holtz'>
|
|
38
|
+
<a href='https://github.com/joshdholtz'>
|
|
39
|
+
<img src='https://github.com/joshdholtz.png?size=140'>
|
|
40
40
|
</a>
|
|
41
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
41
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
|
42
42
|
</td>
|
|
43
|
-
<td id='
|
|
44
|
-
<a href='https://github.com/
|
|
45
|
-
<img src='https://github.com/
|
|
43
|
+
<td id='danielle-tomlinson'>
|
|
44
|
+
<a href='https://github.com/endocrimes'>
|
|
45
|
+
<img src='https://github.com/endocrimes.png?size=140'>
|
|
46
46
|
</a>
|
|
47
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
47
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
|
48
48
|
</td>
|
|
49
|
-
<td id='
|
|
50
|
-
<a href='https://github.com/
|
|
51
|
-
<img src='https://github.com/
|
|
49
|
+
<td id='jérôme-lacoste'>
|
|
50
|
+
<a href='https://github.com/lacostej'>
|
|
51
|
+
<img src='https://github.com/lacostej.png?size=140'>
|
|
52
52
|
</a>
|
|
53
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
53
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
|
54
54
|
</td>
|
|
55
55
|
<td id='fumiya-nakamura'>
|
|
56
56
|
<a href='https://github.com/nafu'>
|
|
@@ -58,19 +58,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
58
58
|
</a>
|
|
59
59
|
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
|
60
60
|
</td>
|
|
61
|
-
<td id='
|
|
62
|
-
<a href='https://github.com/
|
|
63
|
-
<img src='https://github.com/
|
|
61
|
+
<td id='olivier-halligon'>
|
|
62
|
+
<a href='https://github.com/AliSoftware'>
|
|
63
|
+
<img src='https://github.com/AliSoftware.png?size=140'>
|
|
64
64
|
</a>
|
|
65
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
65
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
|
66
66
|
</td>
|
|
67
67
|
</tr>
|
|
68
68
|
<tr>
|
|
69
|
-
<td id='
|
|
70
|
-
<a href='https://github.com/
|
|
71
|
-
<img src='https://github.com/
|
|
69
|
+
<td id='luka-mirosevic'>
|
|
70
|
+
<a href='https://github.com/lmirosevic'>
|
|
71
|
+
<img src='https://github.com/lmirosevic.png?size=140'>
|
|
72
72
|
</a>
|
|
73
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
73
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
|
74
|
+
</td>
|
|
75
|
+
<td id='max-ott'>
|
|
76
|
+
<a href='https://github.com/max-ott'>
|
|
77
|
+
<img src='https://github.com/max-ott.png?size=140'>
|
|
78
|
+
</a>
|
|
79
|
+
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
|
74
80
|
</td>
|
|
75
81
|
<td id='jan-piotrowski'>
|
|
76
82
|
<a href='https://github.com/janpio'>
|
|
@@ -78,26 +84,32 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
78
84
|
</a>
|
|
79
85
|
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
|
80
86
|
</td>
|
|
81
|
-
<td id='
|
|
82
|
-
<a href='https://github.com/
|
|
83
|
-
<img src='https://github.com/
|
|
84
|
-
</a>
|
|
85
|
-
<h4 align='center'>Jimmy Dee</h4>
|
|
86
|
-
</td>
|
|
87
|
-
<td id='matthew-ellis'>
|
|
88
|
-
<a href='https://github.com/matthewellis'>
|
|
89
|
-
<img src='https://github.com/matthewellis.png?size=140'>
|
|
87
|
+
<td id='jorge-revuelta-h'>
|
|
88
|
+
<a href='https://github.com/minuscorp'>
|
|
89
|
+
<img src='https://github.com/minuscorp.png?size=140'>
|
|
90
90
|
</a>
|
|
91
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
91
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
|
92
92
|
</td>
|
|
93
|
-
<td id='
|
|
94
|
-
<a href='https://github.com/
|
|
95
|
-
<img src='https://github.com/
|
|
93
|
+
<td id='manu-wallner'>
|
|
94
|
+
<a href='https://github.com/milch'>
|
|
95
|
+
<img src='https://github.com/milch.png?size=140'>
|
|
96
96
|
</a>
|
|
97
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
97
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
98
98
|
</td>
|
|
99
99
|
</tr>
|
|
100
100
|
<tr>
|
|
101
|
+
<td id='andrew-mcburney'>
|
|
102
|
+
<a href='https://github.com/armcburney'>
|
|
103
|
+
<img src='https://github.com/armcburney.png?size=140'>
|
|
104
|
+
</a>
|
|
105
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
|
106
|
+
</td>
|
|
107
|
+
<td id='daniel-jankowski'>
|
|
108
|
+
<a href='https://github.com/mollyIV'>
|
|
109
|
+
<img src='https://github.com/mollyIV.png?size=140'>
|
|
110
|
+
</a>
|
|
111
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
|
112
|
+
</td>
|
|
101
113
|
<td id='joshua-liebowitz'>
|
|
102
114
|
<a href='https://github.com/taquitos'>
|
|
103
115
|
<img src='https://github.com/taquitos.png?size=140'>
|
|
@@ -110,37 +122,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
110
122
|
</a>
|
|
111
123
|
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
|
112
124
|
</td>
|
|
113
|
-
<td id='
|
|
114
|
-
<a href='https://github.com/
|
|
115
|
-
<img src='https://github.com/
|
|
116
|
-
</a>
|
|
117
|
-
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
|
118
|
-
</td>
|
|
119
|
-
<td id='manu-wallner'>
|
|
120
|
-
<a href='https://github.com/milch'>
|
|
121
|
-
<img src='https://github.com/milch.png?size=140'>
|
|
122
|
-
</a>
|
|
123
|
-
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
124
|
-
</td>
|
|
125
|
-
<td id='aaron-brager'>
|
|
126
|
-
<a href='https://github.com/getaaron'>
|
|
127
|
-
<img src='https://github.com/getaaron.png?size=140'>
|
|
125
|
+
<td id='kohki-miki'>
|
|
126
|
+
<a href='https://github.com/giginet'>
|
|
127
|
+
<img src='https://github.com/giginet.png?size=140'>
|
|
128
128
|
</a>
|
|
129
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
129
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
|
130
130
|
</td>
|
|
131
131
|
</tr>
|
|
132
132
|
<tr>
|
|
133
|
-
<td id='
|
|
134
|
-
<a href='https://github.com/
|
|
135
|
-
<img src='https://github.com/
|
|
133
|
+
<td id='matthew-ellis'>
|
|
134
|
+
<a href='https://github.com/matthewellis'>
|
|
135
|
+
<img src='https://github.com/matthewellis.png?size=140'>
|
|
136
136
|
</a>
|
|
137
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
137
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
|
138
138
|
</td>
|
|
139
|
-
<td id='
|
|
140
|
-
<a href='https://github.com/
|
|
141
|
-
<img src='https://github.com/
|
|
139
|
+
<td id='jimmy-dee'>
|
|
140
|
+
<a href='https://github.com/jdee'>
|
|
141
|
+
<img src='https://github.com/jdee.png?size=140'>
|
|
142
142
|
</a>
|
|
143
|
-
<h4 align='center'
|
|
143
|
+
<h4 align='center'>Jimmy Dee</h4>
|
|
144
144
|
</td>
|
|
145
145
|
<td id='iulian-onofrei'>
|
|
146
146
|
<a href='https://github.com/revolter'>
|
|
@@ -148,11 +148,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
148
148
|
</a>
|
|
149
149
|
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
|
150
150
|
</td>
|
|
151
|
-
<td id='
|
|
152
|
-
<a href='https://github.com/
|
|
153
|
-
<img src='https://github.com/
|
|
151
|
+
<td id='stefan-natchev'>
|
|
152
|
+
<a href='https://github.com/snatchev'>
|
|
153
|
+
<img src='https://github.com/snatchev.png?size=140'>
|
|
154
154
|
</a>
|
|
155
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
155
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
|
156
156
|
</td>
|
|
157
157
|
<td id='felix-krause'>
|
|
158
158
|
<a href='https://github.com/KrauseFx'>
|
|
@@ -161,6 +161,19 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
161
161
|
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
|
162
162
|
</td>
|
|
163
163
|
</tr>
|
|
164
|
+
<tr>
|
|
165
|
+
<td id='maksym-grebenets'>
|
|
166
|
+
<a href='https://github.com/mgrebenets'>
|
|
167
|
+
<img src='https://github.com/mgrebenets.png?size=140'>
|
|
168
|
+
</a>
|
|
169
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
|
170
|
+
</td>
|
|
171
|
+
<td id='aaron-brager'>
|
|
172
|
+
<a href='https://github.com/getaaron'>
|
|
173
|
+
<img src='https://github.com/getaaron.png?size=140'>
|
|
174
|
+
</a>
|
|
175
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
|
176
|
+
</td>
|
|
164
177
|
</table>
|
|
165
178
|
|
|
166
179
|
Special thanks to all [contributors](https://github.com/fastlane/fastlane/graphs/contributors) for extending and improving _fastlane_.
|
data/cert/lib/cert/options.rb
CHANGED
|
@@ -13,12 +13,21 @@ module Cert
|
|
|
13
13
|
FastlaneCore::ConfigItem.new(key: :development,
|
|
14
14
|
env_name: "CERT_DEVELOPMENT",
|
|
15
15
|
description: "Create a development certificate instead of a distribution one",
|
|
16
|
-
|
|
16
|
+
type: Boolean,
|
|
17
17
|
default_value: false),
|
|
18
|
+
FastlaneCore::ConfigItem.new(key: :type,
|
|
19
|
+
env_name: "CERT_TYPE",
|
|
20
|
+
description: "Create specific certificate type (takes precedence over :development)",
|
|
21
|
+
optional: true,
|
|
22
|
+
verify_block: proc do |value|
|
|
23
|
+
value = value.to_s
|
|
24
|
+
types = %w(mac_installer_distribution developer_id_installer developer_id_application)
|
|
25
|
+
UI.user_error!("Unsupported types, must be: #{types}") unless types.include?(value)
|
|
26
|
+
end),
|
|
18
27
|
FastlaneCore::ConfigItem.new(key: :force,
|
|
19
28
|
env_name: "CERT_FORCE",
|
|
20
29
|
description: "Create a certificate even if an existing certificate exists",
|
|
21
|
-
|
|
30
|
+
type: Boolean,
|
|
22
31
|
default_value: false),
|
|
23
32
|
FastlaneCore::ConfigItem.new(key: :generate_apple_certs,
|
|
24
33
|
env_name: "CERT_GENERATE_APPLE_CERTS",
|
|
@@ -58,8 +67,7 @@ module Cert
|
|
|
58
67
|
short_option: "-q",
|
|
59
68
|
env_name: "CERT_FILE_NAME",
|
|
60
69
|
optional: true,
|
|
61
|
-
description: "The filename of certificate to store",
|
|
62
|
-
is_string: true),
|
|
70
|
+
description: "The filename of certificate to store"),
|
|
63
71
|
FastlaneCore::ConfigItem.new(key: :output_path,
|
|
64
72
|
short_option: "-o",
|
|
65
73
|
env_name: "CERT_OUTPUT_PATH",
|
|
@@ -85,7 +93,6 @@ module Cert
|
|
|
85
93
|
FastlaneCore::ConfigItem.new(key: :platform,
|
|
86
94
|
env_name: "CERT_PLATFORM",
|
|
87
95
|
description: "Set the provisioning profile's platform (ios, macos)",
|
|
88
|
-
is_string: false,
|
|
89
96
|
default_value: "ios",
|
|
90
97
|
verify_block: proc do |value|
|
|
91
98
|
value = value.to_s
|
data/cert/lib/cert/runner.rb
CHANGED
|
@@ -134,6 +134,19 @@ module Cert
|
|
|
134
134
|
|
|
135
135
|
# The kind of certificate we're interested in
|
|
136
136
|
def certificate_type
|
|
137
|
+
if Cert.config[:type]
|
|
138
|
+
case Cert.config[:type].to_sym
|
|
139
|
+
when :mac_installer_distribution
|
|
140
|
+
return Spaceship.certificate.mac_installer_distribution
|
|
141
|
+
when :developer_id_application
|
|
142
|
+
return Spaceship.certificate.developer_id_application
|
|
143
|
+
when :developer_id_installer
|
|
144
|
+
return Spaceship.certificate.developer_id_installer
|
|
145
|
+
else
|
|
146
|
+
UI.user_error("Unaccepted value for :type - #{Cert.config[:type]}")
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
137
150
|
# Check if apple certs (Xcode 11 and later) should be used
|
|
138
151
|
if Cert.config[:generate_apple_certs]
|
|
139
152
|
cert_type = Spaceship.certificate.apple_distribution
|
|
@@ -149,12 +149,12 @@ module Deliver
|
|
|
149
149
|
|
|
150
150
|
# release
|
|
151
151
|
FastlaneCore::ConfigItem.new(key: :automatic_release,
|
|
152
|
-
description: "Should the app be automatically released once it's approved?",
|
|
152
|
+
description: "Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)",
|
|
153
153
|
is_string: false,
|
|
154
154
|
default_value: false),
|
|
155
155
|
FastlaneCore::ConfigItem.new(key: :auto_release_date,
|
|
156
156
|
env_name: "DELIVER_AUTO_RELEASE_DATE",
|
|
157
|
-
description: "Date in milliseconds for automatically releasing on pending approval",
|
|
157
|
+
description: "Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)",
|
|
158
158
|
is_string: false,
|
|
159
159
|
optional: true,
|
|
160
160
|
conflicting_options: [:automatic_release],
|
|
@@ -140,14 +140,25 @@ module Deliver
|
|
|
140
140
|
# Upload the binary to App Store Connect
|
|
141
141
|
def upload_binary
|
|
142
142
|
UI.message("Uploading binary to App Store Connect")
|
|
143
|
-
|
|
143
|
+
|
|
144
|
+
upload_ipa = options[:ipa]
|
|
145
|
+
upload_pkg = options[:pkg]
|
|
146
|
+
|
|
147
|
+
# 2020-01-27
|
|
148
|
+
# Only verify platform if if both ipa and pkg exists (for backwards support)
|
|
149
|
+
if upload_ipa && upload_pkg
|
|
150
|
+
upload_ipa = ["ios", "appletvos"].include?(options[:platform])
|
|
151
|
+
upload_pkg = options[:platform] == "osx"
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
if upload_ipa
|
|
144
155
|
package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
|
|
145
156
|
app_id: options[:app].apple_id,
|
|
146
157
|
ipa_path: options[:ipa],
|
|
147
158
|
package_path: "/tmp",
|
|
148
159
|
platform: options[:platform]
|
|
149
160
|
)
|
|
150
|
-
elsif
|
|
161
|
+
elsif upload_pkg
|
|
151
162
|
package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
|
|
152
163
|
app_id: options[:app].apple_id,
|
|
153
164
|
pkg_path: options[:pkg],
|
|
@@ -58,11 +58,17 @@ module Deliver
|
|
|
58
58
|
start = Time.now
|
|
59
59
|
build = nil
|
|
60
60
|
|
|
61
|
+
use_latest_version = app_version.nil?
|
|
62
|
+
|
|
61
63
|
loop do
|
|
62
64
|
# Sometimes candidate_builds don't appear immediately after submission
|
|
63
65
|
# Wait for candidate_builds to appear on App Store Connect
|
|
64
66
|
# Issue https://github.com/fastlane/fastlane/issues/10411
|
|
65
|
-
|
|
67
|
+
if use_latest_version
|
|
68
|
+
candidate_builds = app.latest_version.candidate_builds
|
|
69
|
+
else
|
|
70
|
+
candidate_builds = app.tunes_all_builds_for_train(train: app_version)
|
|
71
|
+
end
|
|
66
72
|
if (candidate_builds || []).count == 0
|
|
67
73
|
UI.message("Waiting for candidate builds to appear...")
|
|
68
74
|
if (Time.now - start) > (60 * 5)
|
|
@@ -110,7 +110,7 @@ module Fastlane
|
|
|
110
110
|
|
|
111
111
|
# Is printed out in the Steps: output in the terminal
|
|
112
112
|
# Return nil if you don't want any logging in the terminal/JUnit Report
|
|
113
|
-
def self.step_text
|
|
113
|
+
def self.step_text(params)
|
|
114
114
|
self.action_name
|
|
115
115
|
end
|
|
116
116
|
|
|
@@ -121,7 +121,7 @@ module Fastlane
|
|
|
121
121
|
|
|
122
122
|
# instead of "AddGitAction", this will return "add_git" to print it to the user
|
|
123
123
|
def self.action_name
|
|
124
|
-
self.name.split('::').last.gsub(
|
|
124
|
+
self.name.split('::').last.gsub(/Action$/, '').fastlane_underscore
|
|
125
125
|
end
|
|
126
126
|
|
|
127
127
|
def self.lane_context
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
All built-in integrations are available in this directory. Use the `fastlane new_action` command to create a new action.
|
|
2
2
|
|
|
3
3
|
_fastlane_ will automatically detect the files in this folder
|
|
4
|
+
|
|
5
|
+
All available actions are listed and documented on https://docs.fastlane.tools/actions/. Documentation for individual actions is available on https://docs.fastlane.tools/actions/%action_name%, e.g. https://docs.fastlane.tools/actions/copy_artifacts/.
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
require 'ostruct'
|
|
2
|
+
|
|
1
3
|
module Fastlane
|
|
2
4
|
module Actions
|
|
3
5
|
module SharedValues
|
|
4
6
|
LATEST_BUILD_NUMBER = :LATEST_BUILD_NUMBER
|
|
7
|
+
LATEST_VERSION = :LATEST_VERSION
|
|
5
8
|
end
|
|
6
9
|
|
|
7
10
|
class AppStoreBuildNumberAction < Action
|
|
8
11
|
def self.run(params)
|
|
9
12
|
require 'spaceship'
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
result = get_build_number(params)
|
|
15
|
+
build_nr = result.build_nr
|
|
12
16
|
|
|
13
17
|
# Convert build_nr to int (for legacy use) if no "." in string
|
|
14
18
|
if build_nr.kind_of?(String) && !build_nr.include?(".")
|
|
@@ -16,6 +20,9 @@ module Fastlane
|
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
Actions.lane_context[SharedValues::LATEST_BUILD_NUMBER] = build_nr
|
|
23
|
+
Actions.lane_context[SharedValues::LATEST_VERSION] = result.build_v
|
|
24
|
+
|
|
25
|
+
return build_nr
|
|
19
26
|
end
|
|
20
27
|
|
|
21
28
|
def self.get_build_number(params)
|
|
@@ -33,7 +40,7 @@ module Fastlane
|
|
|
33
40
|
|
|
34
41
|
UI.message("Latest upload for live-version #{app.live_version.version} is build: #{build_nr}")
|
|
35
42
|
|
|
36
|
-
return build_nr
|
|
43
|
+
return OpenStruct.new({ build_nr: build_nr, build_v: app.live_version.version })
|
|
37
44
|
else
|
|
38
45
|
version_number = params[:version]
|
|
39
46
|
platform = params[:platform]
|
|
@@ -61,7 +68,7 @@ module Fastlane
|
|
|
61
68
|
if build
|
|
62
69
|
build_nr = build.version
|
|
63
70
|
UI.message("Latest upload for version #{build.app_version} on #{platform_message} is build: #{build_nr}")
|
|
64
|
-
return build_nr
|
|
71
|
+
return OpenStruct.new({ build_nr: build_nr, build_v: build.app_version })
|
|
65
72
|
end
|
|
66
73
|
|
|
67
74
|
# Let user know that build couldn't be found
|
|
@@ -72,7 +79,7 @@ module Fastlane
|
|
|
72
79
|
else
|
|
73
80
|
build_nr = params[:initial_build_number]
|
|
74
81
|
UI.message("Using initial build number of #{build_nr}")
|
|
75
|
-
return build_nr
|
|
82
|
+
return OpenStruct.new({ build_nr: build_nr, build_v: version_number })
|
|
76
83
|
end
|
|
77
84
|
end
|
|
78
85
|
end
|
|
@@ -159,7 +166,8 @@ module Fastlane
|
|
|
159
166
|
|
|
160
167
|
def self.output
|
|
161
168
|
[
|
|
162
|
-
['LATEST_BUILD_NUMBER', 'The latest build number of either live or testflight version']
|
|
169
|
+
['LATEST_BUILD_NUMBER', 'The latest build number of either live or testflight version'],
|
|
170
|
+
['LATEST_VERSION', 'The version of the latest build number']
|
|
163
171
|
]
|
|
164
172
|
end
|
|
165
173
|
|
|
@@ -1,13 +1,164 @@
|
|
|
1
1
|
module Fastlane
|
|
2
2
|
module Actions
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
module SharedValues
|
|
4
|
+
IPA_OUTPUT_PATH ||= :IPA_OUTPUT_PATH
|
|
5
|
+
PKG_OUTPUT_PATH ||= :PKG_OUTPUT_PATH
|
|
6
|
+
DSYM_OUTPUT_PATH ||= :DSYM_OUTPUT_PATH
|
|
7
|
+
XCODEBUILD_ARCHIVE ||= :XCODEBUILD_ARCHIVE # originally defined in XcodebuildAction
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class BuildAppAction < Action
|
|
11
|
+
def self.run(values)
|
|
12
|
+
require 'gym'
|
|
13
|
+
|
|
14
|
+
unless Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE].to_s == "development"
|
|
15
|
+
values[:export_method] ||= Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
if Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING]
|
|
19
|
+
# Since Xcode 9 you need to explicitly provide the provisioning profile per app target
|
|
20
|
+
# If the user is smart and uses match and gym together with fastlane, we can do all
|
|
21
|
+
# the heavy lifting for them
|
|
22
|
+
values[:export_options] ||= {}
|
|
23
|
+
# It's not always a hash, because the user might have passed a string path to a ready plist file
|
|
24
|
+
# If that's the case, we won't set the provisioning profiles
|
|
25
|
+
# see https://github.com/fastlane/fastlane/issues/9490
|
|
26
|
+
if values[:export_options].kind_of?(Hash)
|
|
27
|
+
match_mapping = (Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING] || {}).dup
|
|
28
|
+
existing_mapping = (values[:export_options][:provisioningProfiles] || {}).dup
|
|
29
|
+
|
|
30
|
+
# Be smart about how we merge those mappings in case there are conflicts
|
|
31
|
+
mapping_object = Gym::CodeSigningMapping.new
|
|
32
|
+
hash_to_use = mapping_object.merge_profile_mapping(primary_mapping: existing_mapping,
|
|
33
|
+
secondary_mapping: match_mapping,
|
|
34
|
+
export_method: values[:export_method])
|
|
35
|
+
|
|
36
|
+
values[:export_options][:provisioningProfiles] = hash_to_use
|
|
37
|
+
else
|
|
38
|
+
self.show_xcode_9_warning
|
|
39
|
+
end
|
|
40
|
+
elsif Actions.lane_context[SharedValues::SIGH_PROFILE_PATHS]
|
|
41
|
+
# Since Xcode 9 you need to explicitly provide the provisioning profile per app target
|
|
42
|
+
# If the user used sigh we can match the profiles from sigh
|
|
43
|
+
values[:export_options] ||= {}
|
|
44
|
+
if values[:export_options].kind_of?(Hash)
|
|
45
|
+
# It's not always a hash, because the user might have passed a string path to a ready plist file
|
|
46
|
+
# If that's the case, we won't set the provisioning profiles
|
|
47
|
+
# see https://github.com/fastlane/fastlane/issues/9684
|
|
48
|
+
values[:export_options][:provisioningProfiles] ||= {}
|
|
49
|
+
Actions.lane_context[SharedValues::SIGH_PROFILE_PATHS].each do |profile_path|
|
|
50
|
+
begin
|
|
51
|
+
profile = FastlaneCore::ProvisioningProfile.parse(profile_path)
|
|
52
|
+
app_id_prefix = profile["ApplicationIdentifierPrefix"].first
|
|
53
|
+
bundle_id = profile["Entitlements"]["application-identifier"].gsub("#{app_id_prefix}.", "")
|
|
54
|
+
values[:export_options][:provisioningProfiles][bundle_id] = profile["Name"]
|
|
55
|
+
rescue => ex
|
|
56
|
+
UI.error("Couldn't load profile at path: #{profile_path}")
|
|
57
|
+
UI.error(ex)
|
|
58
|
+
UI.verbose(ex.backtrace.join("\n"))
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
else
|
|
62
|
+
self.show_xcode_9_warning
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
gym_output_path = Gym::Manager.new.work(values)
|
|
67
|
+
if gym_output_path.nil?
|
|
68
|
+
UI.important("No output path received from gym")
|
|
69
|
+
return nil
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
absolute_output_path = File.expand_path(gym_output_path)
|
|
73
|
+
|
|
74
|
+
# Binary path
|
|
75
|
+
if File.extname(absolute_output_path) == ".ipa"
|
|
76
|
+
absolute_dsym_path = absolute_output_path.gsub(/.ipa$/, ".app.dSYM.zip")
|
|
77
|
+
|
|
78
|
+
Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] = absolute_output_path
|
|
79
|
+
ENV[SharedValues::IPA_OUTPUT_PATH.to_s] = absolute_output_path # for deliver
|
|
80
|
+
elsif File.extname(absolute_output_path) == ".pkg"
|
|
81
|
+
absolute_dsym_path = absolute_output_path.gsub(/.pkg$/, ".dSYM.zip")
|
|
82
|
+
|
|
83
|
+
Actions.lane_context[SharedValues::PKG_OUTPUT_PATH] = absolute_output_path
|
|
84
|
+
ENV[SharedValues::PKG_OUTPUT_PATH.to_s] = absolute_output_path # for deliver
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# xcarchive path
|
|
88
|
+
Actions.lane_context[SharedValues::XCODEBUILD_ARCHIVE] = Gym::BuildCommandGenerator.archive_path
|
|
89
|
+
|
|
90
|
+
# dSYM path
|
|
91
|
+
if absolute_dsym_path && File.exist?(absolute_dsym_path)
|
|
92
|
+
Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH] = absolute_dsym_path
|
|
93
|
+
ENV[SharedValues::DSYM_OUTPUT_PATH.to_s] = absolute_dsym_path
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
return absolute_output_path
|
|
97
|
+
end
|
|
98
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
|
8
99
|
|
|
9
100
|
def self.description
|
|
10
|
-
"
|
|
101
|
+
"Easily build and sign your app (via _gym_)"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def self.details
|
|
105
|
+
"More information: https://fastlane.tools/gym"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def self.output
|
|
109
|
+
[
|
|
110
|
+
['IPA_OUTPUT_PATH', 'The path to the newly generated ipa file'],
|
|
111
|
+
['PKG_OUTPUT_PATH', 'The path to the newly generated pkg file'],
|
|
112
|
+
['DSYM_OUTPUT_PATH', 'The path to the dSYM files'],
|
|
113
|
+
['XCODEBUILD_ARCHIVE', 'The path to the xcodebuild archive']
|
|
114
|
+
]
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def self.return_value
|
|
118
|
+
"The absolute path to the generated ipa file"
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def self.author
|
|
122
|
+
"KrauseFx"
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def self.available_options
|
|
126
|
+
require 'gym'
|
|
127
|
+
Gym::Options.available_options
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def self.is_supported?(platform)
|
|
131
|
+
[:ios, :mac].include?(platform)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def self.example_code
|
|
135
|
+
[
|
|
136
|
+
'build_app(scheme: "MyApp", workspace: "MyApp.xcworkspace")',
|
|
137
|
+
'build_app(
|
|
138
|
+
workspace: "MyApp.xcworkspace",
|
|
139
|
+
configuration: "Debug",
|
|
140
|
+
scheme: "MyApp",
|
|
141
|
+
silent: true,
|
|
142
|
+
clean: true,
|
|
143
|
+
output_directory: "path/to/dir", # Destination directory. Defaults to current directory.
|
|
144
|
+
output_name: "my-app.ipa", # specify the name of the .ipa file to generate (including file extension)
|
|
145
|
+
sdk: "iOS 11.1" # use SDK as the name or path of the base SDK when building the project.
|
|
146
|
+
)',
|
|
147
|
+
'gym # alias for "build_app"',
|
|
148
|
+
'build_ios_app # alias for "build_app (only iOS options)"',
|
|
149
|
+
'build_mac_app # alias for "build_app (only macOS options)"'
|
|
150
|
+
]
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def self.category
|
|
154
|
+
:building
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def self.show_xcode_9_warning
|
|
158
|
+
return unless Helper.xcode_at_least?("9.0")
|
|
159
|
+
UI.message("You passed a path to a custom plist file for exporting the binary.")
|
|
160
|
+
UI.message("Make sure to include information about what provisioning profiles to use with Xcode 9")
|
|
161
|
+
UI.message("More information: https://docs.fastlane.tools/codesigning/xcode-project/#xcode-9-and-up")
|
|
11
162
|
end
|
|
12
163
|
end
|
|
13
164
|
end
|