dpl-thib 1.10.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|