dpl 2.0.0.beta.3 → 2.0.2.beta.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a1f01c5ac0b8b54c0193bcbcd82563e6e721fcba
4
- data.tar.gz: d6c14a5f04ad1992314280aa0bcee24d5d11e3c8
2
+ SHA256:
3
+ metadata.gz: 127fc473613182a3add84607059a5777f8633d040caec51221a7254b54929f5f
4
+ data.tar.gz: 7e2c0c5289b78f4512f38a96faf80f10a0b202b5a61f9baa5b4e344f9548bf0b
5
5
  SHA512:
6
- metadata.gz: d6abcb163c1b0126c90f8687c7f3f3e804f447c89ef5b6789931726f3b9383450a121f522e13521603907506d9424b73baa35b246c018ab465c4f2a83ea47b19
7
- data.tar.gz: ad90bc374e92a96db13243806da650a39ca633a4bd7571fad63e7da328cd9ce1c90924f40076dfbc2270ce7250e1ed9bf790f6a178369f3a99016d76dd1bc49a
6
+ metadata.gz: 3a5c62bc3fc3e01a49b8181970d9b6e587ac596ec88e7d5f228f86578979be5cb6377261d1e323ed1b029744cc2ab805847ddf8a899a625ddd849d1678e4ea47
7
+ data.tar.gz: 10d95dd4a423d3ad94006f0e233cc37dcbff15ca2d27f9827f5c52223e9cdfb4b008f5672dbfa755b047fcdad40bd6d3133ff483536e518c642ac5a4c66c8a66
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## dpl v2.0.2-beta.1 (2020-09-15)
4
+
5
+ * Add AWS ECR support
6
+
3
7
  ## dpl v2.0.1-beta.3 (unreleased)
4
8
 
5
9
  * Change git_push to use the GitHub token's user name and email as the
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dpl (2.0.0.beta.2)
4
+ dpl (2.0.0.beta.3)
5
5
  cl (~> 1.0)
6
6
 
7
7
  GEM
@@ -10,37 +10,40 @@ GEM
10
10
  addressable (2.7.0)
11
11
  public_suffix (>= 2.0.2, < 5.0)
12
12
  awesome_print (1.8.0)
13
- aws-eventstream (1.0.3)
14
- aws-partitions (1.273.0)
15
- aws-sdk-cloudformation (1.30.0)
16
- aws-sdk-core (~> 3, >= 3.71.0)
13
+ aws-eventstream (1.1.0)
14
+ aws-partitions (1.365.0)
15
+ aws-sdk-cloudformation (1.42.0)
16
+ aws-sdk-core (~> 3, >= 3.99.0)
17
17
  aws-sigv4 (~> 1.1)
18
- aws-sdk-codedeploy (1.27.0)
19
- aws-sdk-core (~> 3, >= 3.71.0)
18
+ aws-sdk-codedeploy (1.35.0)
19
+ aws-sdk-core (~> 3, >= 3.99.0)
20
20
  aws-sigv4 (~> 1.1)
21
- aws-sdk-core (3.90.1)
22
- aws-eventstream (~> 1.0, >= 1.0.2)
21
+ aws-sdk-core (3.105.0)
22
+ aws-eventstream (~> 1, >= 1.0.2)
23
23
  aws-partitions (~> 1, >= 1.239.0)
24
24
  aws-sigv4 (~> 1.1)
25
25
  jmespath (~> 1.0)
26
- aws-sdk-elasticbeanstalk (1.26.0)
27
- aws-sdk-core (~> 3, >= 3.71.0)
26
+ aws-sdk-ecr (1.37.0)
27
+ aws-sdk-core (~> 3, >= 3.99.0)
28
28
  aws-sigv4 (~> 1.1)
29
- aws-sdk-kms (1.29.0)
30
- aws-sdk-core (~> 3, >= 3.71.0)
29
+ aws-sdk-elasticbeanstalk (1.36.0)
30
+ aws-sdk-core (~> 3, >= 3.99.0)
31
31
  aws-sigv4 (~> 1.1)
32
- aws-sdk-lambda (1.35.0)
33
- aws-sdk-core (~> 3, >= 3.71.0)
32
+ aws-sdk-kms (1.37.0)
33
+ aws-sdk-core (~> 3, >= 3.99.0)
34
34
  aws-sigv4 (~> 1.1)
35
- aws-sdk-opsworks (1.21.0)
36
- aws-sdk-core (~> 3, >= 3.71.0)
35
+ aws-sdk-lambda (1.49.0)
36
+ aws-sdk-core (~> 3, >= 3.99.0)
37
37
  aws-sigv4 (~> 1.1)
38
- aws-sdk-s3 (1.60.2)
39
- aws-sdk-core (~> 3, >= 3.83.0)
38
+ aws-sdk-opsworks (1.28.0)
39
+ aws-sdk-core (~> 3, >= 3.99.0)
40
+ aws-sigv4 (~> 1.1)
41
+ aws-sdk-s3 (1.79.1)
42
+ aws-sdk-core (~> 3, >= 3.104.3)
40
43
  aws-sdk-kms (~> 1)
41
44
  aws-sigv4 (~> 1.1)
42
- aws-sigv4 (1.1.0)
43
- aws-eventstream (~> 1.0, >= 1.0.2)
45
+ aws-sigv4 (1.2.2)
46
+ aws-eventstream (~> 1, >= 1.0.2)
44
47
  belafonte (0.5.0)
45
48
  optionally
46
49
  wrapomatic (~> 0.3)
@@ -88,7 +91,7 @@ GEM
88
91
  cistern (0.12.3)
89
92
  cl (1.2.4)
90
93
  regstry (~> 1.0.3)
91
- coderay (1.1.2)
94
+ coderay (1.1.3)
92
95
  colorize (0.8.1)
93
96
  cookiejar (0.3.3)
94
97
  coveralls (0.8.23)
@@ -99,11 +102,11 @@ GEM
99
102
  tins (~> 1.6)
100
103
  crack (0.4.3)
101
104
  safe_yaml (~> 1.0.0)
102
- diff-lcs (1.3)
105
+ diff-lcs (1.4.4)
103
106
  docile (1.3.2)
104
107
  domain_name (0.5.20190701)
105
108
  unf (>= 0.0.5, < 1.0.0)
106
- em-http-request (1.1.5)
109
+ em-http-request (1.1.7)
107
110
  addressable (>= 2.3.4)
108
111
  cookiejar (!= 0.3.1)
109
112
  em-socksify (>= 0.3)
@@ -114,7 +117,7 @@ GEM
114
117
  erubis (2.7.0)
