fastlane 2.138.0 → 2.139.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +66 -66
  3. data/deliver/lib/deliver/submit_for_review.rb +7 -1
  4. data/fastlane/lib/fastlane/action.rb +1 -1
  5. data/fastlane/lib/fastlane/actions/create_pull_request.rb +42 -2
  6. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +10 -0
  7. data/fastlane/lib/fastlane/actions/last_git_tag.rb +14 -5
  8. data/fastlane/lib/fastlane/actions/setup_ci.rb +14 -8
  9. data/fastlane/lib/fastlane/actions/upload_to_play_store_internal_app_sharing.rb +78 -0
  10. data/fastlane/lib/fastlane/version.rb +1 -1
  11. data/fastlane/swift/Deliverfile.swift +1 -1
  12. data/fastlane/swift/Fastlane.swift +64 -10
  13. data/fastlane/swift/Gymfile.swift +1 -1
  14. data/fastlane/swift/Matchfile.swift +1 -1
  15. data/fastlane/swift/Precheckfile.swift +1 -1
  16. data/fastlane/swift/Scanfile.swift +1 -1
  17. data/fastlane/swift/ScanfileProtocol.swift +5 -1
  18. data/fastlane/swift/Screengrabfile.swift +1 -1
  19. data/fastlane/swift/Snapshotfile.swift +1 -1
  20. data/fastlane_core/lib/fastlane_core/build_watcher.rb +6 -2
  21. data/fastlane_core/lib/fastlane_core/device_manager.rb +20 -0
  22. data/fastlane_core/lib/fastlane_core/helper.rb +7 -1
  23. data/frameit/lib/frameit/editor.rb +3 -0
  24. data/gym/lib/gym/.runner.rb.swp +0 -0
  25. data/gym/lib/gym/generators/build_command_generator.rb +1 -0
  26. data/gym/lib/gym/runner.rb +8 -3
  27. data/pilot/lib/pilot/build_manager.rb +31 -6
  28. data/pilot/lib/pilot/options.rb +3 -1
  29. data/scan/lib/scan/options.rb +5 -0
  30. data/scan/lib/scan/runner.rb +6 -0
  31. data/spaceship/lib/spaceship/connect_api/models/build.rb +5 -0
  32. data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +5 -0
  33. data/supply/lib/supply/client.rb +26 -0
  34. data/supply/lib/supply/uploader.rb +28 -0
  35. metadata +22 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe11c3d8b7afcbbe9c3bc070c3455d220e64200ab52ce4f1322deac1026c1581
4
- data.tar.gz: c9e3ddf13fa0cdd2e648151851986a404d3075e89bc1a7492cb7027fc68a1814
3
+ metadata.gz: 6343d2b679ea90f71fecb7ec7370099d26928e9faad24ada6f90e26981355917
4
+ data.tar.gz: 5b639baeaefd235be5b426d846686d75642a2976d06b82079b430c6e797f6d09
5
5
  SHA512:
6
- metadata.gz: c0b6291a3720ff53673da4c7c9091e2cd4688dbc4322ba48892abae02e3db40c6f6a1b19dd66cb927cd8d8fdffb750a4a196c6a813bb133beefdca97316433ee
7
- data.tar.gz: 41bb5e5b8faa0bbf5f9126b7a8cd73a74309cc1fd68affaedda41b12d87e5994de45e90206c30a7047d20c05d3165490c9e9f9faeab9f94736ad4428084cf50f
6
+ metadata.gz: 3eb845566c5e3be2587016bf243de91fd0df7b6dca844146c75b593b4cfec3d15dd852c5308ace7077d27cb43319e5392f9341b6fc8f76d008954b3f74dcc04c
7
+ data.tar.gz: 7d90e46a1c4b96851c53a496e1aeabf08235d24b031d8bc9d7cb14c187680e088a1bd93f6b096025123797ca3843b02a55f56ae560d5f17ce460fb3b8ad588f3
data/README.md CHANGED
@@ -34,49 +34,43 @@ 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='jérôme-lacoste'>
38
- <a href='https://github.com/lacostej'>
39
- <img src='https://github.com/lacostej.png?size=140'>
40
- </a>
41
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
42
- </td>
43
37
  <td id='olivier-halligon'>
