travis_dpl_test 2.0.3.beta.4.ror
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +172 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +392 -0
- data/Gemfile +32 -0
- data/Gemfile.lock +611 -0
- data/LICENSE +19 -0
- data/README.md +2744 -0
- data/Rakefile +210 -0
- data/bin/dpl +11 -0
- data/config/transliterate.yml +733 -0
- data/dpl.gemspec +23 -0
- data/lib/dpl/assets/atlas/install +19 -0
- data/lib/dpl/assets/convox/install +11 -0
- data/lib/dpl/assets/dpl/README.erb.md +138 -0
- data/lib/dpl/assets/dpl/git_ssh +8 -0
- data/lib/dpl/assets/git/detect_private_key +8 -0
- data/lib/dpl/assets/hephy/filter_log +3 -0
- data/lib/dpl/assets/pypi/install +4 -0
- data/lib/dpl/assets/scalingo/install +6 -0
- data/lib/dpl/cli.rb +100 -0
- data/lib/dpl/ctx/bash.rb +549 -0
- data/lib/dpl/ctx/test.rb +255 -0
- data/lib/dpl/ctx.rb +4 -0
- data/lib/dpl/helper/assets.rb +38 -0
- data/lib/dpl/helper/cmd.rb +169 -0
- data/lib/dpl/helper/config_file.rb +49 -0
- data/lib/dpl/helper/cookbook_site_streaming_uploader.rb +249 -0
- data/lib/dpl/helper/env.rb +92 -0
- data/lib/dpl/helper/github.rb +22 -0
- data/lib/dpl/helper/interpolate.rb +160 -0
- data/lib/dpl/helper/memoize.rb +23 -0
- data/lib/dpl/helper/squiggle.rb +24 -0
- data/lib/dpl/helper/transliterate.rb +13 -0
- data/lib/dpl/helper/wrap.rb +11 -0
- data/lib/dpl/helper/zip.rb +71 -0
- data/lib/dpl/provider/dsl.rb +410 -0
- data/lib/dpl/provider/examples.rb +132 -0
- data/lib/dpl/provider/status.rb +61 -0
- data/lib/dpl/provider.rb +651 -0
- data/lib/dpl/providers/anynines.rb +71 -0
- data/lib/dpl/providers/azure_web_apps.rb +63 -0
- data/lib/dpl/providers/bintray.rb +324 -0
- data/lib/dpl/providers/bluemixcloudfoundry.rb +98 -0
- data/lib/dpl/providers/boxfuse.rb +52 -0
- data/lib/dpl/providers/cargo.rb +32 -0
- data/lib/dpl/providers/chef_supermarket.rb +132 -0
- data/lib/dpl/providers/cloud66.rb +46 -0
- data/lib/dpl/providers/cloudfiles.rb +62 -0
- data/lib/dpl/providers/cloudformation.rb +281 -0
- data/lib/dpl/providers/cloudfoundry.rb +89 -0
- data/lib/dpl/providers/codedeploy.rb +190 -0
- data/lib/dpl/providers/convox.rb +130 -0
- data/lib/dpl/providers/datica.rb +64 -0
- data/lib/dpl/providers/ecr.rb +129 -0
- data/lib/dpl/providers/elasticbeanstalk.rb +207 -0
- data/lib/dpl/providers/engineyard.rb +113 -0
- data/lib/dpl/providers/firebase.rb +45 -0
- data/lib/dpl/providers/flynn.rb +35 -0
- data/lib/dpl/providers/gae.rb +78 -0
- data/lib/dpl/providers/gcs.rb +132 -0
- data/lib/dpl/providers/git_push.rb +273 -0
- data/lib/dpl/providers/gleis.rb +74 -0
- data/lib/dpl/providers/hackage.rb +53 -0
- data/lib/dpl/providers/hephy.rb +107 -0
- data/lib/dpl/providers/heroku/api.rb +123 -0
- data/lib/dpl/providers/heroku/git.rb +54 -0
- data/lib/dpl/providers/heroku.rb +111 -0
- data/lib/dpl/providers/lambda.rb +211 -0
- data/lib/dpl/providers/launchpad.rb +80 -0
- data/lib/dpl/providers/netlify.rb +38 -0
- data/lib/dpl/providers/npm.rb +130 -0
- data/lib/dpl/providers/nuget.rb +41 -0
- data/lib/dpl/providers/openshift.rb +52 -0
- data/lib/dpl/providers/opsworks.rb +146 -0
- data/lib/dpl/providers/packagecloud.rb_ +194 -0
- data/lib/dpl/providers/pages/api.rb +106 -0
- data/lib/dpl/providers/pages/git.rb +262 -0
- data/lib/dpl/providers/pages.rb +18 -0
- data/lib/dpl/providers/puppetforge.rb +50 -0
- data/lib/dpl/providers/pypi.rb +125 -0
- data/lib/dpl/providers/releases.rb +234 -0
- data/lib/dpl/providers/rubygems.rb +97 -0
- data/lib/dpl/providers/s3.rb +251 -0
- data/lib/dpl/providers/scalingo.rb +69 -0
- data/lib/dpl/providers/script.rb +32 -0
- data/lib/dpl/providers/snap.rb +68 -0
- data/lib/dpl/providers/surge.rb +59 -0
- data/lib/dpl/providers/testfairy.rb +101 -0
- data/lib/dpl/providers/transifex.rb +72 -0
- data/lib/dpl/providers.rb +48 -0
- data/lib/dpl/string_ext.rb +23 -0
- data/lib/dpl/support/aws_sdk_patch.rb +26 -0
- data/lib/dpl/support/gems.rb +73 -0
- data/lib/dpl/support/gstore_patch.rb +8 -0
- data/lib/dpl/support/version.rb +84 -0
- data/lib/dpl/version.rb +5 -0
- data/lib/dpl.rb +23 -0
- data/status.json +237 -0
- metadata +161 -0
data/dpl.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH << 'lib'
|
4
|
+
|
5
|
+
require 'dpl/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.version = Dpl::VERSION
|
9
|
+
s.name = 'travis_dpl_test'
|
10
|
+
s.authors = ['Konstantin Haase', 'Hiro Asari', 'Sven Fuchs']
|
11
|
+
s.email = ['konstantin@travis-ci.com', 'hiro@travis-ci.com', 'sven@travis-ci.com']
|
12
|
+
s.homepage = 'https://github.com/travis-ci/dpl'
|
13
|
+
s.summary = 'Dpl runs deployments at Travis CI'
|
14
|
+
s.description = 'Dpl (dee-pee-ell) is a tool made for continuous deployment, running deployments at Travis CI.'
|
15
|
+
s.license = 'MIT'
|
16
|
+
s.require_path = 'lib'
|
17
|
+
s.required_ruby_version = '>= 3'
|
18
|
+
|
19
|
+
s.executables = ['dpl']
|
20
|
+
s.files = Dir['{config/**/*,lib/**/*,[A-Z]*}']
|
21
|
+
|
22
|
+
s.add_development_dependency 'rake', '~> 13.0'
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
if ! command -v atlas-upload &>/dev/null ; then
|
2
|
+
mkdir -p $HOME/bin $HOME/gopath/src
|
3
|
+
export PATH="$HOME/bin:$PATH"
|
4
|
+
|
5
|
+
if ! command -v gimme &>/dev/null ; then
|
6
|
+
curl -sL -o $HOME/bin/gimme https://raw.githubusercontent.com/meatballhat/gimme/master/gimme
|
7
|
+
chmod +x $HOME/bin/gimme
|
8
|
+
fi
|
9
|
+
|
10
|
+
if [ -z $GOPATH ]; then
|
11
|
+
export GOPATH="$HOME/gopath"
|
12
|
+
else
|
13
|
+
export GOPATH="$HOME/gopath:$GOPATH"
|
14
|
+
fi
|
15
|
+
eval "$(gimme 1.6)" &> /dev/null
|
16
|
+
|
17
|
+
go get github.com/hashicorp/atlas-upload-cli
|
18
|
+
cp $HOME/gopath/bin/atlas-upload-cli $HOME/bin/atlas-upload
|
19
|
+
fi
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
if ! command -v convox &> /dev/null; then
|
4
|
+
echo "Downloading convox CLI"
|
5
|
+
mkdir -p $HOME/bin
|
6
|
+
export PATH="$HOME/bin:$PATH"
|
7
|
+
curl -sL -o $HOME/bin/convox %{install_url}
|
8
|
+
chmod +x $HOME/bin/convox
|
9
|
+
else
|
10
|
+
echo "Convox CLI exists. Skipping installation"
|
11
|
+
fi
|
@@ -0,0 +1,138 @@
|
|
1
|
+
# Dpl [![Build Status](https://travis-ci.com/travis-ci/dpl.svg?branch=master)](https://travis-ci.com/travis-ci/dpl) [![Code Climate](https://codeclimate.com/github/travis-ci/dpl.svg)](https://codeclimate.com/github/travis-ci/dpl) [![Coverage Status](https://coveralls.io/repos/travis-ci/dpl/badge.svg?branch=master&service=github&cache=2019-08-09_17:00)](https://coveralls.io/github/travis-ci/dpl?branch=master) [![Gem Version](https://img.shields.io/gem/v/dpl)](http://rubygems.org/gems/dpl) [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/travis-ci/dpl)
|
2
|
+
|
3
|
+
This version of the README documents dpl v2, the next major version of dpl.
|
4
|
+
The README for dpl v1, the version that is currently used in production on
|
5
|
+
Travis CI can be found [here](https://github.com/travis-ci/dpl/blob/v1/README.md).
|
6
|
+
|
7
|
+
Dpl is command line tool for deploying code, html, packages, or build artifacts
|
8
|
+
to various service providers.
|
9
|
+
|
10
|
+
It is tightly integrated into Travis CI's [deployment integration](https://docs.travis-ci.com/user/deployment),
|
11
|
+
but also used, and recommended by others, such as [GitLab](https://docs.gitlab.com/ee/ci/examples/deployment/).
|
12
|
+
|
13
|
+
It is maintained by Travis CI, largely community driven, and it has existed
|
14
|
+
since 2013. If you find support your preferred deployment target missing,
|
15
|
+
please do not hesitate to get in touch, and we'll help you [add it](#contributing-to-dpl).
|
16
|
+
|
17
|
+
## Table of Contents
|
18
|
+
|
19
|
+
* [Requirements](#requirements)
|
20
|
+
* [Installation](#installation)
|
21
|
+
* [Usage](#usage)
|
22
|
+
* [Maturity Levels](#maturity-levels)
|
23
|
+
* [Supported Providers](#supported-providers)
|
24
|
+
* [Contributing to Dpl](#contributing-to-dpl)
|
25
|
+
* [Old Issues](#old-issues)
|
26
|
+
* [Code of Conduct](#code-of-conduct)
|
27
|
+
* [License](#license)
|
28
|
+
* [Credits](#credits)
|
29
|
+
|
30
|
+
## Requirements
|
31
|
+
|
32
|
+
Dpl requires Ruby 2.3 or later.
|
33
|
+
|
34
|
+
Depending on the deployment target dpl might require additional runtimes (e.g.
|
35
|
+
Go, Node.js, or Python) to be installed. It also might require sudo access in
|
36
|
+
order to install a Debian package.
|
37
|
+
|
38
|
+
Dpl is generally optimized for usage on Linux systems.
|
39
|
+
|
40
|
+
## Installation
|
41
|
+
|
42
|
+
This version of dpl is currently released as an `alpha` preview release. In
|
43
|
+
order to install it, add the `--pre` flag:
|
44
|
+
|
45
|
+
```
|
46
|
+
gem install dpl --pre
|
47
|
+
```
|
48
|
+
|
49
|
+
## Usage
|
50
|
+
|
51
|
+
Dpl is meant and optimized for usage in ephemeral build environments, such
|
52
|
+
as Travis CI, or any other CI/CD pipeline.
|
53
|
+
|
54
|
+
Dpl is integrated to Travis CI's build configuration and build script compilation
|
55
|
+
tooling, so all you need to do is add the proper configuration to your `.travis.yml`
|
56
|
+
file. Please refer to [the documentation](https://docs.travis-ci.com/user/deployment)
|
57
|
+
for details.
|
58
|
+
|
59
|
+
For usage outside of Travis CI dpl can be executed as follows. Please refer to
|
60
|
+
the respective [providers](#supported-providers) for details.
|
61
|
+
|
62
|
+
```
|
63
|
+
dpl [provider] [options]
|
64
|
+
```
|
65
|
+
|
66
|
+
Dpl can be used locally, e.g. on your development machine, but it might leave
|
67
|
+
artifacts that may alter the behaviour of your system. If you encounter this
|
68
|
+
behaviour and it presents a serious issue to you then please open an
|
69
|
+
[issue](https://github.com/travis-ci/dpl/issues/new).
|
70
|
+
|
71
|
+
### Cleaning up the Git working directory
|
72
|
+
|
73
|
+
Dpl v1 has cleaned up the Git working directory by default, using `git stash
|
74
|
+
--all`. The default for this option has been changed in dpl v2, and users now
|
75
|
+
need to opt in to cleaning up any left over artifacts from the build process
|
76
|
+
by passing the option `--cleanup`.
|
77
|
+
|
78
|
+
The status of the working directory is relevant only to providers that package
|
79
|
+
and push it to the respective remote service (e.g. `heroku` when using the
|
80
|
+
`api` strategy, package registry providers, etc.). Most providers will either
|
81
|
+
push the latest Git commit, or pull code from a remote repository.
|
82
|
+
|
83
|
+
## Maturity Levels
|
84
|
+
|
85
|
+
In order to communicate the current development status and maturity of dpl's
|
86
|
+
support for a particular service the respective provider is marked with one of
|
87
|
+
the following maturity levels, according to the given criteria:
|
88
|
+
|
89
|
+
* `dev` - the provider is in development (initial level)
|
90
|
+
* `alpha` - the provider is fully tested
|
91
|
+
* `beta` - the provider has been in alpha for at least a month, and successful real-world production deployments have been observed
|
92
|
+
* `stable` - the provider has been in beta for at least a month, and there are no open issues that qualify as critical (such as deployments failing, documented functionality broken, etc)
|
93
|
+
|
94
|
+
## Supported Providers
|
95
|
+
|
96
|
+
Dpl supports the following providers:
|
97
|
+
|
98
|
+
<% providers.each do |key, name| -%>
|
99
|
+
* <%= "[#{name}](##{name.split(/\W+/).compact.join('-').downcase})" %>
|
100
|
+
<% end -%>
|
101
|
+
|
102
|
+
<% providers.each do |key, name|%>
|
103
|
+
### <%= name %>
|
104
|
+
|
105
|
+
<%= header(key) %>
|
106
|
+
|
107
|
+
```
|
108
|
+
<%= help(key) %>
|
109
|
+
```
|
110
|
+
|
111
|
+
<%= footer(key) %>
|
112
|
+
<% end -%>
|
113
|
+
|
114
|
+
<%= File.read('./CONTRIBUTING.md').gsub(/^#/, '##') %>
|
115
|
+
|
116
|
+
## Old Issues
|
117
|
+
|
118
|
+
If an issue has been left open and untouched for 90 days or more, we
|
119
|
+
automatically close them. We do this to ensure that new issues are more easily
|
120
|
+
noticeable, and that old issues that have been resolved or are no longer
|
121
|
+
relevant are closed. You can read more about this [here](https://blog.travis-ci.com/2018-03-09-closing-old-issues).
|
122
|
+
|
123
|
+
## Code of Conduct
|
124
|
+
|
125
|
+
Please see [our code of conduct](CODE_OF_CONDUCT.md) for how to interact with
|
126
|
+
this project and its community.
|
127
|
+
|
128
|
+
## License
|
129
|
+
|
130
|
+
Dpl is licensed under the [MIT License](https://github.com/travis-ci/dpl/blob/master/LICENSE).
|
131
|
+
|
132
|
+
## Credits
|
133
|
+
|
134
|
+
This tool would not exist without your help.
|
135
|
+
|
136
|
+
A huge thank you goes out to all of our current and past [contributors](https://github.com/travis-ci/dpl/graphs/contributors):
|
137
|
+
|
138
|
+
<%= contributors %>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
curl --remote-name --location https://cli-dl.scalingo.io/release/scalingo_latest_linux_amd64.tar.gz && \
|
3
|
+
tar -zxvf scalingo_latest_linux_amd64.tar.gz && \
|
4
|
+
mv scalingo_*_linux_amd64/scalingo . && \
|
5
|
+
rm scalingo_latest_linux_amd64.tar.gz && \
|
6
|
+
rm -r scalingo_*_linux_amd64
|
data/lib/dpl/cli.rb
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cl'
|
4
|
+
|
5
|
+
module Dpl
|
6
|
+
class Cli < Cl
|
7
|
+
def self.new(ctx = nil, name = 'dpl')
|
8
|
+
ctx ||= Dpl::Ctx::Bash.new
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def run(args)
|
13
|
+
super
|
14
|
+
rescue UnknownCmd => e
|
15
|
+
unknown_provider(e)
|
16
|
+
rescue UnknownOption => e
|
17
|
+
unknown_option(e)
|
18
|
+
rescue Cl::Error, Error => e
|
19
|
+
error(e)
|
20
|
+
end
|
21
|
+
|
22
|
+
def runner(args)
|
23
|
+
super(normalize(args))
|
24
|
+
end
|
25
|
+
|
26
|
+
def normalize(args)
|
27
|
+
args = unescape(args)
|
28
|
+
args = untaint(args)
|
29
|
+
args = with_cmd_opts(args, provider: 0, strategy: 1)
|
30
|
+
args = with_strategy_default(args, :strategy) # should be a generic dispatch feature in Cl
|
31
|
+
args
|
32
|
+
end
|
33
|
+
|
34
|
+
def unescape(args)
|
35
|
+
args.map { |arg| arg.gsub('\\n', "\n") }
|
36
|
+
end
|
37
|
+
|
38
|
+
# Tainting is being used for automatically obfuscating values for secure
|
39
|
+
# options, so we want to untaint all incoming args here.
|
40
|
+
def untaint(args)
|
41
|
+
args.map(&:dup).each(&:whitelist)
|
42
|
+
end
|
43
|
+
|
44
|
+
def with_cmd_opts(args, cmds)
|
45
|
+
cmds.inject(args) do |args, (cmd, pos)|
|
46
|
+
with_cmd_opt(args, cmd, pos)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def with_cmd_opt(args, cmd, pos)
|
51
|
+
return args unless opt = args.detect { |arg| arg.start_with?("--#{cmd}") }
|
52
|
+
|
53
|
+
ix = args.index(opt)
|
54
|
+
args.delete(opt)
|
55
|
+
value = opt.include?('=') ? opt.split('=').last : args.delete_at(ix)
|
56
|
+
args.insert(pos, value)
|
57
|
+
args
|
58
|
+
end
|
59
|
+
|
60
|
+
STRATEGIES = {
|
61
|
+
'heroku' => 'api',
|
62
|
+
'pages' => 'git'
|
63
|
+
}.freeze
|
64
|
+
|
65
|
+
def with_strategy_default(args, _cmd)
|
66
|
+
return args unless default = STRATEGIES[args.first]
|
67
|
+
|
68
|
+
args.insert(1, default) if args[1].nil? || args[1].to_s.start_with?('--')
|
69
|
+
args
|
70
|
+
end
|
71
|
+
|
72
|
+
def error(err)
|
73
|
+
msg = "\e[31m#{err.message}\e[0m"
|
74
|
+
msg = [msg, *err.backtrace].join("\n") if backtrace?(err)
|
75
|
+
abort msg
|
76
|
+
end
|
77
|
+
|
78
|
+
def backtrace?(err)
|
79
|
+
err.respond_to?(:backtrace?) && err.backtrace?
|
80
|
+
end
|
81
|
+
|
82
|
+
def unknown_provider(err)
|
83
|
+
msg = "\e[31m#{err.message}\e[0m"
|
84
|
+
msg << "\nDid you mean: #{err.suggestions.join(', ')}?" if err.suggestions.any?
|
85
|
+
abort msg
|
86
|
+
end
|
87
|
+
|
88
|
+
def unknown_option(err)
|
89
|
+
msg = "\e[31m#{err.message}\e[0m"
|
90
|
+
msg << "\nDid you mean: #{err.suggestions.join(', ')}?" if err.suggestions.any?
|
91
|
+
abort msg
|
92
|
+
end
|
93
|
+
|
94
|
+
def suggestions(name)
|
95
|
+
return [] unless defined?(DidYouMean)
|
96
|
+
|
97
|
+
DidYouMean::SpellChecker.new(dictionary: providers).correct(name)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|