115
118
  escape (0.0.4)
116
119
  eventmachine (1.2.7)
117
- excon (0.72.0)
120
+ excon (0.76.0)
118
121
  ey-core (3.5.0)
119
122
  addressable
120
123
  awesome_print
@@ -142,19 +145,19 @@ GEM
142
145
  faraday_middleware (0.14.0)
143
146
  faraday (>= 0.7.4, < 1.0)
144
147
  fast_gettext (1.1.2)
145
- faye (1.2.4)
148
+ faye (1.4.0)
146
149
  cookiejar (>= 0.3.0)
147
- em-http-request (>= 0.3.0)
150
+ em-http-request (>= 1.1.6)
148
151
  eventmachine (>= 0.12.0)
149
- faye-websocket (>= 0.9.1)
152
+ faye-websocket (>= 0.11.0)
150
153
  multi_json (>= 1.0.0)
151
154
  rack (>= 1.0.0)
152
155
  websocket-driver (>= 0.5.1)
153
- faye-websocket (0.10.9)
156
+ faye-websocket (0.11.0)
154
157
  eventmachine (>= 0.12.0)
155
158
  websocket-driver (>= 0.5.1)
156
- ffi (1.12.2)
157
- ffi-yajl (2.3.3)
159
+ ffi (1.13.1)
160
+ ffi-yajl (2.3.4)
158
161
  libyajl2 (~> 1.2)
159
162
  fog-core (2.1.0)
160
163
  builder
@@ -176,28 +179,29 @@ GEM
176
179
  fuzzyurl (0.9.0)
177
180
  gems (1.1.1)
178
181
  json
179
- gleis (0.6.2)
180
- rest-client (~> 2.0.0)
182
+ gleis (0.8.0)
183
+ rest-client (~> 2.1.0)
181
184
  thor (~> 0.20.0)
182
- hashdiff (1.0.0)
185
+ hashdiff (1.0.1)
183
186
  hashie (3.6.0)
184
187
  hiera (3.6.0)
185
188
  highline (1.7.10)
189
+ http-accept (1.7.0)
186
190
  http-cookie (1.0.3)
187
191
  domain_name (~> 0.5)
188
192
  http_parser.rb (0.6.0)
189
- iniparse (1.4.4)
193
+ iniparse (1.5.0)
190
194
  ipaddress (0.8.3)
191
195
  jmespath (1.4.0)
192
196
  json (1.8.6)
193
197
  json_pure (1.8.6)
194
198
  libyajl2 (1.2.0)
195
199
  locale (2.1.3)
196
- method_source (0.9.2)
200
+ method_source (1.0.0)
197
201
  mime (0.4.4)
198
202
  mime-types (3.2.2)
199
203
  mime-types-data (~> 3.2015)
200
- mime-types-data (3.2019.1009)
204
+ mime-types-data (3.2020.0512)
201
205
  mini_portile2 (2.4.0)
202
206
  mixlib-archive (0.4.20)
203
207
  mixlib-log
@@ -207,10 +211,10 @@ GEM
207
211
  tomlrb
208
212
  mixlib-log (1.7.1)
209
213
  mixlib-shellout (2.4.4)
210
- multi_json (1.14.1)
214
+ multi_json (1.15.0)
211
215
  multipart-post (2.0.0)
212
- net-scp (2.0.0)
213
- net-ssh (>= 2.6.5, < 6.0.0)
216
+ net-scp (3.0.0)
217
+ net-ssh (>= 2.6.5, < 7.0.0)
214
218
  net-sftp (2.1.2)
215
219
  net-ssh (>= 2.6.5)
216
220
  net-ssh (4.2.0)
@@ -238,7 +242,7 @@ GEM
238
242
  plist (~> 3.1)
239
243
  systemu (~> 2.6.4)
240
244
  wmi-lite (~> 1.0)
241
- oj (3.10.2)
245
+ oj (3.10.14)
242
246
  oj_mimic_json (1.0.1)
243
247
  optionally (0.0.3)
244
248
  packagecloud-ruby (1.0.8)
@@ -249,11 +253,11 @@ GEM
249
253
  pathspec (0.2.1)
250
254
  plist (3.5.0)
251
255
  proxifier (1.0.3)
252
- pry (0.12.2)
253
- coderay (~> 1.1.0)
254
- method_source (~> 0.9.0)
256
+ pry (0.13.1)
257
+ coderay (~> 1.1)
258
+ method_source (~> 1.0)
255
259
  public_suffix (3.0.3)
256
- puppet (5.5.18)
260
+ puppet (5.5.21)
257
261
  facter (> 2.0.1, < 4)
258
262
  fast_gettext (~> 1.1.2)
259
263
  hiera (>= 3.2.1, < 4)
@@ -262,30 +266,31 @@ GEM
262
266
  puppet-blacksmith (3.3.1)
263
267
  puppet (>= 2.7.16)
264
268
  rest-client
265
- rack (2.2.2)
269
+ rack (2.2.3)
266
270
  rake (12.3.3)
267
271
  regstry (1.0.15)
268
272
  rendezvous (0.1.3)
269
- rest-client (2.0.2)
273
+ rest-client (2.1.0)
274
+ http-accept (>= 1.7.0, < 2.0)
270
275
  http-cookie (>= 1.0.2, < 2.0)
271
276
  mime-types (>= 1.16, < 4.0)
272
277
  netrc (~> 0.8)
273
- rspec (3.8.0)
274
- rspec-core (~> 3.8.0)
275
- rspec-expectations (~> 3.8.0)
276
- rspec-mocks (~> 3.8.0)
277
- rspec-core (3.8.2)
278
- rspec-support (~> 3.8.0)
279
- rspec-expectations (3.8.4)
278
+ rspec (3.9.0)
279
+ rspec-core (~> 3.9.0)
280
+ rspec-expectations (~> 3.9.0)
281
+ rspec-mocks (~> 3.9.0)
282
+ rspec-core (3.9.2)
283
+ rspec-support (~> 3.9.3)
284
+ rspec-expectations (3.9.2)
280
285
  diff-lcs (>= 1.2.0, < 2.0)
281
- rspec-support (~> 3.8.0)
286
+ rspec-support (~> 3.9.0)
282
287
  rspec-its (1.3.0)
283
288
  rspec-core (>= 3.0.0)
284
289
  rspec-expectations (>= 3.0.0)
285
- rspec-mocks (3.8.1)
290
+ rspec-mocks (3.9.1)
286
291
  diff-lcs (>= 1.2.0, < 2.0)