44
38
  <a href='https://github.com/AliSoftware'>
45
39
  <img src='https://github.com/AliSoftware.png?size=140'>
46
40
  </a>
47
41
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
48
42
  </td>
49
- <td id='andrew-mcburney'>
50
- <a href='https://github.com/armcburney'>
51
- <img src='https://github.com/armcburney.png?size=140'>
43
+ <td id='manu-wallner'>
44
+ <a href='https://github.com/milch'>
45
+ <img src='https://github.com/milch.png?size=140'>
52
46
  </a>
53
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
47
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
54
48
  </td>
55
- <td id='fumiya-nakamura'>
56
- <a href='https://github.com/nafu'>
57
- <img src='https://github.com/nafu.png?size=140'>
49
+ <td id='josh-holtz'>
50
+ <a href='https://github.com/joshdholtz'>
51
+ <img src='https://github.com/joshdholtz.png?size=140'>
58
52
  </a>
59
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
60
54
  </td>
61
- <td id='stefan-natchev'>
62
- <a href='https://github.com/snatchev'>
63
- <img src='https://github.com/snatchev.png?size=140'>
55
+ <td id='helmut-januschka'>
56
+ <a href='https://github.com/hjanuschka'>
57
+ <img src='https://github.com/hjanuschka.png?size=140'>
64
58
  </a>
65
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
66
60
  </td>
67
- </tr>
68
- <tr>
69
61
  <td id='jorge-revuelta-h'>
70
62
  <a href='https://github.com/minuscorp'>
71
63
  <img src='https://github.com/minuscorp.png?size=140'>
72
64
  </a>
73
65
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
74
66
  </td>
75
- <td id='jan-piotrowski'>
76
- <a href='https://github.com/janpio'>
77
- <img src='https://github.com/janpio.png?size=140'>
67
+ </tr>
68
+ <tr>
69
+ <td id='iulian-onofrei'>
70
+ <a href='https://github.com/revolter'>
71
+ <img src='https://github.com/revolter.png?size=140'>
78
72
  </a>
79
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
73
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
80
74
  </td>
81
75
  <td id='jimmy-dee'>
82
76
  <a href='https://github.com/jdee'>
@@ -84,31 +78,63 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
84
78
  </a>
85
79
  <h4 align='center'>Jimmy Dee</h4>
86
80
  </td>
81
+ <td id='jérôme-lacoste'>
82
+ <a href='https://github.com/lacostej'>
83
+ <img src='https://github.com/lacostej.png?size=140'>
84
+ </a>
85
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
86
+ </td>
87
87
  <td id='matthew-ellis'>
88
88
  <a href='https://github.com/matthewellis'>
89
89
  <img src='https://github.com/matthewellis.png?size=140'>
90
90
  </a>
91
91
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
92
92
  </td>
93
- <td id='josh-holtz'>
94
- <a href='https://github.com/joshdholtz'>
95
- <img src='https://github.com/joshdholtz.png?size=140'>
96
- </a>
97
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
98
- </td>
99
- </tr>
100
- <tr>
101
93
  <td id='joshua-liebowitz'>
102
94
  <a href='https://github.com/taquitos'>
103
95
  <img src='https://github.com/taquitos.png?size=140'>
104
96
  </a>
105
97
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
106
98
  </td>
107
- <td id='helmut-januschka'>
108
- <a href='https://github.com/hjanuschka'>
109
- <img src='https://github.com/hjanuschka.png?size=140'>
99
+ </tr>
100
+ <tr>
101
+ <td id='maksym-grebenets'>
102
+ <a href='https://github.com/mgrebenets'>
103
+ <img src='https://github.com/mgrebenets.png?size=140'>
110
104
  </a>
