fastlane 0.4.2 → 0.5.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/README.md +5 -2
- data/lib/assets/AppfileTemplate +1 -1
- data/lib/assets/FastfileTemplate +3 -3
- data/lib/fastlane/actions/deliver.rb +1 -1
- data/lib/fastlane/actions/increment_version_number.rb +98 -0
- data/lib/fastlane/actions/ipa.rb +2 -1
- data/lib/fastlane/actions/push_to_git_remote.rb +2 -2
- data/lib/fastlane/actions/register_devices.rb +63 -0
- data/lib/fastlane/actions/team_id.rb +1 -1
- data/lib/fastlane/runner.rb +1 -0
- data/lib/fastlane/version.rb +1 -1
- metadata +26 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c747e9fa3dff44e9bd4762c4281f9cee8408b07
|
4
|
+
data.tar.gz: 5fcec7383048bacd0bd15513b84bd181240e1de0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4db176d2e311a47c93084a8a6d290c9e9743581461153738ba5f582a8719364a5df73b050a97d00c891d050060d775eb15499dea4634c9cf1853488865a43153
|
7
|
+
data.tar.gz: 4601459d9f086f2cfc811646c28dd73b9fcb9f683a850af6ab5d26b1096523a05c580c815eabe891f19d59617430d7b42f24b3e7489cce2a813f23bf585ae90c
|
data/README.md
CHANGED
@@ -91,11 +91,11 @@ If you want to take a look at a project, already using `fastlane`, check out the
|
|
91
91
|
# Quick Start
|
92
92
|
|
93
93
|
|
94
|
-
The setup
|
94
|
+
The setup assistant will create all the necessary files for you, using the existing app metadata from iTunes Connect.
|
95
95
|
|
96
96
|
- ```cd [your_project_folder]```
|
97
97
|
- ```fastlane init```
|
98
|
-
- Follow the setup
|
98
|
+
- Follow the setup assistant, which will set up ```fastlane``` for you
|
99
99
|
- Further customise the ```Fastfile``` using the next section
|
100
100
|
|
101
101
|
For a more detailed setup, please follow the [fastlane guide](https://github.com/KrauseFx/fastlane/blob/master/GUIDE.md).
|
@@ -141,9 +141,11 @@ When one command fails, the execution will be aborted.
|
|
141
141
|
- [CocoaPods](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#cocoapods): Setup your CocoaPods project
|
142
142
|
- [Carthage](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#carthage): Setup your Carthage project
|
143
143
|
- [increment_build_number](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#increment_build_number): Increment the Xcode build number before building the app
|
144
|
+
- - [increment_build_number](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#increment_version_number): Increment the Xcode version number before building the app
|
144
145
|
|
145
146
|
### Testing
|
146
147
|
- [snapshot](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#snapshot): Automate taking localized screenshots of your iOS app on every device
|
148
|
+
- [xctest](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#xcodebuild): Use the built in testing in combination with `xcodebuild`
|
147
149
|
- [xctool](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#xctool): Run tests of your app
|
148
150
|
- [Testmunk](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#testmunk): Run integration tests on real devices
|
149
151
|
- [gcovr](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#gcovr): Generate summarized code coverage reports
|
@@ -152,6 +154,7 @@ When one command fails, the execution will be aborted.
|
|
152
154
|
- [cert](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#cert): Automatically create and maintain iOS code signing certificates
|
153
155
|
- [sigh](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#sigh): Create and maintain your provisioning profiles
|
154
156
|
- [resign](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#resign): Re-Sign an existing ipa file
|
157
|
+
- [register_devices](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#register_devices): Register iOS device identifiers
|
155
158
|
|
156
159
|
### Building
|
157
160
|
- [ipa](https://github.com/KrauseFx/fastlane/blob/master/Actions.md#ipa): Build your app for further use of the [uploading](#uploading) section
|
data/lib/assets/AppfileTemplate
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
app_identifier "[[APP_IDENTIFIER]]" # The bundle identifier of your app
|
2
2
|
apple_id "[[APPLE_ID]]" # Your Apple email address
|
3
3
|
|
4
|
-
# You can uncomment the lines below and add your own
|
4
|
+
# You can uncomment any of the lines below and add your own
|
5
5
|
# team selection in case you're in multiple teams
|
6
6
|
# team_name "Felix Krause"
|
7
7
|
# team_id "Q2CBPJ58CA"
|
data/lib/assets/FastfileTemplate
CHANGED
@@ -5,9 +5,9 @@
|
|
5
5
|
|
6
6
|
# All lines starting with a # are ignored when running `fastlane`
|
7
7
|
|
8
|
-
# This is the minimum version number required.
|
8
|
+
# This is the minimum version number required.
|
9
9
|
# Update this, if you use features of a newer version
|
10
|
-
fastlane_version "[[FASTLANE_VERSION]]"
|
10
|
+
fastlane_version "[[FASTLANE_VERSION]]"
|
11
11
|
|
12
12
|
before_all do
|
13
13
|
# ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."
|
@@ -59,4 +59,4 @@ end
|
|
59
59
|
|
60
60
|
error do |lane, exception|
|
61
61
|
# Something bad happened
|
62
|
-
end
|
62
|
+
end
|
@@ -20,7 +20,7 @@ module Fastlane
|
|
20
20
|
is_beta_ipa: beta,
|
21
21
|
skip_deploy: skip_deploy)
|
22
22
|
|
23
|
-
Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] = ENV['DELIVER_IPA_PATH'] # deliver will store it in the environment
|
23
|
+
Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] = File.expand_path(ENV['DELIVER_IPA_PATH']) # deliver will store it in the environment
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
module SharedValues
|
4
|
+
VERSION_NUMBER = :VERSION_NUMBER
|
5
|
+
end
|
6
|
+
|
7
|
+
class IncrementVersionNumberAction
|
8
|
+
require 'shellwords'
|
9
|
+
|
10
|
+
def self.run(params)
|
11
|
+
# More information about how to set up your project and how it works:
|
12
|
+
# https://developer.apple.com/library/ios/qa/qa1827/_index.html
|
13
|
+
|
14
|
+
begin
|
15
|
+
first_param = (params.first rescue nil)
|
16
|
+
folder = '.' #Current folder is the default folder
|
17
|
+
|
18
|
+
case first_param
|
19
|
+
when NilClass
|
20
|
+
release_task = 'patch' #Patch is the default action
|
21
|
+
when String
|
22
|
+
release_task = first_param
|
23
|
+
when Hash
|
24
|
+
release_task = first_param[:release_task] ? first_param[:release_task] : "patch"
|
25
|
+
folder = first_param[:xcodeproj] ? File.join('.', first_param[:xcodeproj], '..') : '.'
|
26
|
+
end
|
27
|
+
|
28
|
+
# Verify integrity
|
29
|
+
case release_task
|
30
|
+
when /\d.\d.\d/
|
31
|
+
specific_version_number = release_task
|
32
|
+
release_task = 'specific_version'
|
33
|
+
when "patch"
|
34
|
+
release_task = 'patch'
|
35
|
+
when "minor"
|
36
|
+
release_task = 'minor'
|
37
|
+
when "major"
|
38
|
+
release_task = "major"
|
39
|
+
else
|
40
|
+
raise 'Invalid parameter #{release_task}'
|
41
|
+
end
|
42
|
+
|
43
|
+
command_prefix = [
|
44
|
+
'cd',
|
45
|
+
File.expand_path(folder).shellescape,
|
46
|
+
'&&'
|
47
|
+
].join(' ')
|
48
|
+
|
49
|
+
if Helper.test?
|
50
|
+
version_array = [1,0,0]
|
51
|
+
else
|
52
|
+
current_version= `#{command_prefix} agvtool what-marketing-version -terse1`.split("\n").last
|
53
|
+
raise 'Your current version does not respect the format A.B.C' unless current_version.match(/\d.\d.\d/)
|
54
|
+
#Check if CFBundleShortVersionString is the same for each occurrence
|
55
|
+
allBundles = `#{command_prefix} agvtool what-marketing-version -terse`.split("\n")
|
56
|
+
allBundles.each do |bundle|
|
57
|
+
raise 'Ensure all you CFBundleShortVersionString are equals in your project ' unless bundle.end_with? "=#{current_version}"
|
58
|
+
end
|
59
|
+
version_array = current_version.split(".").map(&:to_i)
|
60
|
+
end
|
61
|
+
|
62
|
+
case release_task
|
63
|
+
when "patch"
|
64
|
+
version_array[2] = version_array[2]+1
|
65
|
+
next_version_number = version_array.join(".")
|
66
|
+
when "minor"
|
67
|
+
version_array[1] = version_array[1]+1
|
68
|
+
version_array[2] = version_array[2]=0
|
69
|
+
next_version_number = version_array.join(".")
|
70
|
+
when "major"
|
71
|
+
version_array[0] = version_array[0]+1
|
72
|
+
version_array[1] = version_array[1]=0
|
73
|
+
version_array[1] = version_array[2]=0
|
74
|
+
next_version_number = version_array.join(".")
|
75
|
+
when "specific_version"
|
76
|
+
next_version_number = specific_version_number
|
77
|
+
end
|
78
|
+
|
79
|
+
command = [
|
80
|
+
command_prefix,
|
81
|
+
"agvtool new-marketing-version #{next_version_number}"
|
82
|
+
].join(' ')
|
83
|
+
|
84
|
+
if Helper.test?
|
85
|
+
Actions.lane_context[SharedValues::VERSION_NUMBER] = command
|
86
|
+
else
|
87
|
+
Actions.sh command
|
88
|
+
Actions.lane_context[SharedValues::VERSION_NUMBER] = next_version_number
|
89
|
+
end
|
90
|
+
|
91
|
+
rescue => ex
|
92
|
+
Helper.log.error 'Make sure to to follow the steps to setup your Xcode project: https://developer.apple.com/library/ios/qa/qa1827/_index.html'.yellow
|
93
|
+
raise ex
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
data/lib/fastlane/actions/ipa.rb
CHANGED
@@ -7,8 +7,8 @@ module Fastlane
|
|
7
7
|
|
8
8
|
remote = (options && options[:remote]) || 'origin'
|
9
9
|
force = (options && options[:force]) || false
|
10
|
-
local_branch = (options && options[:branch]) || 'master'
|
11
|
-
remote_branch = (options && options[:
|
10
|
+
local_branch = (options && (options[:local_branch] || options[:branch])) || 'master'
|
11
|
+
remote_branch = (options && options[:remote_branch]) || local_branch
|
12
12
|
|
13
13
|
# construct our command as an array of components
|
14
14
|
command = [
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class RegisterDevicesAction
|
4
|
+
UDID_REGEXP = /^\h{40}$/
|
5
|
+
|
6
|
+
def self.run(params)
|
7
|
+
require 'cupertino/provisioning_portal'
|
8
|
+
require 'credentials_manager'
|
9
|
+
require 'csv'
|
10
|
+
|
11
|
+
params = params.first
|
12
|
+
|
13
|
+
raise 'You must pass valid params to the register_devices action. Please check the readme.'.red if (params.nil? || params.empty?)
|
14
|
+
|
15
|
+
devices = params[:devices]
|
16
|
+
devices_file = params[:devices_file]
|
17
|
+
team_id = params[:team_id] || ENV['CUPERTINO_TEAM_ID'] || ENV['FASTLANE_TEAM_ID']
|
18
|
+
username = params[:username] || ENV['CUPERTINO_USERNAME']
|
19
|
+
|
20
|
+
if devices
|
21
|
+
device_objs = devices.map do |k, v|
|
22
|
+
raise "Passed invalid UDID: #{v} for device: #{k}".red unless UDID_REGEXP =~ v
|
23
|
+
|
24
|
+
Cupertino::ProvisioningPortal::Device.new(k, v)
|
25
|
+
end
|
26
|
+
elsif devices_file
|
27
|
+
devices_file = CSV.read(File.expand_path(File.join(devices_file)), col_sep: "\t")
|
28
|
+
|
29
|
+
raise 'Please provide a file according to the Apple Sample UDID file (https://devimages.apple.com.edgekey.net/downloads/devices/Multiple-Upload-Samples.zip)'.red unless devices_file.first == ['Device ID', 'Device Name']
|
30
|
+
|
31
|
+
device_objs = devices_file.drop(1).map do |device|
|
32
|
+
raise 'Invalid device line, please provide a file according to the Apple Sample UDID file (https://devimages.apple.com.edgekey.net/downloads/devices/Multiple-Upload-Samples.zip)'.red unless device.count == 2
|
33
|
+
raise "Passed invalid UDID: #{device[0]} for device: #{device[1]}".red unless UDID_REGEXP =~ device[0]
|
34
|
+
|
35
|
+
Cupertino::ProvisioningPortal::Device.new(device[1], device[0])
|
36
|
+
end
|
37
|
+
else
|
38
|
+
raise 'You must pass either a valid `devices` or `devices_file`. Please check the readme.'.red
|
39
|
+
end
|
40
|
+
|
41
|
+
credentials = CredentialsManager::PasswordManager.shared_manager(username)
|
42
|
+
|
43
|
+
agent = Cupertino::ProvisioningPortal::Agent.new
|
44
|
+
agent.username = credentials.username
|
45
|
+
agent.password = credentials.password
|
46
|
+
agent.team_id = team_id if team_id
|
47
|
+
|
48
|
+
Helper.log.info "Fetching list of currently registered devices..."
|
49
|
+
existing_devices = agent.list_devices
|
50
|
+
new_devices = device_objs.select{ |device| !existing_devices.map(&:udid).include?(device.udid) } # calculate the diff based on the UDID
|
51
|
+
|
52
|
+
if new_devices.count > 0
|
53
|
+
Helper.log.info "Adding new devices..."
|
54
|
+
agent.add_devices(*new_devices) rescue raise 'Could not add devices. Please ensure you have passed the correct username/password combination, as well as a valid team_id if a member of multiple teams.'.red
|
55
|
+
|
56
|
+
Helper.log.info "Successfully registered #{new_devices.count} new devices. Total devices now registered: #{existing_devices.count + new_devices.count}!".green
|
57
|
+
else
|
58
|
+
Helper.log.info "Device list up to date, all #{device_objs.count} devices are already registered. Total devices registed: #{existing_devices.count}.".green
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -10,7 +10,7 @@ module Fastlane
|
|
10
10
|
|
11
11
|
Helper.log.info "Setting Team ID to '#{team}' for all build steps"
|
12
12
|
|
13
|
-
[:CERT_TEAM_ID, :SIGH_TEAM_ID, :PEM_TEAM_ID, :PRODUCE_TEAM_ID, :SIGH_TEAM_ID, :FASTLANE_TEAM_ID].each do |current|
|
13
|
+
[:CERT_TEAM_ID, :SIGH_TEAM_ID, :PEM_TEAM_ID, :PRODUCE_TEAM_ID, :SIGH_TEAM_ID, :CUPERTINO_TEAM_ID, :FASTLANE_TEAM_ID].each do |current|
|
14
14
|
ENV[current.to_s] = team
|
15
15
|
end
|
16
16
|
end
|
data/lib/fastlane/runner.rb
CHANGED
data/lib/fastlane/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -94,20 +94,40 @@ dependencies:
|
|
94
94
|
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: cupertino
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.3'
|
104
|
+
- - '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 1.3.1
|
107
|
+
type: :runtime
|
108
|
+
prerelease: false
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ~>
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '1.3'
|
114
|
+
- - '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 1.3.1
|
97
117
|
- !ruby/object:Gem::Dependency
|
98
118
|
name: fastlane_core
|
99
119
|
requirement: !ruby/object:Gem::Requirement
|
100
120
|
requirements:
|
101
121
|
- - '>='
|
102
122
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
123
|
+
version: 0.4.0
|
104
124
|
type: :runtime
|
105
125
|
prerelease: false
|
106
126
|
version_requirements: !ruby/object:Gem::Requirement
|
107
127
|
requirements:
|
108
128
|
- - '>='
|
109
129
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
130
|
+
version: 0.4.0
|
111
131
|
- !ruby/object:Gem::Dependency
|
112
132
|
name: deliver
|
113
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -365,12 +385,14 @@ files:
|
|
365
385
|
- lib/fastlane/actions/hipchat.rb
|
366
386
|
- lib/fastlane/actions/hockey.rb
|
367
387
|
- lib/fastlane/actions/increment_build_number.rb
|
388
|
+
- lib/fastlane/actions/increment_version_number.rb
|
368
389
|
- lib/fastlane/actions/install_carthage.rb
|
369
390
|
- lib/fastlane/actions/install_cocapods.rb
|
370
391
|
- lib/fastlane/actions/ipa.rb
|
371
392
|
- lib/fastlane/actions/notify.rb
|
372
393
|
- lib/fastlane/actions/produce.rb
|
373
394
|
- lib/fastlane/actions/push_to_git_remote.rb
|
395
|
+
- lib/fastlane/actions/register_devices.rb
|
374
396
|
- lib/fastlane/actions/reset_git_repo.rb
|
375
397
|
- lib/fastlane/actions/resign.rb
|
376
398
|
- lib/fastlane/actions/s3.rb
|