287
- rspec-support (~> 3.8.0)
288
- rspec-support (3.8.2)
292
+ rspec-support (~> 3.9.0)
293
+ rspec-support (3.9.3)
289
294
  rspec_junit_formatter (0.2.3)
290
295
  builder (< 4)
291
296
  rspec-core (>= 2, < 4, != 2.12.0)
@@ -305,31 +310,33 @@ GEM
305
310
  json (>= 1.8, < 3)
306
311
  simplecov-html (~> 0.10.0)
307
312
  simplecov-html (0.10.2)
308
- specinfra (2.82.9)
313
+ specinfra (2.82.19)
309
314
  net-scp
310
315
  net-ssh (>= 2.7)
311
316
  net-telnet (= 0.1.1)
312
317
  sfl
313
318
  sshkey (1.9.0)
319
+ sync (0.5.0)
314
320
  syslog-logger (1.6.8)
315
321
  systemu (2.6.5)
316
- table_print (1.5.6)
322
+ table_print (1.5.7)
317
323
  term-ansicolor (1.7.1)
318
324
  tins (~> 1.0)
319
325
  thor (0.20.3)
320
- tins (1.21.1)
321
- tomlrb (1.2.9)
326
+ tins (1.25.0)
327
+ sync
328
+ tomlrb (1.3.0)
322
329
  unf (0.1.4)
323
330
  unf_ext
324
- unf_ext (0.0.7.6)
331
+ unf_ext (0.0.7.7)
325
332
  uuidtools (2.1.5)
326
- webmock (3.8.2)
333
+ webmock (3.8.3)
327
334
  addressable (>= 2.3.6)
328
335
  crack (>= 0.3.2)
329
336
  hashdiff (>= 0.4.0, < 2.0.0)
330
- websocket-driver (0.7.1)
337
+ websocket-driver (0.7.3)
331
338
  websocket-extensions (>= 0.1.0)
332
- websocket-extensions (0.1.4)
339
+ websocket-extensions (0.1.5)
333
340
  wmi-lite (1.0.5)
334
341
  wrapomatic (0.3.0)
335
342
 
@@ -339,6 +346,7 @@ PLATFORMS
339
346
  DEPENDENCIES
340
347
  aws-sdk-cloudformation (~> 1.0)
341
348
  aws-sdk-codedeploy (~> 1.0)
349
+ aws-sdk-ecr (~> 1.0)
342
350
  aws-sdk-elasticbeanstalk (~> 1.0)
343
351
  aws-sdk-lambda (~> 1.0)
344
352
  aws-sdk-opsworks (~> 1.0)
@@ -351,7 +359,7 @@ DEPENDENCIES
351
359
  fog-core (= 2.1.0)
352
360
  fog-rackspace (~> 0.1.6)
353
361
  gems (~> 1.1.1)
354
- gleis (~> 0.6.0)
362
+ gleis (~> 0.8.0)
355
363
  json
356
364
  mime-types (~> 3.2.2)
357
365
  multipart-post (~> 2.0.0)
@@ -371,7 +379,7 @@ DEPENDENCIES
371
379
  webmock
372
380
 
373
381
  RUBY VERSION
374
- ruby 2.4.1p111
382
+ ruby 2.4.9p362
375
383
 
376
384
  BUNDLED WITH