111
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
105
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
106
+ </td>
107
+ <td id='felix-krause'>
108
+ <a href='https://github.com/KrauseFx'>
109
+ <img src='https://github.com/KrauseFx.png?size=140'>
110
+ </a>
111
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
112
+ </td>
113
+ <td id='jan-piotrowski'>
114
+ <a href='https://github.com/janpio'>
115
+ <img src='https://github.com/janpio.png?size=140'>
116
+ </a>
117
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
118
+ </td>
119
+ <td id='kohki-miki'>
120
+ <a href='https://github.com/giginet'>
121
+ <img src='https://github.com/giginet.png?size=140'>
122
+ </a>
123
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
124
+ </td>
125
+ <td id='stefan-natchev'>
126
+ <a href='https://github.com/snatchev'>
127
+ <img src='https://github.com/snatchev.png?size=140'>
128
+ </a>
129
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
130
+ </td>
131
+ </tr>
132
+ <tr>
133
+ <td id='fumiya-nakamura'>
134
+ <a href='https://github.com/nafu'>
135
+ <img src='https://github.com/nafu.png?size=140'>
136
+ </a>
137
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
112
138
  </td>
113
139
  <td id='danielle-tomlinson'>
114
140
  <a href='https://github.com/endocrimes'>
@@ -116,49 +142,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
116
142
  </a>
117
143
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
118
144
  </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
145
  <td id='aaron-brager'>
126
146
  <a href='https://github.com/getaaron'>
127
147
  <img src='https://github.com/getaaron.png?size=140'>
128
148
  </a>
129
149
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
130
150
  </td>
131
- </tr>
132
- <tr>
133
- <td id='maksym-grebenets'>
134
- <a href='https://github.com/mgrebenets'>
135
- <img src='https://github.com/mgrebenets.png?size=140'>
136
- </a>
137
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
138
- </td>
139
151
  <td id='luka-mirosevic'>
140
152
  <a href='https://github.com/lmirosevic'>
141
153
  <img src='https://github.com/lmirosevic.png?size=140'>
142
154
  </a>
143
155
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
144
156
  </td>
145
- <td id='iulian-onofrei'>
146
- <a href='https://github.com/revolter'>
147
- <img src='https://github.com/revolter.png?size=140'>
148
- </a>
149
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
150
- </td>
151
- <td id='kohki-miki'>
152
- <a href='https://github.com/giginet'>
153
- <img src='https://github.com/giginet.png?size=140'>
154
- </a>
155
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
156
- </td>
157
- <td id='felix-krause'>
158
- <a href='https://github.com/KrauseFx'>
159
- <img src='https://github.com/KrauseFx.png?size=140'>
157
+ <td id='andrew-mcburney'>
158
+ <a href='https://github.com/armcburney'>
159
+ <img src='https://github.com/armcburney.png?size=140'>
160
160
  </a>
161
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
161
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  </table>
@@ -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
- candidate_builds = app.latest_version.candidate_builds
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)
@@ -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('Action', '').fastlane_underscore
124
+ self.name.split('::').last.gsub(/Action$/, '').fastlane_underscore
125
125
  end
126
126
 
127
127
  def self.lane_context
@@ -2,6 +2,7 @@ module Fastlane
2
2
  module Actions
3
3
  module SharedValues
4
4
  CREATE_PULL_REQUEST_HTML_URL = :CREATE_PULL_REQUEST_HTML_URL
5
+ CREATE_PULL_REQUEST_NUMBER = :CREATE_PULL_REQUEST_NUMBER
5
6
  end
6
7
 
7
8
  class CreatePullRequestAction < Action
@@ -39,7 +40,11 @@ module Fastlane
39
40
  # Add assignees to pull request
40
41
  add_assignees(params, number) if params[:assignees]
41
42
 
43
+ # Add reviewers to pull request
44
+ add_reviewers(params, number) if params[:reviewers] || params[:team_reviewers]
45
+
42
46
  Actions.lane_context[SharedValues::CREATE_PULL_REQUEST_HTML_URL] = html_url
47
+ Actions.lane_context[SharedValues::CREATE_PULL_REQUEST_NUMBER] = number
43
48
  return html_url
44
49
  end
45
50
  end
@@ -82,6 +87,30 @@ module Fastlane
82
87
  )
83
88
  end
84
89
 
