poise-profiler 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.kitchen.yml +3 -0
- data/.travis.yml +21 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +32 -0
- data/LICENSE +201 -0
- data/README.md +58 -0
- data/Rakefile +17 -0
- data/chef/recipes/default.rb +17 -0
- data/lib/poise_profiler.rb +21 -0
- data/lib/poise_profiler/cheftie.rb +37 -0
- data/lib/poise_profiler/handler.rb +99 -0
- data/lib/poise_profiler/version.rb +20 -0
- data/poise-profiler.gemspec +41 -0
- data/test/cookbook/metadata.rb +18 -0
- data/test/cookbook/recipes/default.rb +26 -0
- data/test/docker/docker.ca +29 -0
- data/test/docker/docker.pem +83 -0
- data/test/gemfiles/chef-12.0.gemfile +19 -0
- data/test/gemfiles/chef-12.1.gemfile +19 -0
- data/test/gemfiles/chef-12.2.gemfile +19 -0
- data/test/gemfiles/chef-12.3.gemfile +19 -0
- data/test/gemfiles/chef-12.4.gemfile +19 -0
- data/test/gemfiles/chef-12.5.gemfile +19 -0
- data/test/gemfiles/chef-12.6.gemfile +19 -0
- data/test/gemfiles/chef-12.gemfile +19 -0
- data/test/gemfiles/master.gemfile +21 -0
- data/test/spec/default_spec.rb +215 -0
- data/test/spec/integration_spec.rb +31 -0
- data/test/spec/spec_helper.rb +19 -0
- metadata +147 -0
@@ -0,0 +1,99 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
begin
|
18
|
+
require 'chef/chef_class'
|
19
|
+
rescue LoadError
|
20
|
+
# ¯\_(ツ)_/¯ Chef < 12.3.
|
21
|
+
end
|
22
|
+
require 'chef/event_dispatch/base'
|
23
|
+
require 'chef/json_compat'
|
24
|
+
|
25
|
+
|
26
|
+
module PoiseProfiler
|
27
|
+
class Handler < Chef::EventDispatch::Base
|
28
|
+
include Singleton
|
29
|
+
|
30
|
+
# Used in {#monkey_patch_old_chef}
|
31
|
+
# @api private
|
32
|
+
attr_writer :events, :monkey_patched
|
33
|
+
|
34
|
+
def resource_completed(resource)
|
35
|
+
key = resource.resource_name.to_s.end_with?('_test') ? :test_resources : :resources
|
36
|
+
timers[key]["#{resource.resource_name}[#{resource.name}]"] += resource.elapsed_time
|
37
|
+
timers[:classes][resource.class.name] += resource.elapsed_time
|
38
|
+
end
|
39
|
+
|
40
|
+
def run_completed(_node)
|
41
|
+
Chef::Log.debug('Processing poise-profiler data')
|
42
|
+
puts('Poise Profiler:')
|
43
|
+
puts_timer(:resources, 'Resource')
|
44
|
+
puts_timer(:test_resources, 'Test Resource') unless timers[:test_resources].empty?
|
45
|
+
puts_timer(:classes, 'Class')
|
46
|
+
puts("Profiler JSON: #{Chef::JSONCompat.to_json(timers)}")
|
47
|
+
puts('')
|
48
|
+
end
|
49
|
+
|
50
|
+
def run_failed(_run_error)
|
51
|
+
run_completed(nil)
|
52
|
+
end
|
53
|
+
|
54
|
+
def reset!
|
55
|
+
timers.clear
|
56
|
+
@events = nil
|
57
|
+
end
|
58
|
+
|
59
|
+
# Inject this instance for Chef < 12.3. Don't call this on newer Chef.
|
60
|
+
def monkey_patch_old_chef!
|
61
|
+
return if @monkey_patched
|
62
|
+
require 'chef/event_dispatch/dispatcher'
|
63
|
+
instance = self
|
64
|
+
orig_method = Chef::EventDispatch::Dispatcher.instance_method(:library_file_loaded)
|
65
|
+
Chef::EventDispatch::Dispatcher.send(:define_method, :library_file_loaded) do |filename|
|
66
|
+
instance.events = self
|
67
|
+
instance.monkey_patched = false
|
68
|
+
@subscribers << instance
|
69
|
+
Chef::EventDispatch::Dispatcher.send(:define_method, :library_file_loaded, orig_method)
|
70
|
+
orig_method.bind(self).call(filename)
|
71
|
+
end
|
72
|
+
@monkey_patched = true
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def timers
|
78
|
+
@timers ||= Hash.new {|hash, key| hash[key] = Hash.new(0) }
|
79
|
+
end
|
80
|
+
|
81
|
+
def puts_timer(key, label)
|
82
|
+
puts "Time #{label}"
|
83
|
+
puts "------------ -------------"
|
84
|
+
timers[key].sort_by{ |k,v| -v }.each do |val, run_time|
|
85
|
+
puts "%12f %s" % [run_time, val]
|
86
|
+
end
|
87
|
+
puts ""
|
88
|
+
end
|
89
|
+
|
90
|
+
def puts(line)
|
91
|
+
events.stream_output(:profiler, line+"\n")
|
92
|
+
end
|
93
|
+
|
94
|
+
def events
|
95
|
+
@events ||= Chef.run_context.events
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
|
18
|
+
module PoiseProfiler
|
19
|
+
VERSION = '1.0.0'
|
20
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2015, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
lib = File.expand_path('../lib', __FILE__)
|
18
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
19
|
+
require 'poise_profiler/version'
|
20
|
+
|
21
|
+
Gem::Specification.new do |spec|
|
22
|
+
spec.name = 'poise-profiler'
|
23
|
+
spec.version = PoiseProfiler::VERSION
|
24
|
+
spec.authors = ['Noah Kantrowitz']
|
25
|
+
spec.email = %w{noah@coderanger.net}
|
26
|
+
spec.description = 'A Chef cookbook for profiling performance in CI.'
|
27
|
+
spec.summary = spec.description
|
28
|
+
spec.homepage = 'https://github.com/poise/poise-profiler'
|
29
|
+
spec.license = 'Apache 2.0'
|
30
|
+
|
31
|
+
spec.files = `git ls-files`.split($/)
|
32
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
33
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
34
|
+
spec.require_paths = %w{lib}
|
35
|
+
|
36
|
+
spec.add_dependency 'halite', '~> 1.0'
|
37
|
+
|
38
|
+
spec.add_development_dependency 'mixlib-shellout', '~> 2.0'
|
39
|
+
spec.add_development_dependency 'poise', '~> 2.0'
|
40
|
+
spec.add_development_dependency 'poise-boiler', '~> 1.0'
|
41
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
name 'poise-profiler_test'
|
18
|
+
depends 'poise-profiler'
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
# Some test resources to make sure the handler works.
|
18
|
+
ruby_block 'test' do
|
19
|
+
block { sleep(1) }
|
20
|
+
end
|
21
|
+
|
22
|
+
file '/test' do
|
23
|
+
content 'test'
|
24
|
+
end
|
25
|
+
|
26
|
+
execute 'sleep 1'
|
@@ -0,0 +1,29 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIFCzCCAvOgAwIBAgIJAJTJgn9tSdKmMA0GCSqGSIb3DQEBBQUAMA0xCzAJBgNV
|
3
|
+
BAMTAkNBMB4XDTE1MDExMjIwMjk0M1oXDTI1MDEwOTIwMjk0M1owDTELMAkGA1UE
|
4
|
+
AxMCQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDDPFn79sz1kQLk
|
5
|
+
rAS5z/zfCMXuE+V9IEmGXJeSprsXrv+AdjFpVDr52lpvZ36i2gixk8grcWtFqQMC
|
6
|
+
jB1c2HUe69ebC89rHSPmGCx5eRcWQPQG29fdH/nC+I34EbYadJB7PdzkvTj0KuN8
|
7
|
+
YfQj6lhwqltYiELZhuGoXcuhwZ5SC4VcJ2cdvx7oQPECLlMft8dhWyk15WGhp0jL
|
8
|
+
2H5noGajz9IFzHieoKJyh+oYA3BYCugpNBLTweNw+NuRxMwHixftvkXvlqKeZ402
|
9
|
+
4iwmIO8MG9oUxXs6D85gv6tJOau+dD1EDYH9VzYwSvLto3QBzJX0NiHKlmeq4BG2
|
10
|
+
1V3n+N1kZmMDgEtX2TDFsGHlUo77Gw0ob/w7qJU+7GAXRwWw7TPhMBLSkOlGM726
|
11
|
+
Lq9p5+7mK1YThk0PmlsSAU6/fT79PSdrYpTKr3WkBTnwd76df+Koh8fpN4BHf9L4
|
12
|
+
9bWSYc9Nb9/wp0md9xhzjjVHargpVxZmNH7bcIa8YA9tYaW+oifo2hfb7o0qhGQ1
|
13
|
+
8pES3LPUi/qtZkBYUQdh8/mkqTvRjeS446iUmYWcrHyiIzQk/cMbrAVYOi3Xnq0J
|
14
|
+
ui/r48iv7uLhpcDEQl2mENr0syygrPthVKa4gYHAZ0tK3pfe0yUGMiwS2D23xMR4
|
15
|
+
WYLWLwYSK0j1JYpEbsBNS3wZX91FIwIDAQABo24wbDAdBgNVHQ4EFgQU1j2CHhNt
|
16
|
+
sWAvDmu49yRFfHRBp9kwPQYDVR0jBDYwNIAU1j2CHhNtsWAvDmu49yRFfHRBp9mh
|
17
|
+
EaQPMA0xCzAJBgNVBAMTAkNBggkAlMmCf21J0qYwDAYDVR0TBAUwAwEB/zANBgkq
|
18
|
+
hkiG9w0BAQUFAAOCAgEAD7apefon65k3Xey7vsTb/A18m7JwBNLB48ILNcSKVgO1
|
19
|
+
iuSMCGNQ+4bNU4o9cTpRoijB3w4RY7IIaDlRcUg8FIO6kgEhjhiAjSSqJAaajOFc
|
20
|
+
urxOmi9E7xYmTDqLxEGF5/5vaG4olAi3tRgZNd2+Ue0ANZ1KMh3ZkE0nA5v1zb/g
|
21
|
+
Ax/Zs6tATdoG6umMQg8TjiKucwi9J9he+xJ5y0E77/RrdNL9aKcU47wTAwUkokpb
|
22
|
+
u1JFo1da3yZLDwQuBN5DCc4pgPgxXlfa6DnzQM1veKIhP5sa9T4sCC8S4IjGFenw
|
23
|
+
yl4xm+9AOZQeLFpczqgVJhun5P41syepnZ433hWoLXKLHd1n0ILgw9JyVF686LIt
|
24
|
+
bSar3+krmFuzdRCfet0kJR762p8jmxJOwL+KQGELGlkleJK48a+ruWIeeulZhpJ5
|
25
|
+
tF4QJxytq4aXpjeFma0Yi/0rQuNi3H1QIW5YPnFL0XlJ8Rvr8gSVc1zhkM9rsnxX
|
26
|
+
l9Pun0flP/mf/ulOa020hQUPqEYjSfdJOkLy2gZDvHRL2LRXNjGHoteGNJCq34Q1
|
27
|
+
wQerxofHn+Hpp61+Ebj+RLK0KJE+QeP3T8rL30aSSzQZQZJVI0ict5C71kiTbQnw
|
28
|
+
Z0vE6LquvFfMSqfPLt6uuCRVywBjLx19B7TuMf/DgAD+lR+1FFGKy1hO2Q1jfCY=
|
29
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,83 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIFBzCCAu+gAwIBAgIBKDANBgkqhkiG9w0BAQUFADANMQswCQYDVQQDEwJDQTAe
|
3
|
+
Fw0xNjAxMjYwNzMxNDNaFw0yNjAxMjMwNzMxNDNaMGgxKTAnBgNVBAMTIERvY2tl
|
4
|
+
ciBjbGllbnQgZm9yIHBvaXNlLXByb2ZpbGVyMRcwFQYDVQQLEw5raXRjaGVuLWRv
|
5
|
+
Y2tlcjEiMCAGA1UEChMZQ29kZXJhbmdlciBDb25zdWx0aW5nIExMQzCCAiIwDQYJ
|
6
|
+
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAKm+qCToizXT0XlWv9mFNTys39r5/OpJ
|
7
|
+
NcTFrvAi70McCa3VZabWeW3wBB5Q1FQsuF59j4/flzHVohEMd/VIW24qFa1Sy9SW
|
8
|
+
08Nd8zHrKKZCHSCXujeiQWFuwAhJJOlL+/JWIZwDPMBrhJugGpLcOR+YksyU5SL3
|
9
|
+
X/i/Yzl6gxlK06aHQwFQpi5lhntqSdS2c7R5zdBfONaidN4WkxgPIkGPPIerM4r4
|
10
|
+
uRtN9S2BMUisiNEBN/0NqKJYFfWM2Yw4dYkigUc2YhmK5U6bKyXWMSqYAeNN75OI
|
11
|
+
NMpILZFfUU9YGpGl4NJPqT/5XgOixotatH3mA/UUs0oy7j6nm+S6CO2hoF0yCmaJ
|
12
|
+
NxyoMWzzxTukP9+olDks6ID9xbiC9QTMRC1qKZyeQccCBh4rv8jKB8ojmsnR3XUY
|
13
|
+
qvXaTNqUIXBHS+yarVhXSusYeeGLsqAHYRd+qZ1iQ/9W07KfzhJrhNvePrNFHTYO
|
14
|
+
4WTHPqygkJb7U2c3KXaH4q12ajArNN2HHGkZ1EFBCSTDYG1yxdTBQu7TDxN/BBqG
|
15
|
+
WOtvTbO+z8RzQZWUg6JlR7Ajzfjsz52SbFRRGrKj3lliZK1EJWyPlgK6eWt/y0vT
|
16
|
+
wDglM1wNfaAuP22BS0gqBrMoehUQxVMHnzceZ0He8KIgwXmRrKEagi7a14n43K4j
|
17
|
+
sbffEyp3Jm4TAgMBAAGjFzAVMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3
|
18
|
+
DQEBBQUAA4ICAQC5yKW1krPGzshIfa5qV9aW9v2+lcoKVkPklxaFhLB2ZmZYCxtQ
|
19
|
+
OoLMF2kUo+J9+gF0dxH4LCW9zkEE/tOJwIAjaq+dvtVekLOa7ihAOlfJn05RLl6T
|
20
|
+
10I3aHrMsrHn4SCie46UPWnBZeF3IJB3wYWCY2CaqupSB6nZDGQnGoOBSaJjTucu
|
21
|
+
hu9X2hb/xZtKbUkEk84Fz1qtuobwo0Yb93Ae3KO3MTg595UK65XHl2PtGl6zDQJz
|
22
|
+
PSDhv3FVe8Rg/ji4PC+Y8/VollCO/vLCkZQRh7Lr03NJlB1DZaO3D0wUh3pA7zXe
|
23
|
+
Q56rY50SNzFHPSjJW3zIbTyCMWylj6FzjEo73c32nClkmygZMSuR4nB4Izd5B1BG
|
24
|
+
SOF7cooH3xaxth6FIE2DdHP8DJ0Akh+X4oxxT+jBCfln3p71y8fg/1m2UwhJ+6jb
|
25
|
+
Oy9pWiWXgC9ysqA1luAXsGpmg7d/v84cr9ZCL2ONjW9lICFTMMQVQVWeoAVWu4mW
|
26
|
+
RQg3o6M11MEm/hWMir+ltLttnGTi9TNqh1X2FR4ylDtUzL99+ocbo0eTQkdf+QDB
|
27
|
+
EwNXyEu1lGl+1O50ArGv72K66tgWQRrzajt2CA/GRCQYF6BzhqofP80jFjgkIww9
|
28
|
+
2BzDfScQ3WtUeM2O8+G9U05/U7Qxcqe6BXGT5l+IL0y5YPO+4zjY8LW6Ww==
|
29
|
+
-----END CERTIFICATE-----
|
30
|
+
-----BEGIN RSA PRIVATE KEY-----
|
31
|
+
Proc-Type: 4,ENCRYPTED
|
32
|
+
DEK-Info: AES-256-CBC,56EC47D2C61F830325B417F611200F4E
|
33
|
+
|
34
|
+
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
|
83
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
|
18
|
+
|
19
|
+
gem 'chef', '~> 12.0.3'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
|
18
|
+
|
19
|
+
gem 'chef', '~> 12.1.2'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
|
18
|
+
|
19
|
+
gem 'chef', '~> 12.2.1'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
|
18
|
+
|
19
|
+
gem 'chef', '~> 12.3.0'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
|
18
|
+
|
19
|
+
gem 'chef', '~> 12.4.3'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2016, Noah Kantrowitz
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
|
18
|
+
|
19
|
+
gem 'chef', '~> 12.5.1'
|