dpl 1.8.0 → 1.8.18.travis.1472.4

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.
Files changed (60) hide show
  1. checksums.yaml +13 -5
  2. data/.travis.yml +0 -1
  3. data/Gemfile +8 -0
  4. data/README.md +127 -84
  5. data/TESTING.md +2 -0
  6. data/dpl.gemspec +0 -1
  7. data/lib/dpl/provider/anynines.rb +2 -2
  8. data/lib/dpl/provider/azure_webapps.rb +14 -6
  9. data/lib/dpl/provider/bintray.rb +6 -3
  10. data/lib/dpl/provider/boxfuse.rb +12 -12
  11. data/lib/dpl/provider/cloud_files.rb +4 -1
  12. data/lib/dpl/provider/cloud_foundry.rb +5 -6
  13. data/lib/dpl/provider/code_deploy.rb +1 -1
  14. data/lib/dpl/provider/deis.rb +41 -2
  15. data/lib/dpl/provider/elastic_beanstalk.rb +45 -1
  16. data/lib/dpl/provider/firebase.rb +26 -0
  17. data/lib/dpl/provider/gae.rb +10 -15
  18. data/lib/dpl/provider/gcs.rb +1 -1
  19. data/lib/dpl/provider/heroku/api.rb +2 -2
  20. data/lib/dpl/provider/lambda.rb +5 -2
  21. data/lib/dpl/provider/launchpad.rb +48 -0
  22. data/lib/dpl/provider/modulus.rb +1 -1
  23. data/lib/dpl/provider/npm.rb +3 -2
  24. data/lib/dpl/provider/ops_works.rb +1 -1
  25. data/lib/dpl/provider/pypi.rb +32 -12
  26. data/lib/dpl/provider/releases.rb +22 -12
  27. data/lib/dpl/provider/s3.rb +19 -11
  28. data/lib/dpl/provider/scalingo.rb +97 -0
  29. data/lib/dpl/provider/script.rb +1 -1
  30. data/lib/dpl/provider/surge.rb +33 -0
  31. data/lib/dpl/provider/testfairy.rb +8 -2
  32. data/lib/dpl/provider.rb +21 -5
  33. data/lib/dpl/version.rb +1 -1
  34. data/spec/provider/anynines_spec.rb +3 -4
  35. data/spec/provider/boxfuse_spec.rb +2 -2
  36. data/spec/provider/cloudfoundry_spec.rb +7 -8
  37. data/spec/provider/deis_spec.rb +27 -1
  38. data/spec/provider/elastic_beanstalk_spec.rb +41 -1
  39. data/spec/provider/firebase_spec.rb +34 -0
  40. data/spec/provider/gae_spec.rb +1 -1
  41. data/spec/provider/gcs_spec.rb +1 -1
  42. data/spec/provider/launchpad_spec.rb +33 -0
  43. data/spec/provider/modulus_spec.rb +1 -1
  44. data/spec/provider/npm_spec.rb +5 -4
  45. data/spec/provider/pypi_spec.rb +3 -3
  46. data/spec/provider/releases_spec.rb +53 -2
  47. data/spec/provider/s3_spec.rb +1 -2
  48. data/spec/provider/scalingo_spec.rb +64 -0
  49. data/spec/provider/surge_spec.rb +15 -0
  50. data/spec/provider_spec.rb +20 -1
  51. data/spec/spec_helper.rb +0 -8
  52. metadata +27 -83
  53. data/lib/dpl/provider/biicode.rb +0 -35
  54. data/lib/dpl/provider/cloudcontrol.rb +0 -96
  55. data/lib/dpl/provider/dot_cloud.rb +0 -29
  56. data/lib/dpl/provider/exoscale.rb +0 -26
  57. data/notes/dotcloud.md +0 -8
  58. data/spec/provider/cloudcontrol_spec.rb +0 -191
  59. data/spec/provider/dotcloud_spec.rb +0 -42
  60. data/spec/provider/exoscale_spec.rb +0 -191
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c57108aeaaa1455f7772778b4d7bb27d3a04b742
4
- data.tar.gz: f1da500a877636ab9ce405a5f16d1cb9cb15f847
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZWQ3MjkyNDFkMzQ4NTIxMTUxNGIyNTZhMjdiYThmZThhMzg0OWI5YQ==
5
+ data.tar.gz: !binary |-
6
+ ZjRmYmZlYzkwMDFlYzMzYjM3NGE5Zjg2NGY3NjVlNmZmOWIxZmY3NA==
5
7
  SHA512:
6
- metadata.gz: 279bf83392fe967b010a7084f56682db914a0521e2c45afa259bdf074f979506f1949363dd0fd09dd235b85ff16ccb7e32822c5c2926cb0949af191282942840
7
- data.tar.gz: 63bc805f8025e63f100047e41adbb900b05c5286cf554b0c0096fb7d20eb296b979530122e5e574e2ede0b5c1365bad982251f08cde3c49488e242016fc02c70
8
+ metadata.gz: !binary |-
9
+ NTNhYjEwMzA4MTg4YTBiM2JmNjk1Y2IxNTg3YWI2OTAyZmZjYzdhNDk3MTAz
10
+ NGRlOGU4Mjg1ZWY1YTY0MTk4MjQ4MWY4YjE0Y2RjNmQ3NGQzZjRhZmEyYjdj
11
+ OWE0YjlmMDk0OGRlYWQwMzY0MGVmNjZjYWVlNjgwYzJiNzFlNWY=
12
+ data.tar.gz: !binary |-
13
+ YjUxN2EyMWNmM2M0N2FmNmIyY2IxY2E1YTQ3ZDczMmZhZWE5NWY5Yzg2NmM0
14
+ OTQ2MmI3NGE2ZWRjMjk2OWM3MzlkMzc0YTA3YWExZWFhY2Y4YjZmM2ZhODM2
15
+ MDdlNTJiNzBmNDY2MDY2NDJkZjczNDNmMTQyMWFlMTRkYjI3NzU=
data/.travis.yml CHANGED
@@ -8,7 +8,6 @@ rvm:
8
8
 
9
9
  matrix:
10
10
  allow_failures:
11
- - rvm: 1.9.3
12
11
  - rvm: "2.2"
13
12
 
14
13
  sudo: false
data/Gemfile CHANGED
@@ -4,6 +4,8 @@ gemspec
4
4
  platforms :mri_19 do
5
5
  gem 'slop', '~> 3.6.0'
6
6
  gem 'ohai', '~> 7.4.0'
7
+ gem 'amq-protocol', '~> 1.9.2'
8
+ gem 'net-ssh', '~> 2.9.2'
7
9
  end
8
10
 
9
11
  group :heroku do
@@ -41,6 +43,7 @@ group :lambda do
41
43
  end
42
44
 
43
45
  group :cloud_files do
46
+ gem 'fog-google', '< 0.1.1', platforms: :mri_19
44
47
  gem 'fog'
45
48
  end
46
49
 
@@ -60,6 +63,7 @@ end
60
63
 
61
64
  group :bitballoon do
62
65
  gem 'bitballoon'
66
+ gem 'jwt', '< 1.5.3', platforms: :mri_19
63
67
  end
64
68
 
65
69
  group :puppet_forge do
@@ -78,3 +82,7 @@ end
78
82
  group :chef_supermarket do
79
83
  gem 'chef'
80
84
  end