90
+ def self.add_reviewers(params, number)
91
+ payload = {}
92
+ if params[:reviewers]
93
+ payload["reviewers"] = params[:reviewers]
94
+ end
95
+
96
+ if params[:team_reviewers]
97
+ payload["team_reviewers"] = params[:team_reviewers]
98
+ end
99
+ GithubApiAction.run(
100
+ server_url: params[:api_url],
101
+ api_token: params[:api_token],
102
+ http_method: 'POST',
103
+ path: "repos/#{params[:repo]}/pulls/#{number}/requested_reviewers",
104
+ body: payload,
105
+ error_handlers: {
106
+ '*' => proc do |result|
107
+ UI.error("GitHub responded with #{result[:status]}: #{result[:body]}")
108
+ return nil
109
+ end
110
+ }
111
+ )
112
+ end
113
+
85
114
  #####################################################
86
115
  # @!group Documentation
87
116
  #####################################################
@@ -92,7 +121,8 @@ module Fastlane
92
121
 
93
122
  def self.output
94
123
  [
95
- ['CREATE_PULL_REQUEST_HTML_URL', 'The HTML URL to the created pull request']
124
+ ['CREATE_PULL_REQUEST_HTML_URL', 'The HTML URL to the created pull request'],
125
+ ['CREATE_PULL_REQUEST_NUMBER', 'The identifier number of the created pull request']
96
126
  ]
97
127
  end
98
128
 
@@ -152,12 +182,22 @@ module Fastlane
152
182
  env_name: "GITHUB_PULL_REQUEST_ASSIGNEES",
153
183
  description: "The assignees for the pull request",
154
184
  type: Array,
185
+ optional: true),
186
+ FastlaneCore::ConfigItem.new(key: :reviewers,
187
+ env_name: "GITHUB_PULL_REQUEST_REVIEWERS",
188
+ description: "The reviewers (slug) for the pull request",
189
+ type: Array,
190
+ optional: true),
191
+ FastlaneCore::ConfigItem.new(key: :team_reviewers,
192
+ env_name: "GITHUB_PULL_REQUEST_TEAM_REVIEWERS",
193
+ description: "The team reviewers (slug) for the pull request",
194
+ type: Array,
155
195
  optional: true)
156
196
  ]
157
197
  end
158
198
 
159
199
  def self.author
160
- ["seei", "tommeier", "marumemomo"]
200
+ ["seei", "tommeier", "marumemomo", "elneruda"]
161
201
  end
162
202
 
163
203
  def self.is_supported?(platform)
@@ -706,6 +706,16 @@ DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t DAV" fastlane deliver
706
706
  ## HTTP Proxy
707
707
  iTunes Transporter is a Java application bundled with Xcode. In addition to utilizing the `DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t DAV"`, you need to configure the transporter application to use the proxy independently from the system proxy or any environment proxy settings. You can find the configuration file within Xcode:
708
708
 
