deploy_rubygem 0.60.29 → 0.60.34
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.rubocop.yml +212 -0
- data/Rakefile +1 -21
- data/{bin → exe}/bootstrap_chef_workstation +0 -1
- data/exe/install_chef_workstation +21 -0
- data/lib/deploy_rubygem/chef_node.rb +4 -2
- data/lib/deploy_rubygem/cookbook.rb +3 -2
- data/lib/deploy_rubygem/inspec_result.rb +28 -14
- data/lib/deploy_rubygem/inspectestor.rb +5 -5
- data/lib/deploy_rubygem/rake/cookbook.rb +129 -0
- data/lib/deploy_rubygem/rake/default.rb +86 -0
- data/lib/deploy_rubygem/rake.rb +15 -0
- data/lib/deploy_rubygem/rspec/chef.rb +50 -0
- data/lib/deploy_rubygem/rspec/inspec.rb +30 -0
- data/lib/deploy_rubygem/rspec/ruby.rb +43 -0
- data/lib/deploy_rubygem/rspec.rb +4 -82
- data/lib/deploy_rubygem/rubygem.rb +2 -2
- data/lib/deploy_rubygem/version.rb +1 -3
- data/lib/deploy_rubygem/workstation.rb +6 -4
- data/lib/deploy_rubygem.rb +2 -1
- data.tar.gz.sig +0 -0
- metadata +12 -5
- metadata.gz.sig +0 -0
- data/bin/install_chef_workstation +0 -24
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 974d64cb284e00a63a633d74b42f60d9bb0a6b131b56a914a668a50e8c3b3955
|
|
4
|
+
data.tar.gz: 397b4f158dc9b9413f837bbe20ea2562a6556d7f90c7558bd8f9dcf95a495319
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0e61f517b29ee858e8d70fa4644caf56ba9eb94fb892e03d62680a8cdd9fec3d11d8007189f1e9196aa778992e5e558a25e7f83c3e83c70c261429812e387f2f
|
|
7
|
+
data.tar.gz: 42ab75f028640985525fcb6d628e97a83f90e0456087056bd63d4b5f3af743f7c237ac48a603f57d9b721c11e72e69ad02d292b2302f88ed06e71544d3d83431
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/.rubocop.yml
CHANGED
|
@@ -25,3 +25,215 @@ Layout/CommentIndentation:
|
|
|
25
25
|
Metrics/MethodLength:
|
|
26
26
|
Enabled: true
|
|
27
27
|
Max: 20
|
|
28
|
+
|
|
29
|
+
Metrics/ClassLength:
|
|
30
|
+
Enabled: true
|
|
31
|
+
Max: 102
|
|
32
|
+
|
|
33
|
+
Gemspec/DeprecatedAttributeAssignment: # new in 1.30
|
|
34
|
+
Enabled: true
|
|
35
|
+
Gemspec/DevelopmentDependencies: # new in 1.44
|
|
36
|
+
Enabled: true
|
|
37
|
+
Gemspec/RequireMFA: # new in 1.23
|
|
38
|
+
Enabled: false
|
|
39
|
+
Layout/LineContinuationLeadingSpace: # new in 1.31
|
|
40
|
+
Enabled: true
|
|
41
|
+
Layout/LineContinuationSpacing: # new in 1.31
|
|
42
|
+
Enabled: true
|
|
43
|
+
Layout/LineEndStringConcatenationIndentation: # new in 1.18
|
|
44
|
+
Enabled: true
|
|
45
|
+
Layout/SpaceBeforeBrackets: # new in 1.7
|
|
46
|
+
Enabled: true
|
|
47
|
+
Lint/AmbiguousAssignment: # new in 1.7
|
|
48
|
+
Enabled: true
|
|
49
|
+
Lint/AmbiguousOperatorPrecedence: # new in 1.21
|
|
50
|
+
Enabled: true
|
|
51
|
+
Lint/AmbiguousRange: # new in 1.19
|
|
52
|
+
Enabled: true
|
|
53
|
+
Lint/ConstantOverwrittenInRescue: # new in 1.31
|
|
54
|
+
Enabled: true
|
|
55
|
+
Lint/DeprecatedConstants: # new in 1.8
|
|
56
|
+
Enabled: true
|
|
57
|
+
Lint/DuplicateBranch: # new in 1.3
|
|
58
|
+
Enabled: true
|
|
59
|
+
Lint/DuplicateMagicComment: # new in 1.37
|
|
60
|
+
Enabled: true
|
|
61
|
+
Lint/DuplicateMatchPattern: # new in 1.50
|
|
62
|
+
Enabled: true
|
|
63
|
+
Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
|
|
64
|
+
Enabled: true
|
|
65
|
+
Lint/EmptyBlock: # new in 1.1
|
|
66
|
+
Enabled: true
|
|
67
|
+
Lint/EmptyClass: # new in 1.3
|
|
68
|
+
Enabled: true
|
|
69
|
+
Lint/EmptyInPattern: # new in 1.16
|
|
70
|
+
Enabled: true
|
|
71
|
+
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
|
|
72
|
+
Enabled: true
|
|
73
|
+
Lint/ItWithoutArgumentsInBlock: # new in 1.59
|
|
74
|
+
Enabled: true
|
|
75
|
+
Lint/LambdaWithoutLiteralBlock: # new in 1.8
|
|
76
|
+
Enabled: true
|
|
77
|
+
Lint/LiteralAssignmentInCondition: # new in 1.58
|
|
78
|
+
Enabled: true
|
|
79
|
+
Lint/MixedCaseRange: # new in 1.53
|
|
80
|
+
Enabled: true
|
|
81
|
+
Lint/NoReturnInBeginEndBlocks: # new in 1.2
|
|
82
|
+
Enabled: true
|
|
83
|
+
Lint/NonAtomicFileOperation: # new in 1.31
|
|
84
|
+
Enabled: true
|
|
85
|
+
Lint/NumberedParameterAssignment: # new in 1.9
|
|
86
|
+
Enabled: true
|
|
87
|
+
Lint/OrAssignmentToConstant: # new in 1.9
|
|
88
|
+
Enabled: true
|
|
89
|
+
Lint/RedundantDirGlobSort: # new in 1.8
|
|
90
|
+
Enabled: true
|
|
91
|
+
Lint/RedundantRegexpQuantifiers: # new in 1.53
|
|
92
|
+
Enabled: true
|
|
93
|
+
Lint/RefinementImportMethods: # new in 1.27
|
|
94
|
+
Enabled: true
|
|
95
|
+
Lint/RequireRangeParentheses: # new in 1.32
|
|
96
|
+
Enabled: true
|
|
97
|
+
Lint/RequireRelativeSelfPath: # new in 1.22
|
|
98
|
+
Enabled: true
|
|
99
|
+
Lint/SymbolConversion: # new in 1.9
|
|
100
|
+
Enabled: true
|
|
101
|
+
Lint/ToEnumArguments: # new in 1.1
|
|
102
|
+
Enabled: true
|
|
103
|
+
Lint/TripleQuotes: # new in 1.9
|
|
104
|
+
Enabled: true
|
|
105
|
+
Lint/UnexpectedBlockArity: # new in 1.5
|
|
106
|
+
Enabled: true
|
|
107
|
+
Lint/UnmodifiedReduceAccumulator: # new in 1.1
|
|
108
|
+
Enabled: true
|
|
109
|
+
Lint/UselessRescue: # new in 1.43
|
|
110
|
+
Enabled: true
|
|
111
|
+
Lint/UselessRuby2Keywords: # new in 1.23
|
|
112
|
+
Enabled: true
|
|
113
|
+
Metrics/CollectionLiteralLength: # new in 1.47
|
|
114
|
+
Enabled: true
|
|
115
|
+
Naming/BlockForwarding: # new in 1.24
|
|
116
|
+
Enabled: true
|
|
117
|
+
Security/CompoundHash: # new in 1.28
|
|
118
|
+
Enabled: true
|
|
119
|
+
Security/IoMethods: # new in 1.22
|
|
120
|
+
Enabled: true
|
|
121
|
+
Style/ArgumentsForwarding: # new in 1.1
|
|
122
|
+
Enabled: true
|
|
123
|
+
Style/ArrayIntersect: # new in 1.40
|
|
124
|
+
Enabled: true
|
|
125
|
+
Style/CollectionCompact: # new in 1.2
|
|
126
|
+
Enabled: true
|
|
127
|
+
Style/ComparableClamp: # new in 1.44
|
|
128
|
+
Enabled: true
|
|
129
|
+
Style/ConcatArrayLiterals: # new in 1.41
|
|
130
|
+
Enabled: true
|
|
131
|
+
Style/DataInheritance: # new in 1.49
|
|
132
|
+
Enabled: true
|
|
133
|
+
Style/DirEmpty: # new in 1.48
|
|
134
|
+
Enabled: true
|
|
135
|
+
Style/DocumentDynamicEvalDefinition: # new in 1.1
|
|
136
|
+
Enabled: true
|
|
137
|
+
Style/EmptyHeredoc: # new in 1.32
|
|
138
|
+
Enabled: true
|
|
139
|
+
Style/EndlessMethod: # new in 1.8
|
|
140
|
+
Enabled: true
|
|
141
|
+
Style/EnvHome: # new in 1.29
|
|
142
|
+
Enabled: true
|
|
143
|
+
Style/ExactRegexpMatch: # new in 1.51
|
|
144
|
+
Enabled: true
|
|
145
|
+
Style/FetchEnvVar: # new in 1.28
|
|
146
|
+
Enabled: true
|
|
147
|
+
Style/FileEmpty: # new in 1.48
|
|
148
|
+
Enabled: true
|
|
149
|
+
Style/FileRead: # new in 1.24
|
|
150
|
+
Enabled: true
|
|
151
|
+
Style/FileWrite: # new in 1.24
|
|
152
|
+
Enabled: true
|
|
153
|
+
Style/HashConversion: # new in 1.10
|
|
154
|
+
Enabled: true
|
|
155
|
+
Style/HashExcept: # new in 1.7
|
|
156
|
+
Enabled: true
|
|
157
|
+
Style/IfWithBooleanLiteralBranches: # new in 1.9
|
|
158
|
+
Enabled: true
|
|
159
|
+
Style/InPatternThen: # new in 1.16
|
|
160
|
+
Enabled: true
|
|
161
|
+
Style/MagicCommentFormat: # new in 1.35
|
|
162
|
+
Enabled: true
|
|
163
|
+
Style/MapCompactWithConditionalBlock: # new in 1.30
|
|
164
|
+
Enabled: true
|
|
165
|
+
Style/MapIntoArray: # new in 1.63
|
|
166
|
+
Enabled: true
|
|
167
|
+
Style/MapToHash: # new in 1.24
|
|
168
|
+
Enabled: true
|
|
169
|
+
Style/MapToSet: # new in 1.42
|
|
170
|
+
Enabled: true
|
|
171
|
+
Style/MinMaxComparison: # new in 1.42
|
|
172
|
+
Enabled: true
|
|
173
|
+
Style/MultilineInPatternThen: # new in 1.16
|
|
174
|
+
Enabled: true
|
|
175
|
+
Style/NegatedIfElseCondition: # new in 1.2
|
|
176
|
+
Enabled: true
|
|
177
|
+
Style/NestedFileDirname: # new in 1.26
|
|
178
|
+
Enabled: true
|
|
179
|
+
Style/NilLambda: # new in 1.3
|
|
180
|
+
Enabled: true
|
|
181
|
+
Style/NumberedParameters: # new in 1.22
|
|
182
|
+
Enabled: true
|
|
183
|
+
Style/NumberedParametersLimit: # new in 1.22
|
|
184
|
+
Enabled: true
|
|
185
|
+
Style/ObjectThen: # new in 1.28
|
|
186
|
+
Enabled: true
|
|
187
|
+
Style/OpenStructUse: # new in 1.23
|
|
188
|
+
Enabled: true
|
|
189
|
+
Style/OperatorMethodCall: # new in 1.37
|
|
190
|
+
Enabled: true
|
|
191
|
+
Style/QuotedSymbols: # new in 1.16
|
|
192
|
+
Enabled: true
|
|
193
|
+
Style/RedundantArgument: # new in 1.4
|
|
194
|
+
Enabled: true
|
|
195
|
+
Style/RedundantArrayConstructor: # new in 1.52
|
|
196
|
+
Enabled: true
|
|
197
|
+
Style/RedundantConstantBase: # new in 1.40
|
|
198
|
+
Enabled: true
|
|
199
|
+
Style/RedundantCurrentDirectoryInPath: # new in 1.53
|
|
200
|
+
Enabled: true
|
|
201
|
+
Style/RedundantDoubleSplatHashBraces: # new in 1.41
|
|
202
|
+
Enabled: true
|
|
203
|
+
Style/RedundantEach: # new in 1.38
|
|
204
|
+
Enabled: true
|
|
205
|
+
Style/RedundantFilterChain: # new in 1.52
|
|
206
|
+
Enabled: true
|
|
207
|
+
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
|
|
208
|
+
Enabled: true
|
|
209
|
+
Style/RedundantInitialize: # new in 1.27
|
|
210
|
+
Enabled: true
|
|
211
|
+
Style/RedundantLineContinuation: # new in 1.49
|
|
212
|
+
Enabled: true
|
|
213
|
+
Style/RedundantRegexpArgument: # new in 1.53
|
|
214
|
+
Enabled: true
|
|
215
|
+
Style/RedundantRegexpConstructor: # new in 1.52
|
|
216
|
+
Enabled: true
|
|
217
|
+
Style/RedundantSelfAssignmentBranch: # new in 1.19
|
|
218
|
+
Enabled: true
|
|
219
|
+
Style/RedundantStringEscape: # new in 1.37
|
|
220
|
+
Enabled: true
|
|
221
|
+
Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
|
|
222
|
+
Enabled: true
|
|
223
|
+
Style/SelectByRegexp: # new in 1.22
|
|
224
|
+
Enabled: true
|
|
225
|
+
Style/SendWithLiteralMethodName: # new in 1.64
|
|
226
|
+
Enabled: true
|
|
227
|
+
Style/SingleLineDoEndBlock: # new in 1.57
|
|
228
|
+
Enabled: true
|
|
229
|
+
Style/StringChars: # new in 1.12
|
|
230
|
+
Enabled: true
|
|
231
|
+
Style/SuperArguments: # new in 1.64
|
|
232
|
+
Enabled: true
|
|
233
|
+
Style/SuperWithArgsParentheses: # new in 1.58
|
|
234
|
+
Enabled: true
|
|
235
|
+
Style/SwapValues: # new in 1.1
|
|
236
|
+
Enabled: true
|
|
237
|
+
Style/YAMLFileRead: # new in 1.53
|
|
238
|
+
Enabled: true
|
|
239
|
+
|
data/Rakefile
CHANGED
|
@@ -1,25 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'bundler/gem_tasks'
|
|
4
|
-
require 'rspec/core/rake_task'
|
|
5
|
-
|
|
6
|
-
require 'rubocop/rake_task'
|
|
7
|
-
|
|
8
3
|
require_relative 'lib/deploy_rubygem'
|
|
9
4
|
|
|
10
|
-
|
|
11
|
-
RuboCop::RakeTask.new
|
|
12
|
-
|
|
13
|
-
task test_framework: %i[clean rubocop spec]
|
|
14
|
-
task default: %i[test_framework build install:local]
|
|
15
|
-
task cicd: %i[default test_version]
|
|
16
|
-
task test_version: %i[install compliance]
|
|
17
|
-
task :compliance do
|
|
18
|
-
system('inspec exec compliance')
|
|
19
|
-
end
|
|
20
|
-
task developper: %i[rubocop push default]
|
|
21
|
-
task :push do
|
|
22
|
-
system('git add .')
|
|
23
|
-
system("git commit -m 'Rake pusing version #{DeployRubygem::VERSION}'")
|
|
24
|
-
system('git push')
|
|
25
|
-
end
|
|
5
|
+
DeployRubygem::RakeTask.new
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
workstation_options = {
|
|
6
|
+
user_folder: '/root',
|
|
7
|
+
node_name: ENV.fetch('NODENAME'),
|
|
8
|
+
knife_name: ENV.fetch('KNIFE_NAME'),
|
|
9
|
+
policyname: ENV.fetch('POLICYNAME'),
|
|
10
|
+
policygroup: ENV.fetch('POLICYGROUP'),
|
|
11
|
+
chef_server_url: ENV.fetch('CHEF_SERVER_URL'),
|
|
12
|
+
chef_client_key: ENV.fetch('CHEF_CLIENT_KEY'),
|
|
13
|
+
chef_knife_key: ENV.fetch('CHEF_KNIFE_KEY')
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
File.write('node_options', JSON.generate(workstation_options))
|
|
17
|
+
system('sudo bootstrap_chef_workstation node_options')
|
|
18
|
+
|
|
19
|
+
workstation_options[:user_folder] = Dir.home
|
|
20
|
+
File.write('workstation_options', JSON.generate(workstation_options))
|
|
21
|
+
system('bootstrap_chef_workstation workstation_options')
|
|
@@ -42,10 +42,12 @@ module DeployRubygem
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def boostrap
|
|
45
|
+
extend DeployRubygem
|
|
46
|
+
|
|
45
47
|
clientrb_file = '/etc/chef/client.rb'
|
|
46
48
|
clientpem_file = '/etc/chef/client.pem'
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
FileUtils.mkdir_p('/etc/chef')
|
|
49
51
|
|
|
50
52
|
File.write(clientrb_file, clientrb)
|
|
51
53
|
File.write(clientpem_file, chef_client_key.split('\\n').join("\n"))
|
|
@@ -55,7 +57,7 @@ module DeployRubygem
|
|
|
55
57
|
# read_file(file_path)
|
|
56
58
|
end
|
|
57
59
|
|
|
58
|
-
system(
|
|
60
|
+
system(chef_accept_cmd)
|
|
59
61
|
end
|
|
60
62
|
end
|
|
61
63
|
end
|
|
@@ -4,6 +4,7 @@ require_relative 'project'
|
|
|
4
4
|
require_relative 'kitchen'
|
|
5
5
|
require_relative 'inspectestor'
|
|
6
6
|
require_relative 'rubygem'
|
|
7
|
+
require_relative 'rake'
|
|
7
8
|
|
|
8
9
|
# DeployRubygem - deploy a gem using rake
|
|
9
10
|
# Containing a class
|
|
@@ -13,7 +14,7 @@ module DeployRubygem
|
|
|
13
14
|
attr_reader :profiles, :kitchens, :execute_profiles
|
|
14
15
|
|
|
15
16
|
def initialize(new_cookbook_info)
|
|
16
|
-
super
|
|
17
|
+
super
|
|
17
18
|
@profiles = cookbook_info[:compliance_profiles].map do |profile_name|
|
|
18
19
|
input_file = File.join(%w[compliance inputs] + ["#{cookbook_name}.yml"])
|
|
19
20
|
waiver_file = File.join(%w[compliance waivers] + ["#{cookbook_name}.yml"])
|
|
@@ -116,7 +117,7 @@ module DeployRubygem
|
|
|
116
117
|
|
|
117
118
|
def save_progress
|
|
118
119
|
system('git add .')
|
|
119
|
-
system("git commit -m \"Saving: hostname=#{ENV
|
|
120
|
+
system("git commit -m \"Saving: hostname=#{ENV.fetch('HOSTNAME')}, cookbook_name=#{cookbook_name}\"")
|
|
120
121
|
system('git push')
|
|
121
122
|
end
|
|
122
123
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
module DeployRubygem
|
|
6
6
|
# Using Inspec to deploy and manage Inspec
|
|
7
7
|
class InspecTestorResult
|
|
8
|
-
attr_reader :success_control, :success_result, :failed_control, :failed_result, :pending_control, :pending_result
|
|
8
|
+
attr_reader :success_control, :success_result, :failed_control, :failed_result, :pending_control, :pending_result, :success_profiles, :failed_profiles
|
|
9
9
|
|
|
10
10
|
def initialize(as_json)
|
|
11
11
|
@as_json = as_json
|
|
@@ -15,6 +15,8 @@ module DeployRubygem
|
|
|
15
15
|
@failed_result = 0
|
|
16
16
|
@pending_control = 0
|
|
17
17
|
@pending_result = 0
|
|
18
|
+
@success_profiles = []
|
|
19
|
+
@failed_profiles = []
|
|
18
20
|
results
|
|
19
21
|
end
|
|
20
22
|
|
|
@@ -43,24 +45,36 @@ module DeployRubygem
|
|
|
43
45
|
|
|
44
46
|
private
|
|
45
47
|
|
|
48
|
+
def check_steps(item_result)
|
|
49
|
+
failed_steps = false
|
|
50
|
+
case item_result['status']
|
|
51
|
+
when 'passed'
|
|
52
|
+
@success_result += 1
|
|
53
|
+
@success_profiles << item_result['code_desc']
|
|
54
|
+
when 'failed'
|
|
55
|
+
@failed_result += 1
|
|
56
|
+
@failed_profiles << item_result['code_desc']
|
|
57
|
+
failed_steps = true
|
|
58
|
+
else
|
|
59
|
+
@pending_result += 1
|
|
60
|
+
@pending_control += 1
|
|
61
|
+
failed_steps = true
|
|
62
|
+
end
|
|
63
|
+
failed_steps
|
|
64
|
+
end
|
|
65
|
+
|
|
46
66
|
def results
|
|
47
67
|
controls.each do |control_result|
|
|
48
68
|
control_as_fail = false
|
|
49
69
|
control_result['results'].each do |item_result|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
else
|
|
58
|
-
@pending_result += 1
|
|
59
|
-
@pending_control += 1
|
|
60
|
-
control_as_fail = true
|
|
61
|
-
end
|
|
70
|
+
step_result = check_steps(item_result)
|
|
71
|
+
control_as_fail = step_result if step_result
|
|
72
|
+
end
|
|
73
|
+
if control_as_fail
|
|
74
|
+
@failed_control += 1
|
|
75
|
+
else
|
|
76
|
+
@success_control += 1
|
|
62
77
|
end
|
|
63
|
-
@success_control += 1 unless control_as_fail
|
|
64
78
|
end
|
|
65
79
|
end
|
|
66
80
|
end
|
|
@@ -28,17 +28,17 @@ module DeployRubygem
|
|
|
28
28
|
puts "waiver_file = #{waiver_file}"
|
|
29
29
|
|
|
30
30
|
check
|
|
31
|
-
system("chef inspec exec #{inspec_path} #{inspec_options.join(' ')}")
|
|
31
|
+
system("chef exec inspec exec #{inspec_path} #{inspec_options.join(' ')}")
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def update
|
|
35
35
|
clean
|
|
36
|
-
system("chef inspec vendor #{inspec_path} ")
|
|
36
|
+
system("chef exec inspec vendor #{inspec_path} ")
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def save_as_html(html_file)
|
|
40
40
|
check
|
|
41
|
-
system("chef inspec exec #{inspec_path} #{inspec_options.join(' ')} --reporter html:#{html_file}")
|
|
41
|
+
system("chef exec inspec exec #{inspec_path} #{inspec_options.join(' ')} --reporter html:#{html_file}")
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def test_json
|
|
@@ -46,8 +46,8 @@ module DeployRubygem
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def clean
|
|
49
|
-
FileUtils.rm_rf(vendor_folder)
|
|
50
|
-
|
|
49
|
+
FileUtils.rm_rf(vendor_folder)
|
|
50
|
+
FileUtils.rm_f(lock_file)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
private
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rake/dsl_definition'
|
|
4
|
+
|
|
5
|
+
require_relative 'default'
|
|
6
|
+
|
|
7
|
+
# DeployRubygem module helper for rubygem
|
|
8
|
+
module DeployRubygem
|
|
9
|
+
# RakeTask to use with DeployRubygem projects
|
|
10
|
+
class RakeCookbookTask < RakeDefaultTask
|
|
11
|
+
def initialize(task_name = 'cookbook', desc = 'Run DeployRubygem task')
|
|
12
|
+
super
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def define_tasks # :nodoc:
|
|
16
|
+
super
|
|
17
|
+
test_cookbook
|
|
18
|
+
release_cookbook
|
|
19
|
+
cookstyle
|
|
20
|
+
build_cookbook
|
|
21
|
+
install_policy
|
|
22
|
+
release_policy
|
|
23
|
+
install_cookbook
|
|
24
|
+
report
|
|
25
|
+
clean_cookbook
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_framework # :nodoc:
|
|
29
|
+
desc "@desc with #{__method__}"
|
|
30
|
+
task test_framework: %i[build_cookbook spec clean_cookbook]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def default # :nodoc:
|
|
34
|
+
desc "@desc with #{__method__}"
|
|
35
|
+
task default: %i[test_framework build install:local]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def cycle # :nodoc:
|
|
39
|
+
desc "@desc with #{__method__}"
|
|
40
|
+
task cycle: %i[test_framework release_policy test_version]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def develop # :nodoc:
|
|
44
|
+
desc "@desc with #{__method__}"
|
|
45
|
+
task develop: %i[build_cookbook spec push install release_policy report]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_cookbook # :nodoc:
|
|
49
|
+
desc "@desc with #{__method__}"
|
|
50
|
+
task test_cookbook: %i[build_cookbook spec push install release_policy report]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def release_cookbook # :nodoc:
|
|
54
|
+
desc "@desc with #{__method__}"
|
|
55
|
+
task release_cookbook: %i[clean_cookbook release_policy release]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def cookstyle # :nodoc:
|
|
59
|
+
desc "@desc with #{__method__}"
|
|
60
|
+
task cookstyle: %i[rubocop] do
|
|
61
|
+
system('cookstyle')
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def build_cookbook # :nodoc:
|
|
66
|
+
desc "@desc with #{__method__}"
|
|
67
|
+
task build_cookbook: %i[clean_cookbook cookstyle] do
|
|
68
|
+
system('knife cookbook upload jimbo_management_site')
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def install_policy # :nodoc:
|
|
73
|
+
desc "@desc with #{__method__}"
|
|
74
|
+
task install_policy: %i[build_cookbook] do
|
|
75
|
+
system('chef install Policyfile.rb')
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def release_policy # :nodoc:
|
|
80
|
+
desc "@desc with #{__method__}"
|
|
81
|
+
task release_policy: %i[clean_cookbook install_policy] do
|
|
82
|
+
system('chef push prod Policyfile.lock.json')
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def install_cookbook # :nodoc:
|
|
87
|
+
desc "@desc with #{__method__}"
|
|
88
|
+
task :install_cookbook do
|
|
89
|
+
system("sudo chef-client -o #{@task_name}")
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def compliance # :nodoc:
|
|
94
|
+
desc "@desc with #{__method__}"
|
|
95
|
+
task :compliance do
|
|
96
|
+
inspect_opts = [
|
|
97
|
+
'--input-file', File.join('compliance', 'inputs', "#{@task_name}.yml"),
|
|
98
|
+
'--waiver-file', File.join('compliance', 'waivers', "#{@task_name}.yml"),
|
|
99
|
+
'--reporter', "html:/tmp/html/#{@task_name}_rake_report.html"
|
|
100
|
+
]
|
|
101
|
+
system("inspec exec compliance/profiles/#{@task_name}-accept #{inspect_opts.join(' ')}")
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def report # :nodoc:
|
|
106
|
+
desc "@desc with #{__method__}"
|
|
107
|
+
task :report do
|
|
108
|
+
system("sudo chef-client -o #{@task_name}::compile_report")
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def clean_cookbook # :nodoc:
|
|
113
|
+
desc "@desc with #{__method__}"
|
|
114
|
+
task clean_cookbook: %i[clean] do
|
|
115
|
+
system('kitchen destroy base')
|
|
116
|
+
FileUtils.rm_f('Policyfile.lock.json')
|
|
117
|
+
FileUtils.rm_f('Gemfile.lock')
|
|
118
|
+
FileUtils.rm_f('.rspec_status')
|
|
119
|
+
profiles_folder = File.join(%w[compliance profiles])
|
|
120
|
+
Dir.children(profiles_folder).each do |sub_folder|
|
|
121
|
+
vendor_folder = File.join(profiles_folder, sub_folder, 'vendor')
|
|
122
|
+
inspec_file = File.join(profiles_folder, sub_folder, 'inspec.lock')
|
|
123
|
+
FileUtils.rm_rf(vendor_folder)
|
|
124
|
+
FileUtils.rm_f(inspec_file)
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'bundler/gem_tasks'
|
|
4
|
+
require 'rake/dsl_definition'
|
|
5
|
+
|
|
6
|
+
# DeployRubygem module helper for rubygem
|
|
7
|
+
module DeployRubygem
|
|
8
|
+
# RakeTask to use with DeployRubygem projects
|
|
9
|
+
class RakeDefaultTask
|
|
10
|
+
include ::Rake::DSL if defined?(::Rake::DSL)
|
|
11
|
+
|
|
12
|
+
# Define DeployRubygem Rake task
|
|
13
|
+
def initialize(task_name, desc)
|
|
14
|
+
@task_name = task_name
|
|
15
|
+
@desc = desc
|
|
16
|
+
yield self if block_given?
|
|
17
|
+
define_tasks
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def rspec_and_rubocop
|
|
21
|
+
require 'rspec/core/rake_task'
|
|
22
|
+
require 'rubocop/rake_task'
|
|
23
|
+
|
|
24
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
25
|
+
RuboCop::RakeTask.new
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def define_tasks # :nodoc:
|
|
29
|
+
rspec_and_rubocop
|
|
30
|
+
test_framework
|
|
31
|
+
default
|
|
32
|
+
cycle
|
|
33
|
+
test_version
|
|
34
|
+
test_check_local
|
|
35
|
+
compliance
|
|
36
|
+
develop
|
|
37
|
+
push
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_framework # :nodoc:
|
|
41
|
+
desc "@desc with #{__method__}"
|
|
42
|
+
task test_framework: %i[clean check_local]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def default # :nodoc:
|
|
46
|
+
desc "@desc with #{__method__}"
|
|
47
|
+
task default: %i[test_framework build install:local]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def cycle # :nodoc:
|
|
51
|
+
desc "@desc with #{__method__}"
|
|
52
|
+
task cycle: %i[default test_version]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_version # :nodoc:
|
|
56
|
+
desc "@desc with #{__method__}"
|
|
57
|
+
task test_version: %i[install compliance]
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_check_local # :nodoc:
|
|
61
|
+
desc "@desc with #{__method__}"
|
|
62
|
+
task check_local: %i[rubocop spec]
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def compliance # :nodoc:
|
|
66
|
+
desc "@desc with #{__method__}"
|
|
67
|
+
task :compliance do
|
|
68
|
+
system('inspec exec compliance')
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def develop # :nodoc:
|
|
73
|
+
desc "@desc with #{__method__}"
|
|
74
|
+
task develop: %i[check_local clean push default]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def push # :nodoc:
|
|
78
|
+
desc "@desc with #{__method__}"
|
|
79
|
+
task :push do
|
|
80
|
+
system('git add .')
|
|
81
|
+
system("git commit -m 'Rake pusing version #{DeployRubygem::VERSION}'")
|
|
82
|
+
system('git push')
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rake/dsl_definition'
|
|
4
|
+
|
|
5
|
+
require_relative 'rake/cookbook'
|
|
6
|
+
|
|
7
|
+
# DeployRubygem module helper for rubygem
|
|
8
|
+
module DeployRubygem
|
|
9
|
+
# RakeTask to use with DeployRubygem projects
|
|
10
|
+
class RakeTask < RakeDefaultTask
|
|
11
|
+
def initialize(task_name = 'deploy_rubygem', desc = 'Run DeployRubygem task')
|
|
12
|
+
super
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# DeployRubygem - deploy a gem using rake
|
|
4
|
+
# Containing a class
|
|
5
|
+
module DeployRubygem
|
|
6
|
+
def chef_env_cmd
|
|
7
|
+
'chef --chef-license accept env'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def chef_accept_cmd
|
|
11
|
+
'chef show-policy jimbo_management_site base --chef-license accept'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Using Project to deploy and manage Project
|
|
15
|
+
module RSpecTesting
|
|
16
|
+
def testing_chef(chefrepo)
|
|
17
|
+
RSpec.describe "Accept Chef License #{chefrepo.project_name}" do
|
|
18
|
+
it 'Accept the Chef License' do
|
|
19
|
+
extend DeployRubygem
|
|
20
|
+
expect(`#{chef_accept_cmd}`).not_to be nil
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def testing_workstation(chefrepo)
|
|
26
|
+
RSpec.describe "Install #{chefrepo.project_name}" do
|
|
27
|
+
it "Change to #{chefrepo} folder" do
|
|
28
|
+
change_repo = chefrepo.change_to_project_folder
|
|
29
|
+
expect(change_repo).not_to be nil
|
|
30
|
+
expect(Dir.pwd).to eq(chefrepo.path)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it 'Change to Chef repo folder' do
|
|
34
|
+
change_repo = chefrepo.change_to_chefrepo
|
|
35
|
+
expect(change_repo).not_to be nil
|
|
36
|
+
expect(change_repo).to eq(chefrepo.chefrepo_path)
|
|
37
|
+
expect(Dir.pwd).to eq(chefrepo.chefrepo_path)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
unless chefrepo.cookbooks.nil?
|
|
41
|
+
it 'Should list his cookbooks dependencies' do
|
|
42
|
+
cookbooks = chefrepo.cookbooks
|
|
43
|
+
expect(cookbooks).not_to be nil
|
|
44
|
+
expect(cookbooks).to be_kind_of(Array)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# DeployRubygem - deploy a gem using rake
|
|
4
|
+
# Containing a class
|
|
5
|
+
module DeployRubygem
|
|
6
|
+
# Using Project to deploy and manage Project
|
|
7
|
+
module RSpecTesting
|
|
8
|
+
def testing_inspec(inspector)
|
|
9
|
+
inspect_test = InspecTestor.new(inspector[:inspec_path], inspector[:input_file], inspector[:waiver_file])
|
|
10
|
+
RSpec.describe "Testing #{inspect_test} at #{Dir.pwd}" do
|
|
11
|
+
it 'Should be a kind of Html' do
|
|
12
|
+
test_html = inspect_test.save_as_html('/tmp/html/deploy_rubygem_kind_of_html.html')
|
|
13
|
+
expect(test_html).to be true
|
|
14
|
+
end
|
|
15
|
+
it 'Should be a kind of Json' do
|
|
16
|
+
expect(inspect_test.test_json).to be_kind_of(InspecTestorResult)
|
|
17
|
+
expect(inspect_test.test_json.status).to eq 'loaded'
|
|
18
|
+
end
|
|
19
|
+
it 'Should be successfull' do
|
|
20
|
+
expect(inspect_test.test_json.success_result).to eq inspector[:success_result]
|
|
21
|
+
expect(inspect_test.test_json.success_control).to eq inspector[:success_control]
|
|
22
|
+
expect(inspect_test.test_json.failed_result).to eq inspector[:failed_result]
|
|
23
|
+
expect(inspect_test.test_json.failed_control).to eq inspector[:failed_control]
|
|
24
|
+
expect(inspect_test.test_json.pending_result).to eq inspector[:pending_result]
|
|
25
|
+
expect(inspect_test.test_json.pending_control).to eq inspector[:pending_control]
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# DeployRubygem - deploy a gem using rake
|
|
4
|
+
# Containing a class
|
|
5
|
+
module DeployRubygem
|
|
6
|
+
# Using Project to deploy and manage Project
|
|
7
|
+
module RSpecTesting
|
|
8
|
+
def testing_gem(gem_obj)
|
|
9
|
+
RSpec.describe "Testing #{gem_obj}" do
|
|
10
|
+
it 'has a Project Name' do
|
|
11
|
+
expect(gem_obj.project_name).not_to be nil
|
|
12
|
+
end
|
|
13
|
+
it 'has Project Options' do
|
|
14
|
+
expect(gem_obj.project_options).not_to be nil
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def install_gem_via_git(gem_obj)
|
|
20
|
+
RSpec.describe "Install #{gem_obj.project_name}" do
|
|
21
|
+
it "Change to #{gem_obj} folder" do
|
|
22
|
+
change_repo = gem_obj.change_to_project_folder
|
|
23
|
+
expect(change_repo).not_to be nil
|
|
24
|
+
expect(Dir.pwd).to eq(gem_obj.path)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def check_current_version(gem_name, version)
|
|
30
|
+
RSpec.describe [gem_name, version].join(', ') do
|
|
31
|
+
it 'has a version number' do
|
|
32
|
+
expect(version).not_to be nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "has not the actual version #{version} publish" do
|
|
36
|
+
gem_version = Gem::Version.new(version)
|
|
37
|
+
version_to_check = "#{gem_name} (#{gem_version})"
|
|
38
|
+
expect(`gem list -r #{gem_name}`).not_to include(version_to_check)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
data/lib/deploy_rubygem/rspec.rb
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative 'rspec/chef'
|
|
4
|
+
require_relative 'rspec/inspec'
|
|
5
|
+
require_relative 'rspec/ruby'
|
|
6
|
+
|
|
3
7
|
# DeployRubygem - deploy a gem using rake
|
|
4
8
|
# Containing a class
|
|
5
9
|
module DeployRubygem
|
|
@@ -22,31 +26,6 @@ module DeployRubygem
|
|
|
22
26
|
end
|
|
23
27
|
end
|
|
24
28
|
|
|
25
|
-
def check_current_version(gem_name, version)
|
|
26
|
-
RSpec.describe gem_name do
|
|
27
|
-
it 'has a version number' do
|
|
28
|
-
expect(version).not_to be nil
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it 'has not the actual version publish' do
|
|
32
|
-
gem_version = Gem::Version.new(version)
|
|
33
|
-
version_to_check = "#{gem_name} (#{gem_version})"
|
|
34
|
-
expect(`gem list -r #{gem_name}`).not_to include(version_to_check)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def testing_gem(gem_obj)
|
|
40
|
-
RSpec.describe "Testing #{gem_obj}" do
|
|
41
|
-
it 'has a Project Name' do
|
|
42
|
-
expect(gem_obj.project_name).not_to be nil
|
|
43
|
-
end
|
|
44
|
-
it 'has Project Options' do
|
|
45
|
-
expect(gem_obj.project_options).not_to be nil
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
29
|
def testing_project(gem_obj)
|
|
51
30
|
RSpec.describe "Testing gem #{gem_obj.project_name}" do
|
|
52
31
|
it 'should not be null' do
|
|
@@ -60,62 +39,5 @@ module DeployRubygem
|
|
|
60
39
|
end
|
|
61
40
|
end
|
|
62
41
|
end
|
|
63
|
-
|
|
64
|
-
def testing_workstation(gem_obj)
|
|
65
|
-
RSpec.describe "Install #{gem_obj.project_name}" do
|
|
66
|
-
it "Change to #{gem_obj} folder" do
|
|
67
|
-
change_repo = gem_obj.change_to_project_folder
|
|
68
|
-
expect(change_repo).not_to be nil
|
|
69
|
-
expect(Dir.pwd).to eq(gem_obj.path)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it 'Change to Chef repo folder' do
|
|
73
|
-
change_repo = gem_obj.change_to_chefrepo
|
|
74
|
-
expect(change_repo).not_to be nil
|
|
75
|
-
expect(change_repo).to eq(gem_obj.chefrepo_path)
|
|
76
|
-
expect(Dir.pwd).to eq(gem_obj.chefrepo_path)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
unless gem_obj.cookbooks.nil?
|
|
80
|
-
it 'Should list his cookbooks dependencies' do
|
|
81
|
-
cookbooks = gem_obj.cookbooks
|
|
82
|
-
expect(cookbooks).not_to be nil
|
|
83
|
-
expect(cookbooks).to be_kind_of(Array)
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def install_gem_via_git(gem_obj)
|
|
90
|
-
RSpec.describe "Install #{gem_obj.project_name}" do
|
|
91
|
-
it "Change to #{gem_obj} folder" do
|
|
92
|
-
change_repo = gem_obj.change_to_project_folder
|
|
93
|
-
expect(change_repo).not_to be nil
|
|
94
|
-
expect(Dir.pwd).to eq(gem_obj.path)
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def testing_inspec(inspector)
|
|
100
|
-
inspect_test = InspecTestor.new(inspector[:inspec_path], inspector[:input_file], inspector[:waiver_file])
|
|
101
|
-
RSpec.describe "Testing #{inspect_test} at #{Dir.pwd}" do
|
|
102
|
-
it 'Should be a kind of Html' do
|
|
103
|
-
test_html = inspect_test.save_as_html('/tmp/html/deploy_rubygem_kind_of_html.html')
|
|
104
|
-
expect(test_html).to be true
|
|
105
|
-
end
|
|
106
|
-
it 'Should be a kind of Json' do
|
|
107
|
-
expect(inspect_test.test_json).to be_kind_of(InspecTestorResult)
|
|
108
|
-
expect(inspect_test.test_json.status).to eq 'loaded'
|
|
109
|
-
end
|
|
110
|
-
it 'Should be successfull' do
|
|
111
|
-
expect(inspect_test.test_json.success_result).to eq inspector[:success_result]
|
|
112
|
-
expect(inspect_test.test_json.success_control).to eq inspector[:success_control]
|
|
113
|
-
expect(inspect_test.test_json.failed_result).to eq inspector[:failed_result]
|
|
114
|
-
expect(inspect_test.test_json.failed_control).to eq inspector[:failed_control]
|
|
115
|
-
expect(inspect_test.test_json.pending_result).to eq inspector[:pending_result]
|
|
116
|
-
expect(inspect_test.test_json.pending_control).to eq inspector[:pending_control]
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
42
|
end
|
|
121
43
|
end
|
|
@@ -10,7 +10,7 @@ module DeployRubygem
|
|
|
10
10
|
class Rubygem < Project
|
|
11
11
|
def deploy_dependencies
|
|
12
12
|
dependencies.each do |git_depends|
|
|
13
|
-
Dir.chdir(::File.join(
|
|
13
|
+
Dir.chdir(::File.join(Dir.home, git_depends))
|
|
14
14
|
system('git pull')
|
|
15
15
|
|
|
16
16
|
system('git add .')
|
|
@@ -54,7 +54,7 @@ module DeployRubygem
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def rake_test
|
|
57
|
-
|
|
57
|
+
FileUtils.rm_f('Gemfile.lock')
|
|
58
58
|
system('bundle') || return
|
|
59
59
|
system('bundle install') || return
|
|
60
60
|
system('rake') || return
|
|
@@ -22,11 +22,11 @@ module DeployRubygem
|
|
|
22
22
|
|
|
23
23
|
def clientrb
|
|
24
24
|
{
|
|
25
|
-
log_location: File.join(
|
|
25
|
+
log_location: File.join(Dir.home, '.chef', 'chef-client.log'),
|
|
26
26
|
chef_server_url: chef_server_url,
|
|
27
27
|
chef_license: 'accept',
|
|
28
|
-
file_cache_path: File.join(
|
|
29
|
-
file_backup_path: File.join(
|
|
28
|
+
file_cache_path: File.join(Dir.home, '.chef', 'cache'),
|
|
29
|
+
file_backup_path: File.join(Dir.home, '.chef', 'backup'),
|
|
30
30
|
node_name: nodename,
|
|
31
31
|
policy_name: policyname,
|
|
32
32
|
policy_group: policygroup
|
|
@@ -55,6 +55,8 @@ module DeployRubygem
|
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
def boostrap_workstation
|
|
58
|
+
extend DeployRubygem
|
|
59
|
+
|
|
58
60
|
knife_file = File.join(user_folder, '.chef', 'knife.rb')
|
|
59
61
|
cicdpem_file = File.join(user_folder, '.chef', 'cicd.pem')
|
|
60
62
|
cicdcredential_file = File.join(user_folder, '.chef', 'credentials')
|
|
@@ -70,7 +72,7 @@ module DeployRubygem
|
|
|
70
72
|
# read_file(file_path)
|
|
71
73
|
end
|
|
72
74
|
|
|
73
|
-
system(
|
|
75
|
+
system(chef_accept_cmd)
|
|
74
76
|
end
|
|
75
77
|
end
|
|
76
78
|
end
|
data/lib/deploy_rubygem.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative 'deploy_rubygem/version'
|
|
4
|
+
require_relative 'deploy_rubygem/rubygem'
|
|
4
5
|
|
|
5
6
|
# DeployRubygem module helper for rubygem
|
|
6
7
|
module DeployRubygem
|
|
@@ -11,7 +12,7 @@ module DeployRubygem
|
|
|
11
12
|
def self.exemple_cookbook
|
|
12
13
|
{
|
|
13
14
|
git: 'git@git.exemple.com:/Exemple/exemple_cookbook.git',
|
|
14
|
-
path: File.join(
|
|
15
|
+
path: File.join(Dir.home, 'jimbo_management_site'),
|
|
15
16
|
kitchens: %w[base],
|
|
16
17
|
compliance_profiles: {
|
|
17
18
|
input: 'compliance/inputs/user.yml',
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: deploy_rubygem
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.60.
|
|
4
|
+
version: 0.60.34
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jimmy Provencher
|
|
8
8
|
autorequire:
|
|
9
|
-
bindir:
|
|
9
|
+
bindir: exe
|
|
10
10
|
cert_chain:
|
|
11
11
|
- |
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
|
@@ -33,7 +33,7 @@ cert_chain:
|
|
|
33
33
|
n6Pwa3EckU/5n8N6gUJTAmGyu6Ncu1pbsZtH450+BJ2z82JNXomdFYlnG8+1XNlj
|
|
34
34
|
3M1sBFUHvqrBg2hQkQcLHokmQYrYsRK5A7HrxwKcmwM=
|
|
35
35
|
-----END CERTIFICATE-----
|
|
36
|
-
date: 2024-06-
|
|
36
|
+
date: 2024-06-16 00:00:00.000000000 Z
|
|
37
37
|
dependencies:
|
|
38
38
|
- !ruby/object:Gem::Dependency
|
|
39
39
|
name: rspec
|
|
@@ -126,9 +126,9 @@ files:
|
|
|
126
126
|
- LICENSE.txt
|
|
127
127
|
- README.md
|
|
128
128
|
- Rakefile
|
|
129
|
-
-
|
|
130
|
-
- bin/install_chef_workstation
|
|
129
|
+
- exe/bootstrap_chef_workstation
|
|
131
130
|
- exe/deploy_rubygem
|
|
131
|
+
- exe/install_chef_workstation
|
|
132
132
|
- lib/deploy_rubygem.rb
|
|
133
133
|
- lib/deploy_rubygem/chef_node.rb
|
|
134
134
|
- lib/deploy_rubygem/cookbook.rb
|
|
@@ -136,7 +136,13 @@ files:
|
|
|
136
136
|
- lib/deploy_rubygem/inspectestor.rb
|
|
137
137
|
- lib/deploy_rubygem/kitchen.rb
|
|
138
138
|
- lib/deploy_rubygem/project.rb
|
|
139
|
+
- lib/deploy_rubygem/rake.rb
|
|
140
|
+
- lib/deploy_rubygem/rake/cookbook.rb
|
|
141
|
+
- lib/deploy_rubygem/rake/default.rb
|
|
139
142
|
- lib/deploy_rubygem/rspec.rb
|
|
143
|
+
- lib/deploy_rubygem/rspec/chef.rb
|
|
144
|
+
- lib/deploy_rubygem/rspec/inspec.rb
|
|
145
|
+
- lib/deploy_rubygem/rspec/ruby.rb
|
|
140
146
|
- lib/deploy_rubygem/rubygem.rb
|
|
141
147
|
- lib/deploy_rubygem/testing.rb
|
|
142
148
|
- lib/deploy_rubygem/version.rb
|
|
@@ -149,6 +155,7 @@ metadata:
|
|
|
149
155
|
bug_tracker_uri: https://github.com/JimboDragonGit/deploy_rubygem/issues
|
|
150
156
|
changelog_uri: https://github.com/JimboDragonGit/deploy_rubygem/releases
|
|
151
157
|
homepage_uri: https://github.com/JimboDragonGit/deploy_rubygem
|
|
158
|
+
rubygems_mfa_required: 'true'
|
|
152
159
|
post_install_message:
|
|
153
160
|
rdoc_options:
|
|
154
161
|
- "--charset=UTF-8"
|
metadata.gz.sig
CHANGED
|
Binary file
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require 'json'
|
|
4
|
-
|
|
5
|
-
system('curl -L https://omnitruck.chef.io/install.sh > install.sh')
|
|
6
|
-
system('sudo bash install.sh -P chef-workstation')
|
|
7
|
-
|
|
8
|
-
workstation_options = {
|
|
9
|
-
user_folder: '/root',
|
|
10
|
-
node_name: ENV['NODENAME'],
|
|
11
|
-
knife_name: ENV['KNIFE_NAME'],
|
|
12
|
-
policyname: ENV['POLICYNAME'],
|
|
13
|
-
policygroup: ENV['POLICYGROUP'],
|
|
14
|
-
chef_server_url: ENV['CHEF_SERVER_URL'],
|
|
15
|
-
chef_client_key: ENV['CHEF_CLIENT_KEY'],
|
|
16
|
-
chef_knife_key: ENV['CHEF_KNIFE_KEY']
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
File.write('node_options', JSON.generate(workstation_options))
|
|
20
|
-
system('sudo bootstrap_chef_workstation node_options')
|
|
21
|
-
|
|
22
|
-
workstation_options[:user_folder] = ENV['HOME']
|
|
23
|
-
File.write('workstation_options', JSON.generate(workstation_options))
|
|
24
|
-
system('bootstrap_chef_workstation workstation_options')
|