fastlane 2.61.0.beta.20171006010004 → 2.61.0.beta.20171007010004
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -161
- data/cert/README.md +7 -166
- data/deliver/README.md +7 -287
- data/deliver/lib/deliver/runner.rb +1 -1
- data/fastlane/README.md +7 -209
- data/fastlane/lib/fastlane/actions/cocoapods.rb +27 -8
- data/fastlane/lib/fastlane/actions/docs/assets/FrameitGit.gif +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/MacExample.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/PEMRecording.gif +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/PilotTextTransparent.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/PilotTextTransparentSmall.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/PilotTextWhite.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/PilotTransparent.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/QuickLookScreenshot.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/ScreenshotsBig.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/ScreenshotsOverview.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/SignErrors.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/UDIDPrint.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/frameit.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/github_repo.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/htmlPage.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/htmlPagePreview.jpg +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/htmlPagePreviewFade.jpg +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/match.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/match_appstore_small.gif +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/match_init.gif +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/match_nuke.gif +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/pem.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/pilot.ai +5377 -16
- data/fastlane/lib/fastlane/actions/docs/assets/precheck.gif +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/precheck.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/produce.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/running-screengrab.gif +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/scan.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/scanHTML.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/scanHTMLFailing.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/scanScreenshot.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/screengrab.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/sigh.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/sighRecording.gif +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/slack.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/snapshot.gif +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/snapshot.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/supply.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/assets/testSummary.png +0 -0
- data/fastlane/lib/fastlane/actions/docs/cert.md +2 -4
- data/fastlane/lib/fastlane/actions/docs/deliver.md +1 -3
- data/fastlane/lib/fastlane/actions/docs/frameit.md +215 -0
- data/fastlane/lib/fastlane/actions/docs/gym.md +17 -17
- data/fastlane/lib/fastlane/actions/docs/match.md +352 -0
- data/fastlane/lib/fastlane/actions/docs/pem.md +120 -0
- data/fastlane/lib/fastlane/actions/docs/pilot.md +218 -0
- data/fastlane/lib/fastlane/actions/docs/precheck.md +97 -0
- data/fastlane/lib/fastlane/actions/docs/produce.md +227 -0
- data/fastlane/lib/fastlane/actions/docs/scan.md +145 -0
- data/fastlane/lib/fastlane/actions/docs/screengrab.md +145 -0
- data/fastlane/lib/fastlane/actions/docs/sigh.md +187 -0
- data/fastlane/lib/fastlane/actions/docs/snapshot.md +333 -0
- data/fastlane/lib/fastlane/actions/docs/supply.md +144 -0
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +5 -0
- data/fastlane/lib/fastlane/setup/setup_ios.rb +2 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/frameit/README.md +7 -290
- data/gym/README.md +7 -300
- data/match/README.md +7 -420
- data/match/lib/match/generator.rb +1 -0
- data/match/lib/match/git_helper.rb +31 -12
- data/match/lib/match/runner.rb +11 -6
- data/pem/README.md +7 -188
- data/pilot/README.md +7 -285
- data/pilot/lib/pilot/build_manager.rb +13 -10
- data/precheck/README.md +7 -171
- data/produce/README.md +7 -294
- data/scan/README.md +7 -219
- data/screengrab/README.md +7 -192
- data/sigh/README.md +7 -262
- data/snapshot/README.md +7 -408
- data/snapshot/lib/snapshot/reset_simulators.rb +4 -2
- data/spaceship/lib/spaceship/test_flight/build.rb +1 -1
- data/supply/README.md +7 -219
- metadata +52 -2
@@ -0,0 +1,120 @@
|
|
1
|
+
<p align="center">
|
2
|
+
<img src="/img/actions/pem.png" height="110">
|
3
|
+
</p>
|
4
|
+
|
5
|
+
###### Automatically generate and renew your push notification profiles
|
6
|
+
|
7
|
+
Tired of manually creating and maintaining your push notification profiles for your iOS apps? Tired of generating a _pem_ file for your server?
|
8
|
+
|
9
|
+
_pem_ does all that for you, just by simply running _pem_.
|
10
|
+
|
11
|
+
_pem_ creates new .pem, .cer, and .p12 files to be uploaded to your push server if a valid push notification profile is needed. _pem_ does not cover uploading the file to your server.
|
12
|
+
|
13
|
+
To automate iOS Provisioning profiles you can use [match](https://github.com/fastlane/fastlane/tree/master/match).
|
14
|
+
|
15
|
+
-------
|
16
|
+
|
17
|
+
<p align="center">
|
18
|
+
<a href="#features">Features</a> •
|
19
|
+
<a href="#usage">Usage</a> •
|
20
|
+
<a href="#how-does-it-work">How does it work?</a> •
|
21
|
+
<a href="#tips">Tips</a> •
|
22
|
+
<a href="#need-help">Need help?</a>
|
23
|
+
</p>
|
24
|
+
|
25
|
+
-------
|
26
|
+
|
27
|
+
<h5 align="center"><code>pem</code> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
28
|
+
|
29
|
+
# Features
|
30
|
+
Well, it's actually just one: Generate the ``_pem_`` file for your server.
|
31
|
+
|
32
|
+
Check out this gif:
|
33
|
+
|
34
|
+
![img/actions/PEMRecording.gif](assets/PEMRecording.gif)
|
35
|
+
|
36
|
+
# Usage
|
37
|
+
|
38
|
+
fastlane pem
|
39
|
+
|
40
|
+
Yes, that's the whole command!
|
41
|
+
|
42
|
+
This does the following:
|
43
|
+
|
44
|
+
- Create a new signing request
|
45
|
+
- Create a new push certification
|
46
|
+
- Downloads the certificate
|
47
|
+
- Generates a new ```.pem``` file in the current working directory, which you can upload to your server
|
48
|
+
|
49
|
+
Note that ``_pem_`` will never revoke your existing certificates. _pem_ can't download any of your existing push certificates, as the private key is only available on the machine it was created on.
|
50
|
+
|
51
|
+
If you already have a push certificate enabled, which is active for at least 30 more days, _pem_ will not create a new certificate. If you still want to create one, use the `force`:
|
52
|
+
|
53
|
+
fastlane pem --force
|
54
|
+
|
55
|
+
You can pass parameters like this:
|
56
|
+
|
57
|
+
fastlane pem -a com.krausefx.app -u username
|
58
|
+
|
59
|
+
If you want to generate a development certificate instead:
|
60
|
+
|
61
|
+
fastlane pem --development
|
62
|
+
|
63
|
+
Set a password for your `p12` file:
|
64
|
+
|
65
|
+
fastlane pem -p "MyPass"
|
66
|
+
|
67
|
+
You can specify a name for the output file:
|
68
|
+
|
69
|
+
fastlane pem -o my.pem
|
70
|
+
|
71
|
+
To get a list of available options run:
|
72
|
+
|
73
|
+
fastlane action pem
|
74
|
+
|
75
|
+
|
76
|
+
### Note about empty `p12` passwords and Keychain Access.app
|
77
|
+
|
78
|
+
_pem_ will produce a valid `p12` without specifying a password, or using the empty-string as the password.
|
79
|
+
While the file is valid, the Mac's Keychain Access will not allow you to open the file without specifying a passphrase.
|
80
|
+
|
81
|
+
Instead, you may verify the file is valid using OpenSSL:
|
82
|
+
|
83
|
+
openssl pkcs12 -info -in my.p12
|
84
|
+
|
85
|
+
If you need the `p12` in your keychain, perhaps to test push with an app like [Knuff](https://github.com/KnuffApp/Knuff) or [Pusher](https://github.com/noodlewerk/NWPusher), you can use `openssl` to export the `p12` to _pem_ and back to `p12`:
|
86
|
+
|
87
|
+
% openssl pkcs12 -in my.p12 -out my.pem
|
88
|
+
Enter Import Password:
|
89
|
+
<hit enter: the p12 has no password>
|
90
|
+
MAC verified OK
|
91
|
+
Enter PEM pass phrase:
|
92
|
+
<enter a temporary password to encrypt the pem file>
|
93
|
+
|
94
|
+
% openssl pkcs12 -export -in my.pem -out my-with-passphrase.p12
|
95
|
+
Enter pass phrase for temp.pem:
|
96
|
+
<enter the temporary password to decrypt the pem file>
|
97
|
+
|
98
|
+
Enter Export Password:
|
99
|
+
<enter a password for encrypting the new p12 file>
|
100
|
+
|
101
|
+
##### [Do you like fastlane? Be the first to know about updates and new fastlane tools](https://tinyletter.com/fastlane-tools)
|
102
|
+
|
103
|
+
## Environment Variables
|
104
|
+
|
105
|
+
Run `fastlane action pem` to get a list of available environment variables.
|
106
|
+
|
107
|
+
# How does it work?
|
108
|
+
|
109
|
+
_pem_ uses [spaceship](https://spaceship.airforce) to communicate with the Apple Developer Portal to request a new push certificate for you.
|
110
|
+
|
111
|
+
## How is my password stored?
|
112
|
+
``_pem_`` uses the [password manager](https://github.com/fastlane/fastlane/tree/master/credentials_manager) from _fastlane_. Take a look the [CredentialsManager README](https://github.com/fastlane/fastlane/tree/master/credentials_manager) for more information.
|
113
|
+
|
114
|
+
# Tips
|
115
|
+
|
116
|
+
## Use the 'Provisioning Quicklook plugin'
|
117
|
+
Download and install the [Provisioning Plugin](https://github.com/chockenberry/Provisioning).
|
118
|
+
|
119
|
+
It will show you the ``_pem_`` files like this:
|
120
|
+
![img/actions/QuickLookScreenshot.png](assets/QuickLookScreenshot.png)
|
@@ -0,0 +1,218 @@
|
|
1
|
+
<p align="center">
|
2
|
+
<img src="/img/actions/PilotTextTransparentSmall.png" width="500">
|
3
|
+
</p>
|
4
|
+
|
5
|
+
###### The best way to manage your TestFlight testers and builds from your terminal
|
6
|
+
|
7
|
+
Pilot makes it easier to manage your app on Apple’s TestFlight. You can:
|
8
|
+
|
9
|
+
- Upload & distribute builds
|
10
|
+
- Add & remove testers
|
11
|
+
- Retrieve information about testers & devices
|
12
|
+
- Import/export all available testers
|
13
|
+
|
14
|
+
_pilot_ uses [spaceship.airforce](https://spaceship.airforce) to interact with iTunes Connect 🚀
|
15
|
+
|
16
|
+
-------
|
17
|
+
|
18
|
+
<p align="center">
|
19
|
+
<a href="#usage">Usage</a> •
|
20
|
+
<a href="#tips">Tips</a>
|
21
|
+
</p>
|
22
|
+
|
23
|
+
-------
|
24
|
+
|
25
|
+
<h5 align="center"><code>pilot</code> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate beta deployments and releases for your iOS and Android apps.</h5>
|
26
|
+
|
27
|
+
# Usage
|
28
|
+
|
29
|
+
For all commands you can specify the Apple ID to use using `-u felix@krausefx.com`. If you execute _pilot_ in a project already using [fastlane](https://fastlane.tools) the username and app identifier will automatically be determined.
|
30
|
+
|
31
|
+
## Uploading builds
|
32
|
+
|
33
|
+
To upload a new build, just run
|
34
|
+
|
35
|
+
```no-highlight
|
36
|
+
fastlane pilot upload
|
37
|
+
```
|
38
|
+
|
39
|
+
This will automatically look for an `ipa` in your current directory and tries to fetch the login credentials from your [fastlane setup](https://fastlane.tools).
|
40
|
+
|
41
|
+
You'll be asked for any missing information. Additionally, you can pass all kinds of parameters:
|
42
|
+
|
43
|
+
```no-highlight
|
44
|
+
fastlane action pilot
|
45
|
+
```
|
46
|
+
|
47
|
+
You can pass a changelog using
|
48
|
+
|
49
|
+
```no-highlight
|
50
|
+
fastlane pilot upload --changelog "Something that is new here"
|
51
|
+
```
|
52
|
+
|
53
|
+
You can also skip the submission of the binary, which means, the `ipa` file will only be uploaded and not distributed to testers:
|
54
|
+
|
55
|
+
```no-highlight
|
56
|
+
fastlane pilot upload --skip_submission
|
57
|
+
```
|
58
|
+
|
59
|
+
_pilot_ does all kinds of magic for you:
|
60
|
+
|
61
|
+
- Automatically detects the bundle identifier from your `ipa` file
|
62
|
+
- Automatically fetch the AppID of your app based on the bundle identifier
|
63
|
+
|
64
|
+
_pilot_ uses [spaceship](https://spaceship.airforce) to submit the build metadata and the iTunes Transporter to upload the binary. Because iTunes Transporter's upload capability is only supported on OS X, `pilot upload` does not work on Linux, as described [in this issue](https://github.com/fastlane/fastlane/issues/5789)
|
65
|
+
|
66
|
+
## List builds
|
67
|
+
|
68
|
+
To list all builds for specific application use
|
69
|
+
|
70
|
+
```no-highlight
|
71
|
+
fastlane pilot builds
|
72
|
+
```
|
73
|
+
|
74
|
+
The result lists all active builds and processing builds:
|
75
|
+
|
76
|
+
```no-highlight
|
77
|
+
+-----------+---------+----------+----------+----------+
|
78
|
+
| Great App Builds |
|
79
|
+
+-----------+---------+----------+----------+----------+
|
80
|
+
| Version # | Build # | Testing | Installs | Sessions |
|
81
|
+
+-----------+---------+----------+----------+----------+
|
82
|
+
| 0.9.13 | 1 | Expired | 1 | 0 |
|
83
|
+
| 0.9.13 | 2 | Expired | 0 | 0 |
|
84
|
+
| 0.9.20 | 3 | Expired | 0 | 0 |
|
85
|
+
| 0.9.20 | 4 | Internal | 5 | 3 |
|
86
|
+
+-----------+---------+----------+----------+----------+
|
87
|
+
```
|
88
|
+
|
89
|
+
## Managing beta testers
|
90
|
+
|
91
|
+
### List of Testers
|
92
|
+
|
93
|
+
This command will list all your testers, both internal and external.
|
94
|
+
|
95
|
+
```no-highlight
|
96
|
+
fastlane pilot list
|
97
|
+
```
|
98
|
+
|
99
|
+
The output will look like this:
|
100
|
+
|
101
|
+
```no-highlight
|
102
|
+
+--------+--------+--------------------------+-----------+
|
103
|
+
| Internal Testers |
|
104
|
+
+--------+--------+--------------------------+-----------+
|
105
|
+
| First | Last | Email | # Devices |
|
106
|
+
+--------+--------+--------------------------+-----------+
|
107
|
+
| Felix | Krause | felix@krausefx.com | 2 |
|
108
|
+
+--------+--------+--------------------------+-----------+
|
109
|
+
|
110
|
+
+-----------+---------+----------------------------+-----------+
|
111
|
+
| External Testers |
|
112
|
+
+-----------+---------+----------------------------+-----------+
|
113
|
+
| First | Last | Email | # Devices |
|
114
|
+
+-----------+---------+----------------------------+-----------+
|
115
|
+
| Max | Manfred | email@email.com | 0 |
|
116
|
+
| Detlef | Müller | detlef@krausefx.com | 1 |
|
117
|
+
+-----------+---------+----------------------------+-----------+
|
118
|
+
```
|
119
|
+
|
120
|
+
### Add a new tester
|
121
|
+
|
122
|
+
To add a new tester to both your iTunes Connect account and to your app (if given), use the `pilot add` command. This will create a new tester (if necessary) or add an existing tester to the app to test.
|
123
|
+
|
124
|
+
```no-highlight
|
125
|
+
fastlane pilot add email@invite.com
|
126
|
+
```
|
127
|
+
|
128
|
+
Additionally you can specify the app identifier (if necessary):
|
129
|
+
|
130
|
+
```no-highlight
|
131
|
+
fastlane pilot add email@email.com -a com.krausefx.app
|
132
|
+
```
|
133
|
+
|
134
|
+
### Find a tester
|
135
|
+
|
136
|
+
To find a specific tester use
|
137
|
+
|
138
|
+
```no-highlight
|
139
|
+
fastlane pilot find felix@krausefx.com
|
140
|
+
```
|
141
|
+
|
142
|
+
The resulting output will look like this:
|
143
|
+
|
144
|
+
```no-highlight
|
145
|
+
+---------------------+---------------------+
|
146
|
+
| felix@krausefx.com |
|
147
|
+
+---------------------+---------------------+
|
148
|
+
| First name | Felix |
|
149
|
+
| Last name | Krause |
|
150
|
+
| Email | felix@krausefx.com |
|
151
|
+
| Latest Version | 0.9.14 (23 |
|
152
|
+
| Latest Install Date | 03/28/15 19:00 |
|
153
|
+
| 2 Devices | • iPhone 6, iOS 8.3 |
|
154
|
+
| | • iPhone 5, iOS 7.0 |
|
155
|
+
+---------------------+---------------------+
|
156
|
+
```
|
157
|
+
|
158
|
+
### Remove a tester
|
159
|
+
|
160
|
+
This command will only remove external beta testers.
|
161
|
+
|
162
|
+
```no-highlight
|
163
|
+
fastlane pilot remove felix@krausefx.com
|
164
|
+
```
|
165
|
+
|
166
|
+
### Export testers
|
167
|
+
|
168
|
+
To export all external testers to a CSV file. Useful if you need to import tester info to another system or a new account.
|
169
|
+
|
170
|
+
```no-highlight
|
171
|
+
fastlane pilot export
|
172
|
+
```
|
173
|
+
|
174
|
+
### Import testers
|
175
|
+
|
176
|
+
Add external testers from a CSV file. Sample CSV file available [here](https://itunesconnect.apple.com/itc/docs/tester_import.csv).
|
177
|
+
|
178
|
+
```no-highlight
|
179
|
+
fastlane pilot import
|
180
|
+
```
|
181
|
+
|
182
|
+
You can also specify the directory using
|
183
|
+
|
184
|
+
```no-highlight
|
185
|
+
fastlane pilot export -c ~/Desktop/testers.csv
|
186
|
+
fastlane pilot import -c ~/Desktop/testers.csv
|
187
|
+
```
|
188
|
+
|
189
|
+
# Tips
|
190
|
+
|
191
|
+
## Debug information
|
192
|
+
|
193
|
+
If you run into any issues you can use the `verbose` mode to get a more detailed output:
|
194
|
+
|
195
|
+
fastlane pilot upload --verbose
|
196
|
+
|
197
|
+
## Firewall Issues
|
198
|
+
|
199
|
+
_pilot_ uses the iTunes Transporter to upload metadata and binaries. In case you are behind a firewall, you can specify a different transporter protocol from the command line using
|
200
|
+
|
201
|
+
```no-highlight
|
202
|
+
DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t DAV" pilot ...
|
203
|
+
```
|
204
|
+
|
205
|
+
If you are using _pilot_ via the [fastlane action](https://docs.fastlane.tools/actions#pilot), add the following to your `Fastfile`
|
206
|
+
|
207
|
+
```no-highlight
|
208
|
+
ENV["DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS"] = "-t DAV"
|
209
|
+
pilot...
|
210
|
+
```
|
211
|
+
|
212
|
+
## Credentials Issues
|
213
|
+
|
214
|
+
If your password contains special characters, _pilot_ may throw a confusing error saying your "Your Apple ID or password was entered incorrectly". The easiest way to fix this error is to change your password to something that **does not** contains special characters.
|
215
|
+
|
216
|
+
## How is my password stored?
|
217
|
+
|
218
|
+
_pilot_ uses the [CredentialsManager](https://github.com/fastlane/fastlane/tree/master/credentials_manager) from _fastlane_.
|
@@ -0,0 +1,97 @@
|
|
1
|
+
<p align="center">
|
2
|
+
<img src="/img/actions/precheck.png" height="110">
|
3
|
+
</p>
|
4
|
+
|
5
|
+
Precheck
|
6
|
+
============
|
7
|
+
|
8
|
+
###### Check your app using a community driven set of App Store review rules to avoid being rejected
|
9
|
+
|
10
|
+
Apple rejects builds for many avoidable metadata issues like including swear words 😮, other companies’ trademarks, or even mentioning an iOS bug 🐛. _fastlane precheck_ takes a lot of the guess work out by scanning your app’s details in iTunes Connect for avoidable problems. fastlane precheck helps you get your app through app review without rejections so you can ship faster 🚀
|
11
|
+
|
12
|
+
-------
|
13
|
+
|
14
|
+
<p align="center">
|
15
|
+
<a href="#features">Features</a> •
|
16
|
+
<a href="#usage">Usage</a> •
|
17
|
+
<a href="#example">Example</a> •
|
18
|
+
<a href="#how-does-it-work">How does it work?</a>
|
19
|
+
</p>
|
20
|
+
|
21
|
+
-------
|
22
|
+
|
23
|
+
# Features
|
24
|
+
|
25
|
+
|
26
|
+
| | precheck Features |
|
27
|
+
|----------|-----------------|
|
28
|
+
|🐛| product bug mentions|
|
29
|
+
|🙅♂️|Swear word checker|
|
30
|
+
|🤖|Mentioning other platforms|
|
31
|
+
|😵|URL reachability checker|
|
32
|
+
|📝|Placeholder/test words/mentioning future features|
|
33
|
+
|📅|Copyright date checking|
|
34
|
+
|🙈|Customizable word list checking|
|
35
|
+
|📢|You can decide if you want to warn about potential problems and continue or have _fastlane_ show an error and stop after all scans are done.|
|
36
|
+
|
37
|
+
# Usage
|
38
|
+
Run _fastlane precheck_ to check the app metadata from iTunes Connect
|
39
|
+
|
40
|
+
fastlane precheck
|
41
|
+
|
42
|
+
To get a list of available options run
|
43
|
+
|
44
|
+
fastlane action precheck
|
45
|
+
|
46
|
+
<img src="/img/actions/precheck.gif" />
|
47
|
+
|
48
|
+
# Example
|
49
|
+
|
50
|
+
Since you might want to manually trigger _precheck_ but don't want to specify all the parameters every time, you can store your defaults in a so called `Precheckfile`.
|
51
|
+
|
52
|
+
Run `fastlane precheck init` to create a new configuration file. Example:
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
# indicates that your metadata will not be checked by this rule
|
56
|
+
negative_apple_sentiment(level: :skip)
|
57
|
+
|
58
|
+
# when triggered, this rule will warn you of a potential problem
|
59
|
+
curse_words(level: :warn)
|
60
|
+
|
61
|
+
# show error and prevent any further commands from running after fastlane precheck finishes
|
62
|
+
unreachable_urls(level: :error)
|
63
|
+
|
64
|
+
# pass in whatever words you want to check for
|
65
|
+
custom_text(data: ["chrome", "webos"],
|
66
|
+
level: :warn)
|
67
|
+
```
|
68
|
+
|
69
|
+
### Use with [_fastlane_](https://github.com/fastlane/fastlane/tree/master/fastlane)
|
70
|
+
|
71
|
+
_precheck_ is fully integrated with [_deliver_](https://github.com/fastlane/fastlane/tree/master/deliver) another [_fastlane_](https://github.com/fastlane/fastlane/tree/master/fastlane) tool.
|
72
|
+
|
73
|
+
Update your `Fastfile` to contain the following code:
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
lane :production do
|
77
|
+
...
|
78
|
+
# by default deliver will call precheck and warn you of any problems
|
79
|
+
# if you want precheck to halt submitting to app review, you can pass
|
80
|
+
# precheck_default_rule_level: :error
|
81
|
+
deliver(precheck_default_rule_level: :error)
|
82
|
+
...
|
83
|
+
end
|
84
|
+
|
85
|
+
# or if you prefer, you can run precheck alone
|
86
|
+
lane :check_metadata do
|
87
|
+
precheck
|
88
|
+
end
|
89
|
+
|
90
|
+
```
|
91
|
+
|
92
|
+
# How does it work?
|
93
|
+
|
94
|
+
_precheck_ will access `iTunes Connect` to download your app's metadata. It uses [spaceship](https://spaceship.airforce) to communicate with Apple's web services.
|
95
|
+
|
96
|
+
# Want to improve precheck's rules?
|
97
|
+
Please submit an issue on GitHub and provide information about your App Store rejection! Make sure you scrub out any personally identifiable information since this will be public.
|
@@ -0,0 +1,227 @@
|
|
1
|
+
<p align="center">
|
2
|
+
<img src="/img/actions/produce.png" height="110">
|
3
|
+
</p>
|
4
|
+
|
5
|
+
###### Create new iOS apps on iTunes Connect and Dev Portal using your command line
|
6
|
+
|
7
|
+
_produce_ creates new iOS apps on both the Apple Developer Portal and iTunes Connect with the minimum required information.
|
8
|
+
|
9
|
+
-------
|
10
|
+
|
11
|
+
<p align="center">
|
12
|
+
<a href="#features">Features</a> •
|
13
|
+
<a href="#usage">Usage</a> •
|
14
|
+
<a href="#how-does-it-work">How does it work?</a>
|
15
|
+
</p>
|
16
|
+
|
17
|
+
-------
|
18
|
+
|
19
|
+
# Features
|
20
|
+
|
21
|
+
- **Create** new apps on both iTunes Connect and the Apple Developer Portal
|
22
|
+
- **Modify** Application Services on the Apple Developer Portal
|
23
|
+
- **Create** App Groups on the Apple Developer Portal
|
24
|
+
- **Associate** apps with App Groups on the Apple Developer Portal
|
25
|
+
- **Create** Merchant Identifiers on the Apple Developer Portal
|
26
|
+
- **Associate** apps with Merchant Identifiers on the Apple Developer Portal
|
27
|
+
- Support for **multiple Apple accounts**, storing your credentials securely in the Keychain
|
28
|
+
|
29
|
+
# Usage
|
30
|
+
|
31
|
+
## Creating a new application
|
32
|
+
|
33
|
+
fastlane produce
|
34
|
+
|
35
|
+
To get a list of all available parameters:
|
36
|
+
|
37
|
+
fastlane produce --help
|
38
|
+
|
39
|
+
```no-highlight
|
40
|
+
Commands: (* default)
|
41
|
+
associate_group Associate with a group, which is created if needed or simply located otherwise
|
42
|
+
associate_merchant Associate with a merchant for use with Apple Pay. Apple Pay will be enabled for this app
|
43
|
+
create * Creates a new app on iTunes Connect and the Apple Developer Portal
|
44
|
+
disable_services Disable specific Application Services for a specific app on the Apple Developer Portal
|
45
|
+
enable_services Enable specific Application Services for a specific app on the Apple Developer Portal
|
46
|
+
group Ensure that a specific App Group exists
|
47
|
+
help Display global or [command] help documentation
|
48
|
+
merchant Ensure that a specific Merchant exists
|
49
|
+
|
50
|
+
Global Options:
|
51
|
+
--verbose
|
52
|
+
-h, --help Display help documentation
|
53
|
+
-v, --version Display version information
|
54
|
+
|
55
|
+
Options for create:
|
56
|
+
-u, --username STRING Your Apple ID Username (PRODUCE_USERNAME)
|
57
|
+
-a, --app_identifier STRING App Identifier (Bundle ID, e.g. com.krausefx.app) (PRODUCE_APP_IDENTIFIER)
|
58
|
+
-e, --bundle_identifier_suffix STRING App Identifier Suffix (Ignored if App Identifier does not ends with .*) (PRODUCE_APP_IDENTIFIER_SUFFIX)
|
59
|
+
-q, --app_name STRING App Name (PRODUCE_APP_NAME)
|
60
|
+
-z, --app_version STRING Initial version number (e.g. '1.0') (PRODUCE_VERSION)
|
61
|
+
-y, --sku STRING SKU Number (e.g. '1234') (PRODUCE_SKU)
|
62
|
+
-j, --platform STRING The platform to use (optional) (PRODUCE_PLATFORM)
|
63
|
+
-m, --language STRING Primary Language (e.g. 'English', 'German') (PRODUCE_LANGUAGE)
|
64
|
+
-c, --company_name STRING The name of your company. Only required if it's the first app you create (PRODUCE_COMPANY_NAME)
|
65
|
+
-i, --skip_itc [VALUE] Skip the creation of the app on iTunes Connect (PRODUCE_SKIP_ITC)
|
66
|
+
-d, --skip_devcenter [VALUE] Skip the creation of the app on the Apple Developer Portal (PRODUCE_SKIP_DEVCENTER)
|
67
|
+
-s, --itc_users ARRAY Array of iTunes Connect users. If provided, you can limit access to this newly created app for users with the App Manager, Developer, Marketer or Sales roles (ITC_USERS)
|
68
|
+
-b, --team_id STRING The ID of your Developer Portal team if you're in multiple teams (PRODUCE_TEAM_ID)
|
69
|
+
-l, --team_name STRING The name of your Developer Portal team if you're in multiple teams (PRODUCE_TEAM_NAME)
|
70
|
+
-k, --itc_team_id [VALUE] The ID of your iTunes Connect team if you're in multiple teams (PRODUCE_ITC_TEAM_ID)
|
71
|
+
-p, --itc_team_name STRING The name of your iTunes Connect team if you're in multiple teams (PRODUCE_ITC_TEAM_NAME)
|
72
|
+
```
|
73
|
+
|
74
|
+
## Enabling / Disabling Application Services
|
75
|
+
|
76
|
+
If you want to enable Application Services for an App ID (HomeKit and HealthKit in this example):
|
77
|
+
|
78
|
+
fastlane produce enable_services --homekit --healthkit
|
79
|
+
|
80
|
+
If you want to disable Application Services for an App ID (iCloud in this case):
|
81
|
+
|
82
|
+
fastlane produce disable_services --icloud
|
83
|
+
|
84
|
+
If you want to create a new App Group:
|
85
|
+
|
86
|
+
fastlane produce group -g group.krausefx -n "Example App Group"
|
87
|
+
|
88
|
+
If you want to associate an app with an App Group:
|
89
|
+
|
90
|
+
fastlane produce associate_group -a com.krausefx.app group.krausefx
|
91
|
+
|
92
|
+
# Parameters
|
93
|
+
|
94
|
+
Get a list of all available options using
|
95
|
+
|
96
|
+
```no-highlight
|
97
|
+
fastlane produce enable_services --help
|
98
|
+
```
|
99
|
+
|
100
|
+
```no-highlight
|
101
|
+
--app-group Enable App Groups
|
102
|
+
--apple-pay Enable Apple Pay
|
103
|
+
--associated-domains Enable Associated Domains
|
104
|
+
--data-protection STRING Enable Data Protection, suitable values are "complete", "unlessopen" and "untilfirstauth"
|
105
|
+
--game-center Enable Game Center
|
106
|
+
--healthkit Enable HealthKit
|
107
|
+
--homekit Enable HomeKit
|
108
|
+
--wireless-conf Enable Wireless Accessory Configuration
|
109
|
+
--icloud STRING Enable iCloud, suitable values are "legacy" and "cloudkit"
|
110
|
+
--in-app-purchase Enable In-App Purchase
|
111
|
+
--inter-app-audio Enable Inter-App-Audio
|
112
|
+
--passbook Enable Passbook
|
113
|
+
--push-notification Enable Push notification (only enables the service, does not configure certificates)
|
114
|
+
--sirikit Enable SiriKit
|
115
|
+
--vpn-conf Enable VPN Configuration
|
116
|
+
```
|
117
|
+
|
118
|
+
```no-highlight
|
119
|
+
fastlane produce disable_services --help
|
120
|
+
```
|
121
|
+
|
122
|
+
```
|
123
|
+
--app-group Disable App Groups
|
124
|
+
--apple-pay Disable Apple Pay
|
125
|
+
--associated-domains Disable Associated Domains
|
126
|
+
--data-protection Disable Data Protection
|
127
|
+
--game-center Disable Game Center
|
128
|
+
--healthkit Disable HealthKit
|
129
|
+
--homekit Disable HomeKit
|
130
|
+
--wireless-conf Disable Wireless Accessory Configuration
|
131
|
+
--icloud Disable iCloud
|
132
|
+
--in-app-purchase Disable In-App Purchase
|
133
|
+
--inter-app-audio Disable Inter-App-Audio
|
134
|
+
--passbook Disable Passbook
|
135
|
+
--push-notification Disable Push notifications
|
136
|
+
--sirikit Disable SiriKit
|
137
|
+
--vpn-conf Disable VPN Configuration
|
138
|
+
```
|
139
|
+
|
140
|
+
## Creating Apple Pay merchants and associating them with an App ID
|
141
|
+
|
142
|
+
If you want to create a new Apple Pay Merchant Identifier:
|
143
|
+
|
144
|
+
```no-highlight
|
145
|
+
fastlane produce merchant -o merchant.com.example.production -r "Example Merchant Production"
|
146
|
+
```
|
147
|
+
|
148
|
+
Use `--help` for more information about all available parameters
|
149
|
+
```
|
150
|
+
fastlane produce merchant --help
|
151
|
+
```
|
152
|
+
|
153
|
+
If you want to associate an app with a Merchant Identifier:
|
154
|
+
|
155
|
+
```no-highlight
|
156
|
+
fastlane produce associate_merchant -a com.krausefx.app merchant.com.example.production
|
157
|
+
```
|
158
|
+
|
159
|
+
If you want to associate an app with multiple Merchant Identifiers:
|
160
|
+
|
161
|
+
```no-highlight
|
162
|
+
fastlane produce associate_merchant -a com.krausefx.app merchant.com.example.production merchant.com.example.sandbox
|
163
|
+
```
|
164
|
+
|
165
|
+
Use --help for more information about all available parameters
|
166
|
+
|
167
|
+
```no-highlight
|
168
|
+
fastlane produce associate_merchant --help
|
169
|
+
```
|
170
|
+
|
171
|
+
## Environment Variables
|
172
|
+
|
173
|
+
All available values can also be passed using environment variables, run `fastlane produce --help` to get a list of all available parameters.
|
174
|
+
|
175
|
+
## _fastlane_ Integration
|
176
|
+
|
177
|
+
Your `Fastfile` should look like this
|
178
|
+
|
179
|
+
```ruby
|
180
|
+
lane :release do
|
181
|
+
produce(
|
182
|
+
username: 'felix@krausefx.com',
|
183
|
+
app_identifier: 'com.krausefx.app',
|
184
|
+
app_name: 'MyApp',
|
185
|
+
language: 'English',
|
186
|
+
app_version: '1.0',
|
187
|
+
sku: '123',
|
188
|
+
team_name: 'SunApps GmbH' # only necessary when in multiple teams
|
189
|
+
|
190
|
+
# Optional
|
191
|
+
# App services can be enabled during app creation
|
192
|
+
enable_services: {
|
193
|
+
app_group: "on" # Valid values: "on", "off"
|
194
|
+
apple_pay: "on" # Valid values: "on", "off"
|
195
|
+
associated_domains: "on" # Valid values: "on", "off"
|
196
|
+
data_protection: "complete" # Valid values: "complete", "unlessopen", "untilfirstauth"
|
197
|
+
game_center: "on" # Valid values: "on", "off"
|
198
|
+
health_kit: "on" # Valid values: "on", "off"
|
199
|
+
home_kit: "on" # Valid values: "on", "off"
|
200
|
+
wireless_accessory: "on" # Valid values: "on", "off"
|
201
|
+
icloud: "cloudkit" # Valid values: "legacy", "cloudkit"
|
202
|
+
in_app_purchase: "on" # Valid values: "on", "off"
|
203
|
+
inter_app_audio: "on" # Valid values: "on", "off"
|
204
|
+
passbook: "on" # Valid values: "on", "off"
|
205
|
+
push_notification: "on" # Valid values: "on", "off"
|
206
|
+
siri_kit: "on" # Valid values: "on", "off"
|
207
|
+
vpn_configuration: "on" # Valid values: "on", "off"
|
208
|
+
}
|
209
|
+
)
|
210
|
+
|
211
|
+
deliver
|
212
|
+
end
|
213
|
+
```
|
214
|
+
|
215
|
+
To use the newly generated app in _deliver_, you need to add this line to your `Deliverfile`:
|
216
|
+
|
217
|
+
```ruby
|
218
|
+
apple_id ENV['PRODUCE_APPLE_ID']
|
219
|
+
```
|
220
|
+
|
221
|
+
This will tell _deliver_, which `App ID` to use, since the app is not yet available in the App Store.
|
222
|
+
|
223
|
+
You'll still have to fill out the remaining information (like screenshots, app description and pricing). You can use [deliver](https://github.com/fastlane/fastlane/tree/master/deliver) to upload your app metadata using a CLI
|
224
|
+
|
225
|
+
## How is my password stored?
|
226
|
+
|
227
|
+
_produce_ uses the [password manager](https://github.com/fastlane/fastlane/tree/master/credentials_manager) from _fastlane_. Take a look the [CredentialsManager README](https://github.com/fastlane/fastlane/tree/master/credentials_manager) for more information.
|