dpl-thib 1.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.github/CONTRIBUTING.md +173 -0
- data/.github/stale.yml +53 -0
- data/.gitignore +13 -0
- data/.rspec +2 -0
- data/.travis.yml +55 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +5 -0
- data/LICENSE +22 -0
- data/README.md +968 -0
- data/Rakefile +208 -0
- data/bin/dpl +5 -0
- data/dpl-anynines.gemspec +3 -0
- data/dpl-atlas.gemspec +3 -0
- data/dpl-azure_webapps.gemspec +3 -0
- data/dpl-bintray.gemspec +3 -0
- data/dpl-bitballoon.gemspec +3 -0
- data/dpl-bluemix_cloud_foundry.gemspec +3 -0
- data/dpl-boxfuse.gemspec +3 -0
- data/dpl-cargo.gemspec +3 -0
- data/dpl-catalyze.gemspec +3 -0
- data/dpl-chef_supermarket.gemspec +10 -0
- data/dpl-cloud66.gemspec +3 -0
- data/dpl-cloud_files.gemspec +3 -0
- data/dpl-cloud_foundry.gemspec +3 -0
- data/dpl-code_deploy.gemspec +3 -0
- data/dpl-deis.gemspec +3 -0
- data/dpl-elastic_beanstalk.gemspec +3 -0
- data/dpl-engine_yard.gemspec +3 -0
- data/dpl-firebase.gemspec +3 -0
- data/dpl-gae.gemspec +3 -0
- data/dpl-gcs.gemspec +3 -0
- data/dpl-hackage.gemspec +3 -0
- data/dpl-hephy.gemspec +3 -0
- data/dpl-heroku.gemspec +3 -0
- data/dpl-lambda.gemspec +3 -0
- data/dpl-launchpad.gemspec +3 -0
- data/dpl-npm.gemspec +3 -0
- data/dpl-openshift.gemspec +3 -0
- data/dpl-ops_works.gemspec +3 -0
- data/dpl-packagecloud.gemspec +3 -0
- data/dpl-pages.gemspec +3 -0
- data/dpl-puppet_forge.gemspec +3 -0
- data/dpl-pypi.gemspec +3 -0
- data/dpl-releases.gemspec +3 -0
- data/dpl-rubygems.gemspec +3 -0
- data/dpl-s3.gemspec +3 -0
- data/dpl-scalingo.gemspec +3 -0
- data/dpl-script.gemspec +3 -0
- data/dpl-snap.gemspec +3 -0
- data/dpl-surge.gemspec +3 -0
- data/dpl-testfairy.gemspec +3 -0
- data/dpl-transifex.gemspec +3 -0
- data/dpl.gemspec +3 -0
- data/gemspec_helper.rb +51 -0
- data/lib/dpl/cli.rb +66 -0
- data/lib/dpl/error.rb +3 -0
- data/lib/dpl/provider.rb +308 -0
- data/lib/dpl/version.rb +3 -0
- data/notes/engine_yard.md +1 -0
- data/notes/heroku.md +3 -0
- data/spec/cli_spec.rb +36 -0
- data/spec/provider_spec.rb +191 -0
- data/spec/spec_helper.rb +20 -0
- metadata +237 -0
data/Rakefile
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
require 'term/ansicolor'
|
3
|
+
require 'pathname'
|
4
|
+
require 'logger'
|
5
|
+
require './lib/dpl/version'
|
6
|
+
require 'highline'
|
7
|
+
require 'faraday'
|
8
|
+
|
9
|
+
include Term::ANSIColor
|
10
|
+
|
11
|
+
def cli
|
12
|
+
@cli ||= HighLine.new
|
13
|
+
end
|
14
|
+
|
15
|
+
@ready = false
|
16
|
+
|
17
|
+
def logger
|
18
|
+
@logger ||= Logger.new($stdout)
|
19
|
+
end
|
20
|
+
|
21
|
+
def top
|
22
|
+
@top ||= Pathname.new File.expand_path(File.dirname(__FILE__))
|
23
|
+
end
|
24
|
+
|
25
|
+
def gem_version
|
26
|
+
ENV['DPL_VERSION'] || DPL::VERSION
|
27
|
+
end
|
28
|
+
|
29
|
+
def confirm(verb = "release")
|
30
|
+
unless @ready
|
31
|
+
answer = cli.ask "Ready to #{verb} `dpl` version #{gem_version}? (y/n)"
|
32
|
+
if answer !~ /^y/i
|
33
|
+
abort red("Aborting #{verb}")
|
34
|
+
end
|
35
|
+
|
36
|
+
@ready = true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def dpl_bin
|
41
|
+
File.join(Gem.bindir, 'dpl')
|
42
|
+
end
|
43
|
+
|
44
|
+
gemspecs = FileList[File.join(top, "dpl-*.gemspec")]
|
45
|
+
|
46
|
+
providers = gemspecs.map { |f| /dpl-(?<provider>.*)\.gemspec/ =~ f && provider }
|
47
|
+
|
48
|
+
desc "Build dpl gem"
|
49
|
+
file "dpl-#{gem_version}.gem" do
|
50
|
+
logger.info green("Building dpl gem")
|
51
|
+
ruby "-S gem build dpl.gemspec"
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "Install dpl gem"
|
55
|
+
file dpl_bin => "dpl-#{gem_version}.gem" do
|
56
|
+
logger.info green("Installing dpl gem")
|
57
|
+
ruby "-S gem install dpl-#{gem_version}.gem"
|
58
|
+
end
|
59
|
+
|
60
|
+
task :default => [:spec, Rake::FileTask[dpl_bin]] do
|
61
|
+
Rake::Task["spec_providers"].invoke
|
62
|
+
Rake::Task["check_providers"].invoke
|
63
|
+
end
|
64
|
+
|
65
|
+
desc "Run spec on all providers"
|
66
|
+
task :spec_providers do
|
67
|
+
providers.each do |provider|
|
68
|
+
Rake::Task["spec-#{provider}"].invoke
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
desc "Check all provider gems install correctly"
|
73
|
+
task :check_providers do
|
74
|
+
providers.each do |provider|
|
75
|
+
Rake::Task["check-#{provider}"].invoke
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
desc "Build all gems"
|
80
|
+
task :build => "dpl-#{gem_version}.gem" do
|
81
|
+
providers.each do |provider|
|
82
|
+
Rake::Task["dpl-#{provider}-#{gem_version}.gem"].invoke
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
desc "Uninstall all gems"
|
87
|
+
task :uninstall do
|
88
|
+
providers.each do |provider|
|
89
|
+
Rake::Task["uninstall-#{provider}"].invoke
|
90
|
+
end
|
91
|
+
logger.info red("Uninstalling dpl")
|
92
|
+
sh "gem uninstall -aIx dpl"
|
93
|
+
end
|
94
|
+
|
95
|
+
desc "Release all gems"
|
96
|
+
task :release do
|
97
|
+
confirm
|
98
|
+
released = []
|
99
|
+
providers.each do |provider|
|
100
|
+
while !released.include? provider
|
101
|
+
logger.info "checking dpl-#{provider}"
|
102
|
+
|
103
|
+
cli = Faraday.new url: 'https://rubygems.org'
|
104
|
+
|
105
|
+
begin
|
106
|
+
response = cli.get("/api/v2/rubygems/dpl-#{provider}/versions/#{gem_version}.json")
|
107
|
+
if response.success?
|
108
|
+
released << provider
|
109
|
+
logger.info green("dpl-#{provider} #{gem_version} exists")
|
110
|
+
next
|
111
|
+
else
|
112
|
+
begin
|
113
|
+
if Rake::Task["release-#{provider}"].invoke
|
114
|
+
released << provider
|
115
|
+
end
|
116
|
+
rescue => e
|
117
|
+
Rake::Task["release-#{provider}"].reenable
|
118
|
+
end
|
119
|
+
end
|
120
|
+
rescue Faraday::Error => e
|
121
|
+
logger.info yellow("connection failed. retrying")
|
122
|
+
retry
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
logger.info green("Pushing dpl-#{gem_version}.gem")
|
127
|
+
sh "gem push dpl-#{gem_version}.gem"
|
128
|
+
end
|
129
|
+
|
130
|
+
desc "Yank all gems"
|
131
|
+
task :yank, [:version] do |t, args|
|
132
|
+
version = args.version
|
133
|
+
confirm "yank"
|
134
|
+
logger.info green("Yanking `dpl` version #{version}")
|
135
|
+
sh "gem yank dpl -v #{version}"
|
136
|
+
providers.each do |provider|
|
137
|
+
Rake::Task["yank-#{provider}"].invoke
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
task :deep_clean do
|
142
|
+
Rake::Task[:clean].invoke
|
143
|
+
sh "git clean -dfx"
|
144
|
+
end
|
145
|
+
|
146
|
+
task :clean do
|
147
|
+
rm_rf "stubs"
|
148
|
+
rm_rf "vendor"
|
149
|
+
rm_rf "dpl-*.gem"
|
150
|
+
Rake::Task[:uninstall].invoke
|
151
|
+
end
|
152
|
+
|
153
|
+
desc "Run dpl specs"
|
154
|
+
task :spec do
|
155
|
+
ruby '-S rspec spec/cli_spec.rb spec/provider_spec.rb'
|
156
|
+
end
|
157
|
+
|
158
|
+
providers.each do |provider|
|
159
|
+
desc "Write Gemfile-#{provider}"
|
160
|
+
file "Gemfile-#{provider}" do |t|
|
161
|
+
gemfile = top + t.name
|
162
|
+
logger.info green("Writing #{gemfile}")
|
163
|
+
gemfile.write %Q(source 'https://rubygems.org'\ngemspec :name => "dpl-#{provider}"\n)
|
164
|
+
end
|
165
|
+
|
166
|
+
desc %Q(Run dpl-#{provider} specs)
|
167
|
+
task "spec-#{provider}", [:lines] => [Rake::FileTask[dpl_bin], "Gemfile-#{provider}"] do |_t, args|
|
168
|
+
tail = args.lines ? ":#{args.lines}" : ""
|
169
|
+
sh "rm -f $HOME/.npmrc"
|
170
|
+
logger.info green("Running `bundle install` for #{provider}")
|
171
|
+
sh 'bash', '-cl', "bundle install --gemfile=Gemfile-#{provider} --path=vendor/cache/dpl-#{provider} --retry=3 --binstubs=stubs"
|
172
|
+
logger.info green("Running specs for #{provider}")
|
173
|
+
sh "env BUNDLE_GEMFILE=Gemfile-#{provider} ./stubs/rspec spec/provider/#{provider}_spec.rb#{tail}"
|
174
|
+
end
|
175
|
+
|
176
|
+
desc "Build dpl-#{provider} gem"
|
177
|
+
file "dpl-#{provider}-#{gem_version}.gem" do
|
178
|
+
logger.info green("Building dpl-#{provider} gem")
|
179
|
+
ruby "-S gem build --silent dpl-#{provider}.gemspec"
|
180
|
+
end
|
181
|
+
|
182
|
+
desc "Test dpl-#{provider} gem"
|
183
|
+
task "check-#{provider}" => [Rake::FileTask[dpl_bin], "dpl-#{provider}-#{gem_version}.gem"] do
|
184
|
+
logger.info green("Installing dpl-#{provider} gem")
|
185
|
+
sh "gem install --no-post-install-message dpl-#{provider}-#{gem_version}.gem"
|
186
|
+
logger.info green("Testing dpl-#{provider} loads correctly")
|
187
|
+
ruby "-S dpl --provider=#{provider} --skip-cleanup=true --no-deploy"
|
188
|
+
end
|
189
|
+
|
190
|
+
desc "Uninstall dpl-#{provider}"
|
191
|
+
task "uninstall-#{provider}" do
|
192
|
+
logger.info red("Uninstalling dpl-#{provider}")
|
193
|
+
sh "gem uninstall -aIx dpl-#{provider}"
|
194
|
+
end
|
195
|
+
|
196
|
+
desc "Release dpl-#{provider} gem"
|
197
|
+
task "release-#{provider}" => "dpl-#{provider}-#{gem_version}.gem" do
|
198
|
+
confirm
|
199
|
+
logger.info green("Pushing dpl-#{provider}-#{gem_version}.gem")
|
200
|
+
sh "gem push dpl-#{provider}-#{gem_version}.gem"
|
201
|
+
end
|
202
|
+
|
203
|
+
desc "Yank dpl-#{provider}"
|
204
|
+
task "yank-#{provider}" do
|
205
|
+
logger.info green("Yanking dpl-#{provider} version #{gem_version}")
|
206
|
+
sh "gem yank dpl-#{provider} -v #{gem_version}"
|
207
|
+
end
|
208
|
+
end
|
data/bin/dpl
ADDED
data/dpl-atlas.gemspec
ADDED
data/dpl-bintray.gemspec
ADDED
data/dpl-boxfuse.gemspec
ADDED
data/dpl-cargo.gemspec
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require './gemspec_helper'
|
2
|
+
|
3
|
+
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.3.0")
|
4
|
+
gemspec_for 'chef_supermarket', [['rack'], ['mime-types'], ['net-telnet', '~> 0.1.0'], ['chef', '~> 12.0']]
|
5
|
+
elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.4.0")
|
6
|
+
gemspec_for 'chef_supermarket', [['rack'], ['mime-types'], ['chef', '~> 13.0']]
|
7
|
+
else
|
8
|
+
gemspec_for 'chef_supermarket', [['rack'], ['mime-types'], ['chef', '>= 14']]
|
9
|
+
end
|
10
|
+
|
data/dpl-cloud66.gemspec
ADDED
data/dpl-deis.gemspec
ADDED
data/dpl-gae.gemspec
ADDED
data/dpl-gcs.gemspec
ADDED
data/dpl-hackage.gemspec
ADDED
data/dpl-hephy.gemspec
ADDED
data/dpl-heroku.gemspec
ADDED
data/dpl-lambda.gemspec
ADDED
data/dpl-npm.gemspec
ADDED
data/dpl-pages.gemspec
ADDED
data/dpl-pypi.gemspec
ADDED
data/dpl-s3.gemspec
ADDED
data/dpl-script.gemspec
ADDED
data/dpl-snap.gemspec
ADDED
data/dpl-surge.gemspec
ADDED
data/dpl.gemspec
ADDED
data/gemspec_helper.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
$:.unshift File.expand_path("../lib", __FILE__)
|
2
|
+
require "dpl/version"
|
3
|
+
|
4
|
+
def gemspec_for(provider_name=nil, runtime_dependencies=[])
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
|
7
|
+
s.name = ["dpl", 'thib'].compact.join("-")
|
8
|
+
s.author = "Konstantin Haase"
|
9
|
+
s.email = "konstantin.mailinglists@googlemail.com"
|
10
|
+
s.homepage = "https://github.com/travis-ci/dpl"
|
11
|
+
s.summary = %q{deploy tool}
|
12
|
+
s.description = %q{deploy tool abstraction for clients}
|
13
|
+
s.license = 'MIT'
|
14
|
+
|
15
|
+
s.require_path = 'lib'
|
16
|
+
s.required_ruby_version = '>= 2.2'
|
17
|
+
|
18
|
+
# set up version
|
19
|
+
s.version = ENV['DPL_VERSION'] || DPL::VERSION
|
20
|
+
|
21
|
+
# dependencies
|
22
|
+
if provider_name
|
23
|
+
s.add_runtime_dependency 'dpl', s.version
|
24
|
+
end
|
25
|
+
|
26
|
+
runtime_dependencies.each do |part|
|
27
|
+
s.add_runtime_dependency *part
|
28
|
+
end
|
29
|
+
|
30
|
+
s.add_development_dependency 'rspec'
|
31
|
+
s.add_development_dependency 'rspec-its'
|
32
|
+
s.add_development_dependency 'rake'
|
33
|
+
s.add_development_dependency 'json_pure'
|
34
|
+
s.add_development_dependency 'tins'
|
35
|
+
s.add_development_dependency 'coveralls'
|
36
|
+
s.add_development_dependency 'highline'
|
37
|
+
s.add_development_dependency 'term-ansicolor'
|
38
|
+
s.add_development_dependency 'faraday'
|
39
|
+
|
40
|
+
# set up files
|
41
|
+
if provider_name
|
42
|
+
s.files = `git ls-files`.split("\n").grep(Regexp.new provider_name.to_s)
|
43
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n").grep(Regexp.new provider_name.to_s)
|
44
|
+
else
|
45
|
+
s.files = `git ls-files`.split("\n").reject {|f| f =~ Regexp.new("provider/")}
|
46
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n").reject {|f| f =~ Regexp.new("provider/")}
|
47
|
+
end
|
48
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }.grep(Regexp.new provider_name.to_s)
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|