377
- 2.0.2
385
+ 2.1.4
data/README.md CHANGED
@@ -98,6 +98,7 @@ Dpl supports the following providers:
98
98
  * [Anynines](#anynines)
99
99
  * [AWS CloudFormation](#aws-cloudformation)
100
100
  * [AWS Code Deploy](#aws-code-deploy)
101
+ * [AWS ECR](#aws-ecr)
101
102
  * [AWS Elastic Beanstalk](#aws-elastic-beanstalk)
102
103
  * [AWS Lambda](#aws-lambda)
103
104
  * [AWS OpsWorks](#aws-opsworks)
@@ -299,6 +300,49 @@ The following variable are availabe for interpolation on `description`:
299
300
  `application`, `bucket`, `bundle_type`, `commit_id`, `deployment_group`, `endpoint`, `file_exists_behavior`, `git_author_email`, `git_author_name`, `git_branch`, `git_commit_author`, `git_commit_msg`, `git_sha`, `git_tag`, `key`, `region`, `repository`, `revision_type`, `build_number`
300
301
 
301
302
 
303
+ ### AWS ECR
304
+
305
+ Support for deployments to AWS ECR is in **alpha**. Please see [Maturity Levels](https://github.com/travis-ci/dpl/#maturity-levels) for details.
306
+
307
+ ```
308
+ Usage: dpl ecr [options]
309
+
310
+ Summary:
311
+
312
+ AWS ECR deployment provider
313
+
314
+ Description:
315
+
316
+ tbd
317
+
318
+ Options:
319
+
320
+ --access_key_id ID AWS access key (type: string, required)
321
+ --secret_access_key KEY AWS secret access key (type: string, required)
322
+ --account_id ID AWS Account ID (type: string, note: Required if the repository is owned by a
323
+ different account than the IAM user)
324
+ --source SOURCE Image to push (type: string, required, note: can be the id or the name and
325
+ optional tag (e.g. mysql:5.6))
326
+ --target TARGET Comma separated list of partial repository names to push to (type: string,
327
+ required)
328
+ --region REGION Comma separated list of regions to push to (type: string, default: us-east-1)
329
+
330
+ Common Options:
331
+
332
+ --cleanup Clean up build artifacts from the Git working directory before the deployment
333
+ --run CMD Commands to execute after the deployment finished successfully (type: array
334
+ (string, can be given multiple times))
335
+ --help Get help on this command
336
+
337
+ Examples:
338
+
339
+ dpl ecr --access_key_id id --secret_access_key key --source source --target target
340
+ dpl ecr --access_key_id id --secret_access_key key --source source --target target --account_id id
341
+ ```
342
+
343
+ Options can be given via env vars if prefixed with `AWS_`. E.g. the option `--access_key_id` can be
344
+ given as `AWS_ACCESS_KEY_ID=<access_key_id>`.
345
+
302
346
  ### AWS Elastic Beanstalk
303
347
 
304
348
 
@@ -396,9 +440,10 @@ Options:
396
440
  --environment VARS List of Environment Variables to add to the function (type: array (string, can
397
441
  be given multiple times), alias: environment_variables, format: /[\w\-]+=.+/,
398
442
  note: Can be encrypted for added security)
399
- --runtime NAME Lambda runtime to use (type: string, default: nodejs8.10, known values: java8,
400
- nodejs8.10, nodejs10.x, python2.7, python3.6, python3.7, dotnetcore2.1, go1.x,
401
- ruby2.5, note: required when creating a new function)
443
+ --runtime NAME Lambda runtime to use (type: string, default: nodejs10.x, known values:
444
+ nodejs12.x, nodejs10.x, python3.8, python3.7, python3.6, python2.7, ruby2.7,
445
+ ruby2.5, java11, java8, go1.x, dotnetcore2.1, note: required when creating a new
446
+ function)
402
447
  --dead_letter_arn ARN ARN to an SNS or SQS resource used for the dead letter queue. (type: string)
403
448
  --kms_key_arn ARN KMS key ARN to use to encrypt environment_variables. (type: string)
404
449
  --tracing_mode MODE Tracing mode (type: string, default: PassThrough, known values: Active,
@@ -847,23 +892,24 @@ Description:
847
892
 
848
893
  Options:
849
894
 
850
- --username USER Cloud Foundry username (type: string, required)
851
- --password PASS Cloud Foundry password (type: string, required)
852
- --organization ORG Cloud Foundry organization (type: string, required)
853
- --space SPACE Cloud Foundry space (type: string, required)
854
- --api URL Cloud Foundry api URL (type: string, default: https://api.run.pivotal.io)
855
- --app_name APP Application name (type: string)
856
- --buildpack PACK Buildpack name or Git URL (type: string)
857
- --manifest FILE Path to the manifest (type: string)
858
- --[no-]skip_ssl_validation Skip SSL validation
859
- --[no-]v3 Use the v3 API version to push the application
895
+ --username USER Cloud Foundry username (type: string, required)
896
+ --password PASS Cloud Foundry password (type: string, required)
897
+ --organization ORG Cloud Foundry organization (type: string, required)
898
+ --space SPACE Cloud Foundry space (type: string, required)
899
+ --api URL Cloud Foundry api URL (type: string, default: https://api.run.pivotal.io)
900
+ --app_name APP Application name (type: string)
901
+ --buildpack PACK Buildpack name or Git URL (type: string)
902
+ --manifest FILE Path to the manifest (type: string)
903
+ --[no-]skip_ssl_validation Skip SSL validation
904
+ --deployment_strategy STRATEGY Deployment strategy, either rolling or null (type: string)
905
+ --[no-]v3 Use the v3 API version to push the application
860
906
 
861
907
  Common Options:
862
908
 
863
- --cleanup Clean up build artifacts from the Git working directory before the deployment
864
- --run CMD Commands to execute after the deployment finished successfully (type: array
865
- (string, can be given multiple times))
866
- --help Get help on this command
909
+ --cleanup Clean up build artifacts from the Git working directory before the deployment
910
+ --run CMD Commands to execute after the deployment finished successfully (type: array
911
+ (string, can be given multiple times))
912
+ --help Get help on this command
867
913
 
868
914
  Examples:
869
915
 
@@ -2695,4 +2741,4 @@ This tool would not exist without your help.
2695
2741
 
2696
2742
  A huge thank you goes out to all of our current and past [contributors](https://github.com/travis-ci/dpl/graphs/contributors):
2697
2743
 
2698
- 5c077yP, A.J. May, A92hm, Aakriti Gupta, Aaron Hill, Aaron1011, Abdón Rodríguez Davila, Adam King, Adam Mcgrath, adinata, Adrian Moreno, Ahmad Nassri, Ahmed Refaey, Ainun Nazieb, Albertin Loic, Alex Jurkiewicz, Alexander Springer, Alexey Kotlyarov, Ali Hajimirza, Amos Wenger, Anders Olsen Sandvik, Andrey Lushchick, Andy Vanbutsele, Angelo Livanos, Anne-Julia Seitz, Antoine Savignac, Anton Babenko, Anton Ilin, Arnold Daniels, Ashen Gunaratne, awesomescot, Axel Fontaine, Baptiste Courtois, Ben Hale, Benjamin Guttmann, Bob, Bob Zoller, Brad Gignac, Brandon Burton, Brandon LeBlanc, Brian Hou, Cameron White, capotej, Carla, carlad, Chad Engler, Chathan Driehuys, Chris Patterson, Christian Elsen, Christian Rackerseder, Clay Reimann, cleem, Cryptophobia, Damien Mathieu, Dan Buch, Dan Powell, Daniel X Moore, David F. Severski, Denis Cornehl, Dennis Koot, dependabot[bot], Devin J. Pohly, Dominic Jodoin, Dwayne Forde, emdantrim, Eric Peterson, Erik Dalén, Esteban Santiesteban, Étienne Michon, eyalbe4, Fabio Napoleoni, Felix Rieseberg, fgogolli, Filip Š, Flamur Gogolli, Gabriel Saldana, George Brighton, Gil, Gil Megidish, Gil Tselenchuk, Hao Luo, Hauke Stange, Henrik Hodne, Hiro Asari, IMANAKA, Kouta, Ivan Evtuhovich, Ivan Kusalic, Ivan Pozdeev, Jacob Burkhart, Jake Hewitt, Jakub Holy, James Adam, James Awesome, James Parker, Janderson, Jannis Leidel, Jeffrey Yasskin, Jeremy Frasier, JMSwag, Joe Damato, Joep van Delft, Johannes Würbach, johanneswuerbach, Johnny Dobbins, Jon Benson, Jon Rowe, Jon-Erik Schneiderhan, Jonatan Männchen, Jonathan Stites, Jonathan Sundqvist, jorgecasar, Josh Kalderimis, joshua-anderson, Jouni Kaplas, Julia S.Simon, Julio Capote, jung_b@localhost, Karim Fateem, Ke Zhu, konrad-c, Konstantin Haase, Kouta Imanaka, Kristofer Svardstal, Kyle Fazzari, Kyle VanderBeek, Loïc Mahieu, Lorenz Leutgeb, Lorne Currie, Louis Lagrange, Louis St-Amour, Luke Yeager, Maciej Skierkowski, Mahdi Nami Damirchi, Marc, María de Antón, mariadeanton, Mariana Lenetis and Zachary Gershman, Marius Gripsgard, Mark Pundsack, marscher, Marwan Rabbâa, Mathias Meyer, Mathias Rangel Wulff, Mathias San Miguel, Matt Hernandez, Matt Knox, Matt Travi, Matthew Knox, Maxime Brugidou, mayeut, Meir Gottlieb, Michael Bleigh, Michael Dunn, Michael Friis, Michel Boudreau, Mike Bryant, Nat Welch, Nicholas Bruning, Nick Mohoric, Nico Lindemann, Nigel Ramsay, Nikhil, Ole Michaelis, Olle Jonsson, Omer Katz, Patrique Legault, Paul Beaudoin, Paul Nikitochkin, Peter, Peter Georgantas, Peter Newman, Philipp Hansch, Piotr Sarnacki, Radek Lisowski, Radosław Lisowski, Rail Aliiev, Randall A. Gordon, Robert, Robert Gogolok, Rokas Brazdžionis, Romuald Bulyshko, root, ryanj, Ryn Daniels, Samir Talwar, Samuel Wright, Sandor Zeestraten, Sascha Zarhuber, SAULEAU Sven, Scot Spinner, Sebastien Estienne, Sergei Chertkov, shunyi, Simon, Solly, Sorin Sbarnea, Soulou, Stefan Kolb, Steffen Kötte, step76, Steven Berlanga, Sven Fuchs, Sviatoslav Sydorenko, testfairy, Tim Ysewyn, Troels Thomsen, Tyler Cross, Uriah Levy, Vincent Jacques, Vojtech Vondra, Vojtěch Vondra, Wael M. Nasreddine, Wen Kokke, Wim Looman, Xavier Krantz, yeonhoyoon, Zane Williamson
2744
+ 5c077yP, A.J. May, A92hm, Aakriti Gupta, Aaron Hill, Aaron1011, Abdón Rodríguez Davila, Adam King, Adam Mcgrath, adinata, Adrian Moreno, Ahmad Nassri, Ahmed Refaey, Ainun Nazieb, Albertin Loic, Alex Jurkiewicz, Alexander Springer, Alexey Kotlyarov, Ali Hajimirza, Amos Wenger, Anders Olsen Sandvik, Andrew Nichols, Andrey Lushchick, Andy Vanbutsele, Angelo Livanos, Anne-Julia Seitz, Antoine Savignac, Anton Babenko, Anton Ilin, Arnold Daniels, Ashen Gunaratne, awesomescot, Axel Fontaine, Baptiste Courtois, Ben Hale, Benjamin Guttmann, Bob, Bob Zoller, Brad Gignac, Brandon Burton, Brandon LeBlanc, Brian Hou, Cameron White, capotej, Carla, carlad, Chad Engler, Chathan Driehuys, Chris Patterson, Christian Elsen, Christian Rackerseder, Clay Reimann, cleem, Cryptophobia, Damien Mathieu, Dan Buch, Dan Powell, Daniel X Moore, David F. Severski, Denis Cornehl, Dennis Koot, dependabot[bot], Devin J. Pohly, Dominic Jodoin, Dwayne Forde, emdantrim, Eric Peterson, Erik Dalén, Esteban Santiesteban, Étienne Michon, Eugene, Eugene Shubin, eyalbe4, Fabio Napoleoni, Felix Rieseberg, fgogolli, Filip Š, Flamur Gogolli, Gabriel Saldana, George Brighton, Gil, Gil Megidish, Gil Tselenchuk, Hao Luo, Hauke Stange, Henrik Hodne, Hiro Asari, IMANAKA, Kouta, Ivan Evtuhovich, Ivan Kusalic, Ivan Pozdeev, Jacob Burkhart, Jake Hewitt, Jakub Holy, James Adam, James Awesome, James Parker, Janderson, Jannis Leidel, Jeffrey Yasskin, Jeremy Frasier, JMSwag, Joe Damato, Joep van Delft, Johannes Würbach, johanneswuerbach, Johnny Dobbins, Jon Benson, Jon Rowe, Jon-Erik Schneiderhan, Jonatan Männchen, Jonathan Stites, Jonathan Sundqvist, jorgecasar, Josh Kalderimis, joshua-anderson, Jouni Kaplas, Julia S.Simon, Julio Capote, jung_b@localhost, Karim Fateem, Ke Zhu, konrad-c, Konstantin Haase, Kouta Imanaka, Kristofer Svardstal, Kyle Fazzari, Kyle VanderBeek, Loïc Mahieu, Lorenz Leutgeb, Lorne Currie, Louis Lagrange, Louis St-Amour, Luke Yeager, Maciej Skierkowski, Mahdi Nami Damirchi, Marc, María de Antón, mariadeanton, Mariana Lenetis and Zachary Gershman, Marius Gripsgard, Mark Pundsack, marscher, Marwan Rabbâa, Mathias Meyer, Mathias Rangel Wulff, Mathias San Miguel, Matt Hernandez, Matt Knox, Matt Travi, Matthew Knox, Maxime Brugidou, mayeut, Meir Gottlieb, Michael Bleigh, Michael Dunn, Michael Friis, Michel Boudreau, Mike Bryant, Nat Welch, Nicholas Bruning, Nick Mohoric, Nico Lindemann, Nigel Ramsay, Nikhil, Ole Michaelis, Olle Jonsson, Omer Katz, Patrique Legault, Paul Beaudoin, Paul Nikitochkin, Peter, Peter Georgantas, Peter Newman, Philipp Hansch, Piotr Sarnacki, Radek Lisowski, Radosław Lisowski, Rail Aliiev, Randall A. Gordon, Robert, Robert Gogolok, Rokas Brazdžionis, Romuald Bulyshko, root, ryanj, Ryn Daniels, Samir Talwar, Samuel Wright, Sandor Zeestraten, Sascha Zarhuber, SAULEAU Sven, Scot Spinner, Sebastien Estienne, Sergei Chertkov, shunyi, Simon, Solly, Sorin Sbarnea, Soulou, Stefan Kolb, Steffen Kötte, step76, Steven Berlanga, Sven Fuchs, Sviatoslav Sydorenko, testfairy, Tim Ysewyn, Troels Thomsen, Tyler Cross, Uriah Levy, Vincent Jacques, Vojtech Vondra, Vojtěch Vondra, Wael M. Nasreddine, Wen Kokke, Wim Looman, Xavier Krantz, yeonhoyoon, Zane Williamson
@@ -11,6 +11,7 @@ require 'dpl/providers/cloudfiles'
11
11
  require 'dpl/providers/cloudformation'
12
12
  require 'dpl/providers/cloudfoundry'
13
13
  require 'dpl/providers/codedeploy'
14
+ require 'dpl/providers/ecr'
14
15
  require 'dpl/providers/convox'
15
16
  require 'dpl/providers/elasticbeanstalk'
16
17
  require 'dpl/providers/engineyard'
@@ -22,10 +22,11 @@ module Dpl
22
22
  opt '--buildpack PACK', 'Buildpack name or Git URL'
23
23
  opt '--manifest FILE', 'Path to the manifest'
24
24
  opt '--skip_ssl_validation', 'Skip SSL validation'
25
+ opt '--deployment_strategy STRATEGY', 'Deployment strategy, either rolling or null'
25
26
  opt '--v3', 'Use the v3 API version to push the application'
26
27
  opt '--logout', default: true, internal: true
27
28
 
28
- cmds install: 'test $(uname) = "Linux" && rel="linux64-binary" || rel="macosx64"; wget "https://cli.run.pivotal.io/stable?release=${rel}&source=github" -qO cf.tgz && tar -zxvf cf.tgz && rm cf.tgz',
29
+ cmds install: 'test $(uname) = "Linux" && rel="linux64-binary" || rel="macosx64"; wget "https://cli.run.pivotal.io/stable?release=${rel}&version=v7&source=github" -qO cf.tgz && tar -zxvf cf.tgz && rm cf.tgz',
29
30
  api: './cf api %{api} %{skip_ssl_validation_opt}',
30
31
  login: './cf login -u %{username} -p %{password} -o %{organization} -s %{space}',
31
32
  push: './cf %{push_cmd} %{push_args}',
@@ -70,6 +71,7 @@ module Dpl
70
71
  args = []
71
72
  args << quote(app_name) if app_name?
72
73
  args << "-f #{manifest}" if manifest?
74
+ args << "--strategy #{deployment_strategy}" if deployment_strategy?
73
75
  args.join(' ')
74
76
  end
75
77
 
@@ -84,7 +84,12 @@ module Dpl
84
84
  def wait_until_deployed(id)
85
85
  print :waiting_for_deploy
86
86
  status = poll(id) until %w(Succeeded Failed Stopped).include?(status)
87
- info :finished_deploy, status
87
+ case status
88
+ when 'Succeeded'
89
+ info :finished_deploy, status
90
+ else
91
+ error :finished_deploy, status
92
+ end
88
93
  end
89
94
 
90
95
  def poll(id)
@@ -0,0 +1,127 @@
1
+ module Dpl
2
+ module Providers
3
+ class Ecr < Provider
4
+ status :alpha
5
+
6
+ full_name 'AWS ECR'
7
+
8
+ description sq(<<-str)
9
+ tbd
10
+ str
11
+
12
+ gem 'aws-sdk-ecr', '~> 1.0'
13
+ # gem 'docker-api', '~> 1.34'
14
+ gem 'json'
15
+
16
+ env :aws
17
+
18
+ opt '--access_key_id ID', 'AWS access key', required: true, secret: true
19
+ opt '--secret_access_key KEY', 'AWS secret access key', required: true, secret: true
20
+ opt '--account_id ID', 'AWS Account ID', note: 'Required if the repository is owned by a different account than the IAM user'
21
+ opt '--source SOURCE', 'Image to push', note: 'can be the id or the name and optional tag (e.g. mysql:5.6)', required: true
22
+ opt '--target TARGET', 'Comma separated list of partial repository names to push to', eg: 'image-one:tag,image-two', required: true
23
+ opt '--region REGION', 'Comma separated list of regions to push to', default: 'us-east-1'
24
+
25
+ msgs login: 'Using Access Key: %{access_key_id}',
26
+ auth_region: 'Authenticated with %{url}',
27
+ deploy: 'Pushing image %{source} to regions %{regions} as %{targets}',
28
+ image_pushed: 'Pushed image %{source} to region %{region} as %{target}'
29
+
30
+ cmds login: 'docker login -u %{user} -p %{pass} %{url}',
31
+ tag: 'docker tag %{source} %{url}/%{repo}:%{tag}',
32
+ push: 'docker push %{url}/%{repo}'
33
+
34
+ errs unknown_image: 'Image %{source} not found in the local Docker repository'
35
+
36
+ attr_reader :endpoints
37
+
38
+ def login
39
+ info :login
40
+ auth_regions
41
+ end
42
+
43
+ def validate
44
+ # TODO validate the image exists locally
45
+ end
46
+
47
+ def deploy
48
+ info :deploy, regions: regions.join(', '), targets: targets.join(', ')
49
+ regions.product(targets).each do |region, target|
50
+ push(region, target)
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def push(region, target)
57
+ url, repo, tag = endpoints[region], *target.split(':')
58
+ shell :tag, url: url, repo: repo, tag: tag || 'latest'
59
+ shell :push, url: url, repo: repo
60
+ info :image_pushed, region: region, target: target
61
+ end
62
+
63
+ def auth_regions
64
+ @endpoints = regions.map { |region| [region, auth_region(region)] }.to_h
65
+ end
66
+
67
+ def auth_region(region)
68
+ token = auth_token(region)
69
+ user, pass = parse_auth(token.authorization_token)
70
+ url = token.proxy_endpoint
71
+ shell :login, user: user, pass: pass, url: url, echo: false, silent: true
72
+ info :auth_region, url: url
73
+ strip_protocol(url)
74
+ end
75
+
76
+ def auth_token(region)
77
+ ecr(region).get_authorization_token(registry_ids).authorization_data[0]
78
+ end
79
+
80
+ def registry_ids
81
+ account_id? ? { registry_ids: [account_id] } : {}
82
+ end
83
+
84
+ def regions
85
+ # not sure how this was meant to be normalized when being a YAML list
86
+ region.split(',')
87
+ end
88
+
89
+ def targets
90
+ # not sure how this was meant to be normalized when being a YAML list
91
+ target.split(',')
92
+ end
93
+
94
+ def creds
95
+ @creds ||= only(opts, :access_key_id, :secret_access_key)
96
+ end
97
+
98
+ def ecr(region)
99
+ Aws::ECR::Client.new(region: region, **creds)
100
+ end
101
+
102
+ def parse_auth(str)
103
+ user, pass = Base64.decode64(str).split(':')
104
+ [user, pass.chomp]
105
+ end
106
+
107
+ def strip_protocol(url)
108
+ url.sub(/^https?:\/\//, '')
109
+ end
110
+
111
+ def progress(events)
112
+ events.split("\r\n").each do |event|
113
+ event = JSON.parse(event)
114
+ if e = event['error']
115
+ error e
116
+ elsif %w(Preparing Pushing).include?(event['status'])
117
+ nil
118
+ elsif event['id']
119
+ info "#{event['status']} [#{event['id']}]"
120
+ elsif event['status']
121
+ info event['status']
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
@@ -1,3 +1,3 @@
1
1
  module Dpl
2
- VERSION = '2.0.0.beta.3'
2
+ VERSION = '2.0.2.beta.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dpl
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta.3
4
+ version: 2.0.2.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-05-22 00:00:00.000000000 Z
13
+ date: 2020-09-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: cl
@@ -57,12 +57,10 @@ files:
57
57
  - Gemfile
58
58
  - Gemfile.lock
59
59
  - LICENSE
60
- - NOTES.md
61
60
  - README.md
62
61
  - Rakefile
63
62
  - bin/dpl
64
63
  - config/transliterate.yml
65
- - dpl.gemspec
66
64
  - lib/dpl.rb
67
65
  - lib/dpl/assets/atlas/install
68
66
  - lib/dpl/assets/convox/install
@@ -106,6 +104,7 @@ files:
106
104
  - lib/dpl/providers/codedeploy.rb
107
105
  - lib/dpl/providers/convox.rb
108
106
  - lib/dpl/providers/datica.rb
107
+ - lib/dpl/providers/ecr.rb
109
108
  - lib/dpl/providers/elasticbeanstalk.rb
110
109
  - lib/dpl/providers/engineyard.rb
111
110
  - lib/dpl/providers/firebase.rb
@@ -146,7 +145,6 @@ files:
146
145
  - lib/dpl/support/gstore_patch.rb
147
146
  - lib/dpl/support/version.rb
148
147
  - lib/dpl/version.rb
149
- - status.json
150
148
  homepage: https://github.com/travis-ci/dpl
151
149
  licenses:
152
150
  - MIT
@@ -166,8 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
164
  - !ruby/object:Gem::Version
167
165
  version: 1.3.1
168
166
  requirements: []
169
- rubyforge_project:
170
- rubygems_version: 2.6.11
167
+ rubygems_version: 3.0.6
171
168
  signing_key:
172
169
  specification_version: 4
173
170
  summary: Dpl runs deployments at Travis CI
data/NOTES.md DELETED
@@ -1,78 +0,0 @@
1
- x add `opts required: [:api_key, [:user, :password]]`
2
- x add opt '--foo', requires: :other
3
- x add opt '--foo', alias: :other
4
- x add opt '--foo', format: /.+/
5
- x add opt '--foo', deprecated: true
6
- x add opt '--foo', alias: :other, deprecated: :other
7
- x add opt '--foo', max: 10, type: :integer
8
- x add opt '--foo', enum: ['one', 'two']
9
- x consider automatically adding `[no-]` to booleans
10
- x make it so that Cl::Cmd parses the args, not Runner. only that way sub cmd specific opts can sit on the sub command
11
- x cleanup and move matchers
12
- x add lookup and interpolation to assert
13
- x revisit using MSGS and CMDS everywhere
14
- x add something like :keep for automatically moving things out of the way before cleanup
15
- x make specs validate that cmds have run in the correct order
16
- x revisit what's up with `needs_key`
17
- x revisit what's up with `git_http_user_agent false`
18
- x revisit the run stages in Provider
19
- x implement folds
20
- x port on-demand installation of sub gems
21
- x make MSGS etc class methods, so they can inherit from base classes (for Heroku)
22
- x move sub cmd opts etc to sub classes for Heroku
23
- x look into using FakeFS, MemFS sucks
24
- x make a list of strategies/tools providers use
25
- x revisit which providers need an ssh key, git, etc.
26
- x should have run in order matcher does not work
27
- x write bin/readme
28
- x test Cl against all Ruby versions >= 2.0
29
- x test Ctx
30
- x go through all providers, remove fakefs, use chdir 'tmp/dpl'
31
- x make sure all provider fs write operations go through ctx
32
- x what is `options[:no_deploy]` for? (it's for testing. added it back as `--stages`)
33
- x make sure dasherized options are accepted and normalized
34
- x add opt internal: true to Cl
35
- x write comments on the most important classes, so we can generate some api docs
36
- x install gems with sudo if Process::UID.eid is 0
37
- x document Provider.env
38
- x add retry to Ctx#script
39
- x try installing all gems at once
40
- x run apt-get update before apt-get install, once
41
- x make sure failed dependency installation fails the command
42
- x fix dependency installation for various providers
43
- x look into making `--app` and `--key_name` attr readers, rather than options
44
- x make it so that options are being overwritten if specified by both base and sub classes
45
- x test that `bin/dpl --stage install` runs as expected for various providers
46
- x on Travis CI add a stage that tests `bin/dpl --stage install` for various providers on various ruby versions
47
- x try using bundler/inline for gem dependencies
48
- x write a proper readme for Cl
49
- x add yard docs to Cl
50
- x autogenerate examples
51
- x update .github/CONTRIBUTING.md
52
- x consider adding `note: 'some comment` to Cl opts (e.g. see Lambda tracing mode)
53
- x bundle/inline seems to pick up an existing Gemfile.lock (which might be incompatible)
54
- x figure out how to deal with python tooling on non-python images etc (just die for now)
55
- x unit test netlfiy
56
- x move ./.dpl to ~/.dpl (clutters the working dir)
57
- x add a DSL for adding paths to PATH, e.g. gcs
58
- x make sure all error messages are actually being displayed
59
- x remove the fold for finishing the deployment, it's confusing. Maybe do not fold the deployment itself? or somehow keep the last fold open if there is an error?
60
- x BitBalloon is now Netlify Drop https://app.netlify.com/drop. time to rename it?
61
- x make `--skip_cleanup` the default
62
- x make sure all main shell scripts use assert: true, echo: true
63
- x make sure all asserts have an err msg (can we test this?), or add a generic error message
64
- x add secure: true, in order to tell Cl to filter log output for a given option
65
- x refactor Provider by splitting out a Cmd class for shell commands
66
- x document Cmd methods
67
- x revisit README and CONTRIBUTING
68
- x Make sure failed deployments always fail the build starting with dpl 2.0
69
- x PR sf-datapipeline
70
- x add a DSL for moving files out of the way, and moving them back later, e.g. gcs /etc/boto.cfg
71
- x start a CHANGELOG.md?
72
-
73
- - EY docs do not explain where to obtain the api key
74
-
75
- Future improvements
76
-
77
- - https://www.freecodecamp.org/news/how-to-deploy-your-cloud-foundry-app-with-almost-zero-fear-using-travis-ci-926697fff8f6/
78
-
@@ -1,22 +0,0 @@
1
- $: << 'lib'
2
-
3
- require 'dpl/version'
4
-
5
- Gem::Specification.new do |s|
6
- s.version = Dpl::VERSION
7
- s.name = 'dpl'
8
- s.authors = ['Konstantin Haase', 'Hiro Asari', 'Sven Fuchs']
9
- s.email = ['konstantin@travis-ci.com', 'hiro@travis-ci.com', 'sven@travis-ci.com']
10
- s.homepage = 'https://github.com/travis-ci/dpl'
11
- s.summary = 'Dpl runs deployments at Travis CI'
12
- s.description = 'Dpl (dee-pee-ell) is a tool made for continuous deployment, running deployments at Travis CI.'
13
- s.license = 'MIT'
14
- s.require_path = 'lib'
15
- s.required_ruby_version = '>= 2.2'
16
-
17
- s.executables = ['dpl']
18
- s.files = Dir['{config/**/*,lib/**/*,[A-Z]*}']
19
-
20
- s.add_runtime_dependency 'cl', '~> 1.0'
21
- s.add_development_dependency 'rake', '~> 12.3'
22
- end
@@ -1,237 +0,0 @@
1
- [
2
- {
3
- "name": "anynines",
4
- "status": "alpha",
5
- "date": "2019-08-05"
6
- },
7
- {
8
- "name": "azure_web_apps",
9
- "status": "alpha",
10
- "date": "2019-08-05"
11
- },
12
- {
13
- "name": "bintray",
14
- "status": "stable",
15
- "date": "2019-11-04"
16
- },
17
- {
18
- "name": "bluemixcloudfoundry",
19
- "status": "stable",
20
- "date": "2020-03-14"
21
- },
22
- {
23
- "name": "boxfuse",
24
- "status": "alpha",
25
- "date": "2019-08-05"
26
- },
27
- {
28
- "name": "cargo",
29
- "status": "stable",
30
- "date": "2020-01-27"
31
- },
32
- {
33
- "name": "chef_supermarket",
34
- "status": "alpha",
35
- "date": "2019-08-05"
36
- },
37
- {
38
- "name": "cloud66",
39
- "status": "alpha",
40
- "date": "2019-08-05"
41
- },
42
- {
43
- "name": "cloudfiles",
44
- "status": "alpha",
45
- "date": "2019-08-05"
46
- },
47
- {
48
- "name": "cloudformation",
49
- "status": "stable",
50
- "date": "2019-11-04"
51
- },
52
- {
53
- "name": "cloudfoundry",
54
- "status": "stable",
55
- "date": "2019-10-28"
56
- },
57
- {
58
- "name": "codedeploy",
59
- "status": "stable",
60
- "date": "2020-02-21"
61
- },
62
- {
63
- "name": "convox",
64
- "status": "dev",
65
- "date": "2019-08-16"
66
- },
67
- {
68
- "name": "datica",
69
- "status": "dev",
70
- "date": "2019-08-05"
71
- },
72
- {
73
- "name": "elasticbeanstalk",
74
- "status": "stable",
75
- "date": "2019-10-28"
76
- },
77
- {
78
- "name": "engineyard",
79
- "status": "alpha",
80
- "date": "2019-08-05"
81
- },
82
- {
83
- "name": "firebase",
84
- "status": "stable",
85
- "date": "2019-10-28"
86
- },
87
- {
88
- "name": "flynn",
89
- "status": "dev",
90
- "date": "2020-01-22"
91
- },
92
- {
93
- "name": "gae",
94
- "status": "stable",
95
- "date": "2019-10-29"
96
- },
97
- {
98
- "name": "gcs",
99
- "status": "stable",
100
- "date": "2019-10-28"
101
- },
102
- {
103
- "name": "git_push",
104
- "status": "dev",
105
- "date": "2020-02-17"
106
- },
107
- {
108
- "name": "gleis",
109
- "status": "alpha",
110
- "date": "2019-09-04"
111
- },
112
- {
113
- "name": "hackage",
114
- "status": "alpha",
115
- "date": "2019-08-05"
116
- },
117
- {
118
- "name": "hephy",
119
- "status": "beta",
120
- "date": "2019-10-07"
121
- },
122
- {
123
- "name": "heroku:api",
124
- "status": "stable",
125
- "date": "2019-10-28"
126
- },
127
- {
128
- "name": "heroku:git",
129
- "status": "alpha",
130
- "date": "2019-08-05"
131
- },
132
- {
133
- "name": "lambda",
134
- "status": "stable",
135
- "date": "2019-11-04"
136
- },
137
- {
138
- "name": "launchpad",
139
- "status": "alpha",
140
- "date": "2019-08-05"
141
- },
142
- {
143
- "name": "netlify",
144
- "status": "stable",
145
- "date": "2019-11-11"
146
- },
147
- {
148
- "name": "npm",
149
- "status": "stable",
150
- "date": "2019-11-04"
151
- },
152
- {
153
- "name": "nuget",
154
- "status": "alpha",
155
- "date": "2020-03-03"
156
- },
157
- {
158
- "name": "openshift",
159
- "status": "stable",
160
- "date": "2019-11-04"
161
- },
162
- {
163
- "name": "opsworks",
164
- "status": "stable",
165
- "date": "2019-11-18"
166
- },
167
- {
168
- "name": "packagecloud",
169
- "status": "alpha",
170
- "date": "2019-08-05"
171
- },
172
- {
173
- "name": "pages:api",
174
- "status": "dev",
175
- "date": "2019-09-10"
176
- },
177
- {
178
- "name": "pages:git",
179
- "status": "stable",
180
- "date": "2019-10-28"
181
- },
182
- {
183
- "name": "puppetforge",
184
- "status": "alpha",
185
- "date": "2019-08-05"
186
- },
187
- {
188
- "name": "pypi",
189
- "status": "stable",
190
- "date": "2019-11-04"
191
- },
192
- {
193
- "name": "releases",
194
- "status": "stable",
195
- "date": "2019-10-29"
196
- },
197
- {
198
- "name": "rubygems",
199
- "status": "stable",
200
- "date": "2019-11-04"
201
- },
202
- {
203
- "name": "s3",
204
- "status": "stable",
205
- "date": "2019-10-28"
206
- },
207
- {
208
- "name": "scalingo",
209
- "status": "alpha",
210
- "date": "2019-08-05"
211
- },
212
- {
213
- "name": "script",
214
- "status": "stable",
215
- "date": "2019-10-28"
216
- },
217
- {
218
- "name": "snap",
219
- "status": "stable",
220
- "date": "2020-02-20"
221
- },
222
- {
223
- "name": "surge",
224
- "status": "stable",
225
- "date": "2020-01-14"
226
- },
227
- {
228
- "name": "testfairy",
229
- "status": "alpha",
230
- "date": "2019-08-05"
231
- },
232
- {
233
- "name": "transifex",
234
- "status": "alpha",
235
- "date": "2019-08-05"
236
- }
237
- ]