709
+ **for Xcode11 and later**
710
+
711
+ ```no-highlight
712
+ TOOLS_PATH=$( xcode-select -p )
713
+ REL_PATH='../SharedFrameworks/ContentDeliveryServices.framework/Versions/A/itms/java/lib/net.properties'
714
+ echo "$TOOLS_PATH/$REL_PATH"
715
+ ```
716
+
717
+ **for Xcode10 or earlier**
718
+
709
719
  ```no-highlight
710
720
  TOOLS_PATH=$( xcode-select -p )
711
721
  REL_PATH='../Applications/Application Loader.app/Contents/itms/java/lib/net.properties'
@@ -2,7 +2,7 @@ module Fastlane
2
2
  module Actions
3
3
  class LastGitTagAction < Action
4
4
  def self.run(params)
5
- Actions.last_git_tag_name
5
+ Actions.last_git_tag_name(true, params[:pattern])
6
6
  end
7
7
 
8
8
  #####################################################
@@ -14,7 +14,12 @@ module Fastlane
14
14
  end
15
15
 
16
16
  def self.available_options
17
- []
17
+ [
18
+ FastlaneCore::ConfigItem.new(key: :pattern,
19
+ description: "Pattern to filter tags when looking for last one. Limit tags to ones matching given shell glob. If pattern lacks ?, *, or [, * at the end is implied",
20
+ default_value: nil,
21
+ optional: true)
22
+ ]
18
23
  end
19
24
 
20
25
  def self.output
@@ -26,7 +31,7 @@ module Fastlane
26
31
  end
27
32
 
28
33
  def self.authors
29
- ["KrauseFx"]
34
+ ["KrauseFx", "wedkarz"]
30
35
  end
31
36
 
32
37
  def self.is_supported?(platform)
@@ -34,12 +39,16 @@ module Fastlane
34
39
  end
35
40
 
36
41
  def self.details
37
- "If you are using this action on a **shallow clone**, *the default with some CI systems like Bamboo*, you need to ensure that you have also pulled all the git tags appropriately. Assuming your git repo has the correct remote set you can issue `sh('git fetch --tags')`."
42
+ [
43
+ "If you are using this action on a **shallow clone**, *the default with some CI systems like Bamboo*, you need to ensure that you have also pulled all the git tags appropriately. Assuming your git repo has the correct remote set you can issue `sh('git fetch --tags')`.",
44
+ "Pattern parameter allows you to filter to a subset of tags."
45
+ ].join("\n")
38
46
  end
39
47
 
40
48
  def self.example_code
41
49
  [
42
- 'last_git_tag'
50
+ 'last_git_tag',
51
+ 'last_git_tag(pattern: "release/v1.0/")'
43
52
  ]
44
53
  end
45
54
 
@@ -7,19 +7,22 @@ module Fastlane
7
7
  return
8
8
  end
9
9
 
10
- case params[:provider]
11
- when 'travis'
12
- setup_keychain
10
+ case detect_provider(params)
13
11
  when 'circleci'
14
- setup_keychain
15
12
  setup_output_paths
16
13
  end
14
+
15
+ setup_keychain
17
16
  end
18
17
 
19
18
  def self.should_run?(params)
20
19
  Helper.ci? || params[:force]
21
20
  end
22
21
 
22
+ def self.detect_provider(params)
23
+ params[:provider] || (Helper.is_circle_ci? ? 'circleci' : nil)
24
+ end
25
+
23
26
  def self.setup_keychain
24
27
  unless ENV["MATCH_KEYCHAIN_NAME"].nil?
25
28
  UI.message("Skipping Keychain setup as a keychain was already specified")
@@ -37,7 +40,8 @@ module Fastlane
37
40
  unlock: true,
38
41
  timeout: 3600,
39
42
  lock_when_sleeps: true,
40
- password: ""
43
+ password: "",
44
+ add_to_search_list: true
41
45
  )
42
46
 
43
47
  UI.message("Enabling match readonly mode.")
@@ -87,18 +91,20 @@ module Fastlane
87
91
  default_value: false),
88
92
  FastlaneCore::ConfigItem.new(key: :provider,
89
93
  env_name: "FL_SETUP_CI_PROVIDER",
90
- description: "CI provider",
94
+ description: "CI provider. If none is set, the provider is detected automatically",
91
95
  is_string: true,
92
96
  default_value: false,
93
97
  verify_block: proc do |value|
94
98
  value = value.to_s
99
+ # Validate both 'travis' and 'circleci' for backwards compatibility, even
100
+ # though only the latter receives special treatment by this action
95
101
  UI.user_error!("A given CI provider '#{value}' is not supported. Available CI providers: 'travis', 'circleci'") unless ["travis", "circleci"].include?(value)
96
102
  end)
97
103
  ]
98
104
  end
99
105
 
100
106
  def self.authors
101
- ["mollyIV"]
107
+ ["mollyIV", "svenmuennich"]
102
108
  end
103
109
 
104
110
  def self.is_supported?(platform)
@@ -108,7 +114,7 @@ module Fastlane
108
114
  def self.example_code
109
115
  [
110
116
  'setup_ci(
111
- provider: "travis"
117
+ provider: "circleci"
112
118
  )'
113
119
  ]
114
120
  end