85
+
86
+ group :deis do
87
+ gem 'git'
88
+ end
data/README.md CHANGED
@@ -10,41 +10,41 @@ Dpl supports the following providers:
10
10
  * [Anynines](#anynines)
11
11
  * [AppFog](#appfog)
12
12
  * [Atlas by HashiCorp](#atlas)
13
- * [Azure Web Apps](#azurewebapps)
14
- * [Biicode](#biicode)
13
+ * [AWS CodeDeploy](#aws-codedeploy)
14
+ * [AWS OpsWorks](#opsworks)
15
+ * [Azure Web Apps](#azure-web-apps)
15
16
  * [Bintray](#bintray)
16
17
  * [BitBalloon](#bitballoon)
17
18
  * [Boxfuse](#boxfuse)
19
+ * [Chef Supermarket](#chef-supermarket)
18
20
  * [Cloud 66](#cloud-66)
19
21
  * [Cloud Foundry](#cloud-foundry)
20
- * [cloudControl](#cloudcontrol)
21
- * [dotCloud (experimental)](#dotcloud)
22
+ * [Deis](#deis)
23
+ * [Divshot.io](#divshotio)
24
+ * [Elastic Beanstalk](#elastic-beanstalk)
22
25
  * [Engine Yard](#engine-yard)
26
+ * [Firebase](#firebase)
27
+ * [Github Releases](#github-releases)
28
+ * [Google App Engine (experimental)](#google-app-engine)
29
+ * [Google Cloud Storage](#google-cloud-storage)
30
+ * [Hackage](#hackage)
23
31
  * [Heroku](#heroku)
32
+ * [Lambda](#lambda)
33
+ * [Launchpad](#launchpad)
34
+ * [Modulus](#modulus)
24
35
  * [Nodejitsu](#nodejitsu)
25
36
  * [NPM](#npm)
26
37
  * [OpenShift](#openshift)
38
+ * [packagecloud](#packagecloud)
39
+ * [Puppet Forge](#puppet-forge)
27
40
  * [PyPi](#pypi)
41
+ * [Rackspace Cloud Files](#rackspace-cloud-files)
28
42
  * [RubyGems](#rubygems)
29
43
  * [S3](#s3)
30
- * [Divshot.io](#divshotio)
31
- * [Rackspace Cloud Files](#rackspace-cloud-files)
32
- * [AWS OpsWorks](#opsworks)
33
- * [Modulus](#modulus)
34
- * [Github Releases](#github-releases)
35
- * [Hackage](#hackage)
36
- * [Deis](#deis)
37
- * [Google Cloud Storage](#google-cloud-storage)
38
- * [Elastic Beanstalk](#elastic-beanstalk)
39
- * [Puppet Forge](#puppet-forge)
40
- * [packagecloud](#packagecloud)
41
- * [Chef Supermarket](#chef-supermarket)
42
- * [Lambda](#lambda)
43
- * [TestFairy](#testfairy)
44
- * [ExoScale](#exoscale)
45
- * [AWS CodeDeploy](#aws-codedeploy)
44
+ * [Scalingo](#scalingo)
46
45
  * [Script](#script)
47
- * [Google App Engine (experimental)](#google-app-engine)
46
+ * [Surge.sh](#surgesh)
47
+ * [TestFairy](#testfairy)
48
48
 
49
49
  ## Installation:
50
50
 
@@ -130,7 +130,7 @@ As a rule of thumb, you should switch to the Git strategy if you run into issues
130
130
  "released": "2015-01-04",
131
131
  "vcs_tag": "0.5",
132
132
  "attributes": [{"name": "VerAtt1", "values" : ["VerVal1"], "type": "string"},
133
- {"name": "VerAtt2", "values" : [1, 3.3, 5], "type": "number"},
133
+ {"name": "VerAtt2", "values" : [1, 3.2, 5], "type": "number"},
134
134
  {"name": "VerAtt3", "values" : ["2015-01-01T19:43:37+0100"], "type": "date"}],
135
135
  "gpgSign": false
136
136
  },
@@ -149,7 +149,7 @@ As a rule of thumb, you should switch to the Git strategy if you run into issues
149
149
  The files will be uploaded to Bintray under the gems folder.
150
150
  2. All files under build/docs. The files will be uploaded to Bintray under the docs folder.
151
151
 
152
- Note: Regular expressions defined as part of the includePattern and excludePattern properties must be wrapped with brackets. */
152
+ Note: Regular expressions defined as part of the includePattern property must be wrapped with brackets. */
153
153
 
154
154
  "files":
155
155
  [
@@ -261,18 +261,6 @@ For authentication you can also use Travis CI secure environment variable:
261
261
  dpl --provider=openshift --user=<username> --password=<password> --domain=<domain>
262
262
  dpl --provider=openshift --user=<username> --password=<password> --domain=<domain> --app=<app>
263
263
 
264
- ### cloudControl:
265
-
266
- #### Options:
267
-
268
- * **email**: cloudControl email.
269
- * **password**: cloudControl password.
270
- * **deployment**: cloudControl Deployment. Follows the format "APP_NAME/DEP_NAME".
271
-
272
- #### Examples:
273
-
274
- dpl --provider=cloudcontrol --email=<email> --password<password> --deployment=`APP_NAME/DEP_NAME`
275
-
276
264
  ### RubyGems:
277
265
 
278
266
  #### Options:
@@ -289,9 +277,17 @@ For authentication you can also use Travis CI secure environment variable:
289
277
 
290
278
  * **user**: PyPI Username.
291
279
  * **password**: PyPI Password.
292
- * **server**: Optional. Only required if you want to release to a different index. Follows the form of "https://mypackageindex.com/index".
293
- * **distributions**: A space-separated list of distributions to be uploaded to PyPI. Defaults to 'sdist'.
294
- * **docs_dir**: A path to the directory to upload documentation from. Defaults to 'build/docs'
280
+ * **server**: Optional. Only required if you want to release to a different index. Follows the form of 'https://mypackageindex.com/index'. Defaults to 'https://pypi.python.org/pypi'.
281
+ * **distributions**: Optional. A space-separated list of distributions to be uploaded to PyPI. Defaults to 'sdist'.
282
+ * **docs_dir**: Optional. A path to the directory to upload documentation from. Defaults to 'build/docs'
283
+
284
+ #### Environment variables:
285
+
286
+ * **PYPI_USER**: PyPI Username. Used if the `user` option is omitted.
287
+ * **PYPI_PASSWORD**: PyPI Password. Used if the `password` option is omitted.
288
+ * **PYPI_SERVER** Optional. Only required if you want to release to a different index. Used if the `server` option is omitted.
289
+ * **PYPI_DISTRIBUTIONS** Optional. A space-separated list of distributions to be uploaded to PyPI. Used if the `distributions` option is omitted.
290
+ * **PYPI_DOCS_DIR** Optional. A path to the directory to upload documentation from. Used if the `docs_dir` option is omitted.
295
291
 
296
292
  #### Examples:
297
293
 
@@ -309,20 +305,6 @@ For authentication you can also use Travis CI secure environment variable:
309
305
 
310
306
  dpl --provider=npm --email=<email> --api-key=<api-key>
311
307
 
312
- ### biicode:
313
-
314
- **Requires `sudo`; cannot be used on containers**
315
-
316
- #### Options:
317
-
318
- * **user**: biicode username.
319
- * **password**: biicode password.
320
-
321
- #### Examples:
322
-
323
- dpl --provider=biicode --user=<user> --password=<password>
324
-
325
-
326
308
  ### S3:
327
309
 
328
310
  #### Options:
@@ -339,6 +321,7 @@ For authentication you can also use Travis CI secure environment variable:
339
321
  * **acl**: Sets the access control for the uploaded objects. Defaults to `private`. Valid options are `private`, `public_read`, `public_read_write`, `authenticated_read`, `bucket_owner_read`, `bucket_owner_full_control`.
340
322
  * **dot_match**: When set to `true`, upload files starting a `.`.
341
323
  * **index_document_suffix**: Set the index document of a S3 website.
324
+ * **default_text_charset**: Set the default character set to append to the content-type of text files you are uploading.
342
325
 
343
326
  #### File-specific `Cache-Control` and `Expires` headers
344
327
 
@@ -436,19 +419,21 @@ You first need to create an [Atlas account](https://atlas.hashicorp.com/account/
436
419
  #### Options:
437
420
 
438
421
  * **site**: Web App Name (if your app lives at myapp.azurewebsites.net, the name would be myapp).
422
+ * **slot**: Optional. Slot name if your app uses staging deployment. (e.g. if your slot lives at myapp-test.azurewebsites.net, the slot would be myapp-test).
439
423
  * **username**: Web App Deployment Username.
440
424
  * **password**: Web App Deployment Password.
441
- * **quiet**: If passed, Azure's deployment output will not be printed.
425
+ * **verbose**: If passed, Azure's deployment output will be printed. Warning: If you provide incorrect credentials, Git will print those in clear text. Correct authentication credentials will remain hidden.
442
426
 
443
427
  #### Environment variables:
444
428
 
445
429
  * **AZURE_WA_SITE** Web App Name. Used if the `site` option is omitted.
430
+ * **AZURE_WA_SLOT** Optional. Slot name if your app uses staging deployment. Used if the `slot` option is omitted.
446
431
  * **AZURE_WA_USERNAME**: Web App Deployment Username. Used if the `username` option is omitted.
447
432
  * **AZURE_WA_PASSWORD**: Web App Deployment Password. Used if the `password` option is omitted.
448
433
 
449
434
  #### Examples:
450
435
 
451
- dpl --provider=AzureWebApps --username=depluser --password=deplp@ss --site=dplsite
436
+ dpl --provider=AzureWebApps --username=depluser --password=deplp@ss --site=dplsite --slot=dplsite-test --verbose
452
437
 
453
438
  ### Divshot.io:
454
439
 
@@ -477,19 +462,6 @@ You first need to create an [Atlas account](https://atlas.hashicorp.com/account/
477
462
 
478
463
  dpl --provider=cloudfoundry --username=<username> --password=<password> --organization=<organization> --api=<api> --space=<space> --skip-ssl-validation
479
464
 
480
- ### dotCloud:
481
-
482
- #### Options:
483
-
484
- * **api_key**: dotCloud api key.
485
- * **app**: dotcloud app.
486
- * **service**: dotcloud service to run commands on. Defaults to 'www'.
487
-
488
- #### Examples:
489
-
490
- dpl --provider=dotcloud --api_key=<api_key> --app=<app>
491
- dpl --provider=dotcloud --api_key=<api_key> --app=<app> --service=<service>
492
-
493
465
  ### Rackspace Cloud Files:
494
466
 
495
467
  #### Options:
@@ -514,8 +486,12 @@ You first need to create an [Atlas account](https://atlas.hashicorp.com/account/
514
486
  * **repo**: GitHub Repo. Defaults to git repo's name.
515
487
  * **file**: File to upload to GitHub Release.
516
488
  * **file_glob**: If files should be interpreted as globs (\* and \*\* wildcards). Defaults to false.
489
+ * **overwrite**: If files with the same name should be overwritten. Defaults to false.
517
490
  * **release-number**: Overide automatic release detection, set a release manually.
518
491
 
492
+ Additionally, options can be passed to [Octokit](https://github.com/octokit/octokit.rb) client.
493
+ These are documented in https://github.com/octokit/octokit.rb/blob/master/lib/octokit/client/releases.rb.
494
+
519
495
  #### GitHub Two Factor Authentication
520
496
 
521
497
  For accounts using two factor authentication, you have to use an oauth token as a username and password will not work.
@@ -590,9 +566,10 @@ For accounts using two factor authentication, you have to use an oauth token as
590
566
  * **region**: AWS Region the Elastic Beanstalk app is running in. Defaults to 'us-east-1'. Please be aware that this must match the region of the elastic beanstalk app.
591
567
  * **app**: Elastic Beanstalk application name.
592
568
  * **env**: Elastic Beanstalk environment name which will be updated.
593
- * **zip-file**: The zip-file that you want to deploy. _**Note:**_ you also need to use the `skip-cleanup` or the zipfile you are trying to upload will be removed during cleanup.
569
+ * **zip_file**: The zip file that you want to deploy. _**Note:**_ you also need to use the `skip_cleanup` or the zip file you are trying to upload will be removed during cleanup.
594
570
  * **bucket_name**: Bucket name to upload app to.
595
571
  * **bucket_path**: Location within Bucket to upload app to.
572
+ * **only_create_app_version**: only create the app version, don't actually deploy it.
596
573
 
597
574
  #### Environment variables:
598
575
 
@@ -608,7 +585,7 @@ For accounts using two factor authentication, you have to use an oauth token as
608
585
 
609
586
  #### Options:
610
587
 
611
- * **access_token**: Optinoal. The access_token which can be found in the `.bitballoon` file after a deployment using the bitballoon CLI. Only required if no `.bitballoon` file is present.
588
+ * **access_token**: Optional. The access_token which can be found in the `.bitballoon` file after a deployment using the bitballoon CLI. Only required if no `.bitballoon` file is present.
612
589
  * **site_id**: Optional. The site_id which can be found in the .bitballoon file after a deployment using the bitballoon CLI. Only required if no `.bitballoon` file is present.
613
590
  * **local_dir**: Optional. The sub-directory of the built assets for deployment. Default to current path.
614
591
 
@@ -669,6 +646,7 @@ For accounts using two factor authentication, you have to use an oauth token as
669
646
  * **description**: Optional. The description of the Lambda being created / updated. Defaults to "Deploy build #{context.env['TRAVIS_BUILD_NUMBER']} to AWS Lambda via Travis CI"
670
647
  * **timeout**: Optional. The function execution time at which Lambda should terminate the function. Defaults to 3 (seconds).
671
648
  * **memory_size**: Optional. The amount of memory in MB to allocate to this Lambda. Defaults to 128.
649
+ * **runtime**: Optional. The Lambda runtime to use. Defaults to `node`.
672
650
 
673
651
  #### Examples:
674
652
 
@@ -693,6 +671,24 @@ Deploy contents of a specific directory using specific module name:
693
671
  --handler_name="handler";
694
672
  ```
695
673
 
674
+ ### Launchpad:
675
+
676
+ #### Options:
677
+
678
+ * **slug**: Required. `~user-name/project-name/branch-name`
679
+ * **oauth_token**: Required. Your OAUTH token for Launchpad
680
+ * **oauth_token_secret**: Required. Your OAUTH token secret for Launchpad
681
+
682
+ #### Example:
683
+
684
+ Deploy contents of current working directory using default module:
685
+ ```
686
+ dpl --provider="launchpad" \
687
+ --slug="~user-name/project-name/branch-name" \
688
+ --oauth_token="${LAUNCHPAD_OAUTH_TOKEN}" \
689
+ --oauth_token_secret="${LAUNCHPAD_OAUTH_TOKEN_SECRET}";
690
+ ```
691
+
696
692
  ### TestFairy:
697
693
 
698
694
  Your Android(apk)/iOS(ipa) file will be uploaded to TestFairy,
@@ -722,18 +718,6 @@ and your testers can start testing your app.
722
718
 
723
719
  dpl --provider=testfairy --api-key=<api-key> --app-file="out/Sample.apk" --keystore-file="out/keystore" --storepass=<storepass> --alias=<alias>
724
720
 
725
- ### ExoScale:
726
-
727
- #### Options:
728
-
729
- * **email**: ExoScale email or Organization ID.
730
- * **password**: ExoScale password.
731
- * **deployment**: ExoScale Deployment. Follows the format "APP_NAME/DEP_NAME".
732
-
733
- #### Examples:
734
-
735
- dpl --provider=exoscale --email=<email> --password<password> --deployment=`APP_NAME/DEP_NAME`
736
-
737
721
  ### AWS CodeDeploy:
738
722
 
739
723
  #### Options:
@@ -757,6 +741,34 @@ and your testers can start testing your app.
757
741
 
758
742
  dpl --provider=codedeploy --access-key-id=<aws access key> --secret_access_key=<aws secret access key> --application=<application name> --deployment_group=<deployment group> --revision_type=<s3/github> --commit_id=<commit ID> --repository=<repo name> --region=<AWS availability zone> --wait-until-deployed=<true>
759
743
 
744
+ ### Scalingo:
745
+
746
+ #### Options:
747
+ * **api_key**: scalingo API Key. Not necessary if username and password are used.
748
+ * **username**: scalingo username. Not necessary if api_key is used.
749
+ * **password**: scalingo password. Not necessary if api_key is used.
750
+ * **remote**: Remote url or git remote name of your git repository. By default remote name is "scalingo".
751
+ * **branch**: Branch of your git repository. By default branch name is "master".
752
+ * **app**: Only necessary if your repository does not contain the appropriate remote. Specifying the app will add a remote to your local repository: `git remote add <remote> git@scalingo.com:<app>.git`
753
+
754
+ #### Use:
755
+
756
+ You can connect to Scalingo using your username/password or your api key.
757
+ It needs [Scalingo CLI](http://cli.scalingo.com/) which will be [downloaded here](http://cli.scalingo.com/).
758
+ Then, it will push your project to Scalingo and deploy it automatically.
759
+
760
+ Note: You only need to connect once to Scalingo CLI, credentials are stored locally.
761
+
762
+ #### Examples:
763
+
764
+ dpl --provider=scalingo --api_key="aaAAbbBB0011223344"
765
+ dpl --provider=scalingo --username=<username> --password=<password>
766
+
767
+ dpl --provider=scalingo --api_key="aaAAbbBB0011223344" --remote="scalingo-staging"
768
+ dpl --provider=scalingo --api_key="aaAAbbBB0011223344" --remote="scalingo-staging" --branch="master"
769
+
770
+ dpl --provider=scalingo
771
+
760
772
  ### Script:
761
773
 
762
774
  An elementary provider that executes a single command.
@@ -775,6 +787,7 @@ Deployment will be marked a failure if the script exits with nonzero status.
775
787
 
776
788
  Deploys to Google App Engine and Google App Engine Managed VMs via the Google Cloud SDK and
777
789
  it's [`gcloud` tool](https://cloud.google.com/sdk/gcloud/) using a [Service Account](https://developers.google.com/console/help/new/#serviceaccounts).
790
+ In order to use this provider, please make sure you have the [App Engine Admin API](https://developers.google.com/apis-explorer/#p/appengine/v1beta4/) enabled [in the Google Developers Console](https://console.developers.google.com/project/_/apiui/apiview/appengine/overview).
778
791
 
779
792
  #### Options:
780
793
 
@@ -782,9 +795,9 @@ it's [`gcloud` tool](https://cloud.google.com/sdk/gcloud/) using a [Service Acco
782
795
  * **keyfile**: Path to the JSON file containing your [Service Account](https://developers.google.com/console/help/new/#serviceaccounts) credentials in [JSON Web Token](https://tools.ietf.org/html/rfc7519) format. To be obtained via the [Google Developers Console](https://console.developers.google.com/project/_/apiui/credential). Defaults to `"service-account.json"`. Note that this file should be handled with care as it contains authorization keys.
783
796
  * **config**: Path to your module configuration file. Defaults to `"app.yaml"`. This file is runtime dependent ([Go](https://cloud.google.com/appengine/docs/go/config/appconfig), [Java](https://cloud.google.com/appengine/docs/java/configyaml/appconfig_yaml), [PHP](https://developers.google.com/console/help/new/#projectnumber), [Python](https://cloud.google.com/appengine/docs/python/config/appconfig))
784
797
  * **version**: The version of the app that will be created or replaced by this deployment. If you do not specify a version, one will be generated for you. See [`gcloud preview app deploy`](https://cloud.google.com/sdk/gcloud/reference/preview/app/deploy)
785
- * **default**: Flag to set the deployed version to be the default serving version. See [`gcloud preview app deploy`](https://cloud.google.com/sdk/gcloud/reference/preview/app/deploy)
798
+ * **no_promote**: Flag to not promote the deployed version. See [`gcloud preview app deploy`](https://cloud.google.com/sdk/gcloud/reference/preview/app/deploy)
786
799
  * **verbosity**: Let's you adjust the verbosity when invoking `"gcloud"`. Defaults to `"warning"`. See [`gcloud`](https://cloud.google.com/sdk/gcloud/reference/).
787
- * **docker_build**: If deploying a Managed VM, specifies where to build your image. Typical values are `"remote"` to build on Google Cloud Engine and `"local"` which requires Docker to be set up properly (to utilize this on Travis CI, read [Using Docker on Travis CI](http://blog.travis-ci.com/2015-08-19-using-docker-on-travis-ci/)). Defaults to `"remote"`.
800
+ * **no_stop_previous_version**: Flag to prevent your deployment from stopping the previously promoted version. This is from the future, so might not work (yet). See [`gcloud preview app deploy`](https://cloud.google.com/sdk/gcloud/reference/preview/app/deploy)
788
801
 
789
802
  #### Environment variables:
790
803
 
@@ -793,4 +806,34 @@ it's [`gcloud` tool](https://cloud.google.com/sdk/gcloud/) using a [Service Acco
793
806
 
794
807
  #### Example:
795
808
 
796
- dpl --provider=gae --project=example --default=true
809
+ dpl --provider=gae --project=example --no_promote=true
810
+
811
+ ### Firebase:
812
+
813
+ #### Options:
814
+
815
+ * **token**: Your Firebase CI access token (generate with `firebase login:ci`)
816
+ * **project**: Deploy to a different Firebase project than specified in your `firebase.json` (e.g. `myapp-staging`)
817
+
818
+ #### Examples:
819
+
820
+ dpl --provider=firebase --token=<token> --project=<project>
821
+
822
+
823
+
824
+ ### Surge.sh
825
+
826
+ #### Options:
827
+
828
+ * **project** Path to project folder relative to repo root. Defaults to repo root if not set.
829
+ * **domain** Domain to publish to. Can be omitted if domain is set in the `CNAME` file in the project folder.
830
+
831
+
832
+ #### Environment variables:
833
+
834
+ * **SURGE_LOGIN**: Set it to the email address you use with Surge
835
+ * **SURGE_TOKEN**: Set it to your login token (get it by doing a `surge token`)
836
+
837
+ #### Example:
838
+ dpl --provider=surge --project=<project-path> --domain=<domain-name>
839
+
data/TESTING.md CHANGED
@@ -11,6 +11,8 @@ deploy:
11
11
  edge:
12
12
  source: myown/dpl
13
13
  branch: foo
14
+ on:
15
+ branch: TEST_BRANCH # or all_branches: true
14
16
  ⋮ # rest of provider X configuration
15
17
  ```
16
18
 
data/dpl.gemspec CHANGED
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
19
19
  s.add_development_dependency 'rspec', '~> 3.0.0'
20
20
  s.add_development_dependency 'rspec-its'
21
21
  s.add_development_dependency 'rake'
22
- s.add_development_dependency 'simplecov'
23
22
  s.add_development_dependency 'json', '1.8.1'
24
23
  s.add_development_dependency 'coveralls'
25
24
 
@@ -4,8 +4,8 @@ module DPL
4
4
 
5
5
  def check_auth
6
6
  initial_go_tools_install
7
- context.shell "cf api https://api.de.a9s.eu"
8
- context.shell "cf login --u #{option(:username)} --p #{option(:password)} --o #{option(:organization)} --s #{option(:space)}"
7
+ context.shell "./cf api https://api.de.a9s.eu"
8
+ context.shell "./cf login --u #{option(:username)} --p #{option(:password)} --o #{option(:organization)} --s #{option(:space)}"
9
9
  end
10
10
 
11
11
  end
@@ -5,12 +5,13 @@ module DPL
5
5
  {
6
6
  "username" => options[:username] || context.env['AZURE_WA_USERNAME'],
7
7
  "password" => options[:password] || context.env['AZURE_WA_PASSWORD'],
8
- "site" => options[:site] || context.env['AZURE_WA_SITE']
8
+ "site" => options[:site] || context.env['AZURE_WA_SITE'],
9
+ "slot" => options[:slot] || context.env['AZURE_WA_SLOT']
9
10
  }
10
11
  end
11
12
 
12
13
  def git_target
13
- "https://#{config['username']}:#{config['password']}@#{config['site']}.scm.azurewebsites.net:443/#{config['site']}.git"
14
+ "https://#{config['username']}:#{config['password']}@#{config['slot'] || config['site']}.scm.azurewebsites.net:443/#{config['site']}.git"
14
15
  end
15
16
 
16
17
  def needs_key?
@@ -27,12 +28,19 @@ module DPL
27
28
  end
28
29
 
29
30
  def push_app
30
- log "Deploying to Azure Web App '#{config['site']}'"
31
+ log "Deploying to Azure Web App '#{config['slot'] || config['site']}'"
31
32
 
32
- if !!options[:quiet]
33
- context.shell "git push --force --quiet #{git_target} master > /dev/null 2>&1"
33
+ if !!options[:skip_cleanup]
34
+ log "Skipping Cleanup"
35
+ context.shell "git checkout HEAD"
36
+ context.shell "git add . --all --force"
37
+ context.shell "git commit -m \"Skip Cleanup Commit\""
38
+ end
39
+
40
+ if !!options[:verbose]
41
+ context.shell "git push --force --quiet #{git_target} HEAD:master"
34
42
  else
35
- context.shell "git push --force --quiet #{git_target} master"
43
+ context.shell "git push --force --quiet #{git_target} HEAD:master > /dev/null 2>&1"
36
44
  end
37
45
  end
38
46
  end
@@ -88,7 +88,8 @@ module DPL
88
88
  def put_file_request(local_file_path, upload_path, matrix_params)
89
89
  url = URI.parse(self.url)
90
90
 
91
- data = File.read(local_file_path)
91
+ file = File.open(local_file_path, 'rb')
92
+ data = file.read()
92
93
  http = Net::HTTP.new(url.host, url.port)
93
94
  http.use_ssl = true
94
95
 
@@ -149,6 +150,7 @@ module DPL
149
150
  if code == 201 || code == 200
150
151
  return true
151
152
  end
153
+ name = descriptor["package"]["name"]
152
154
  abort("Unexpected HTTP response code #{code} returned from Bintray while checking if package '#{name}' exists. " +
153
155
  "Response message: #{res.message}")
154
156
  end
@@ -179,6 +181,7 @@ module DPL
179
181
  if code == 201 || code == 200
180
182
  return true
181
183
  end
184
+ version_name = descriptor["version"]["name"]
182
185
  abort("Unexpected HTTP response code #{code} returned from Bintray while checking if version '#{version_name}' exists. " +
183
186
  "Response message: #{res.message}")
184
187
  end
@@ -366,7 +369,7 @@ module DPL
366
369
  def root_path(str)
367
370
  index = str.index('(')
368
371
  path = nil
369
- if index.nil?
372
+ if index.nil? || str.start_with?('(')
370
373
  path = str
371
374
  else
372
375
  path = str[0, index]
@@ -503,4 +506,4 @@ module DPL
503
506
  end
504
507
  end
505
508
  end
506
- end
509
+ end
@@ -7,9 +7,9 @@ module DPL
7
7
  @secret = options[:secret]
8
8
  @configfile = options[:configfile]
9
9
  @payload = options[:payload]
10
- @app = options[:app]
11
- @version = options[:version]
10
+ @image = options[:image]
12
11
  @env = options[:env]
12
+ @extra_args = options[:extra_args]
13
13
 
14
14
  @param_user = ''
15
15
  if @user.to_s != ''
@@ -31,24 +31,24 @@ module DPL
31
31
  @param_payload = ' "' + @payload + '"'
32
32
  end
33
33
 
34
- @param_app = ''
35
- if @app.to_s != ''
36
- @param_app = " -app=" + @app
34
+ @param_image = ''
35
+ if @image.to_s != ''
36
+ @param_image = " -image=" + @image
37
37
  end
38
38
 
39
- @param_version = ''
40
- if @version.to_s != ''
41
- @param_version = " -version=" + @version
42
- end
43
-
44
- @param_env = ''
39
+ @param_env = ' -env=test'
45
40
  if @env.to_s != ''
46
41
  @param_env = " -env=" + @env
47
42
  end
48
43
 
44
+ @param_extra_args = ''
45
+ if @extra_args.to_s != ''
46
+ @param_extra_args = " " + @extra_args
47
+ end
48
+
49
49
  context.shell "curl -L https://files.boxfuse.com/com/boxfuse/client/boxfuse-commandline/latest/boxfuse-commandline-latest-linux-x64.tar.gz | tar xz"
50
50
 
51
- @command = "boxfuse/boxfuse run" + @param_user + @param_secret + @param_configfile + @param_payload + @param_app + @param_version + @param_env
51
+ @command = "boxfuse/boxfuse run" + @param_user + @param_secret + @param_configfile + @param_payload + @param_image + @param_env + @param_extra_args
52
52
  context.fold("Deploying application") { context.shell @command }
53
53
  end
54
54
 
@@ -3,7 +3,10 @@ require 'dpl/provider'
3
3
  module DPL
4
4
  class Provider
5
5
  class CloudFiles < Provider
6
- requires 'fog'
6
+ requires 'net-ssh', load: 'net/ssh', version: '~> 2.9.2' # Anything higher requires Ruby 2.x
7
+ requires 'mime-types', load: 'mime/types', version: '~> 2.6.2' # Anything higher requires Ruby 2.x
8
+ requires 'fog-google', load: 'fog/google', version: '< 0.1.1' # Anything higher requires Ruby 2.x
9
+ requires 'fog', version: '< 1.35.0' # Anything higher requires fog-google 0.1.1 and up, which, in turn, requires Ruby 2.x
7
10
  experimental 'Rackspace Cloud Files'
8
11
 
9
12
  def needs_key?
@@ -3,14 +3,13 @@ module DPL
3
3
  class CloudFoundry < Provider
4
4
 
5
5
  def initial_go_tools_install
6
- context.shell 'wget http://go-cli.s3-website-us-east-1.amazonaws.com/releases/latest/cf-cli_amd64.deb -qO temp.deb && sudo dpkg -i temp.deb'
7
- context.shell 'rm temp.deb'
6
+ context.shell 'wget \'https://cli.run.pivotal.io/stable?release=linux64-binary&source=github\' -qO cf-linux-amd64.tgz && tar -zxvf cf-linux-amd64.tgz && rm cf-linux-amd64.tgz'
8
7
  end
9
8
 
10
9
  def check_auth
11
10
  initial_go_tools_install
12
- context.shell "cf api #{option(:api)} #{'--skip-ssl-validation' if options[:skip_ssl_validation]}"
13
- context.shell "cf login --u #{option(:username)} --p #{option(:password)} --o #{option(:organization)} --s #{option(:space)}"
11
+ context.shell "./cf api #{option(:api)} #{'--skip-ssl-validation' if options[:skip_ssl_validation]}"
12
+ context.shell "./cf login --u #{option(:username)} --p #{option(:password)} --o #{option(:organization)} --s #{option(:space)}"
14
13
  end
15
14
 
16
15
  def check_app
@@ -24,8 +23,8 @@ module DPL
24
23
  end
25
24
 
26
25
  def push_app
27
- context.shell "cf push#{manifest}"
28
- context.shell "cf logout"
26
+ context.shell "./cf push#{manifest}"
27
+ context.shell "./cf logout"
29
28
  end
30
29
 
31
30
  def cleanup
@@ -110,7 +110,7 @@ module DPL
110
110
  end
111
111
 
112
112
  def check_auth
113
- log "Logging in with Access Key: #{option(:access_key_id)[-4..-1].rjust(20, '*')}"
113
+ log "Logging in with Access Key: #{access_key_id[-4..-1].rjust(20, '*')}"
114
114
  end
115
115
 
116
116
  def cleanup