hybrid_platforms_conductor 33.7.4 → 33.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +42 -0
- data/lib/hybrid_platforms_conductor/hpc_plugins/log/remote_fs.rb +17 -16
- data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef.rb +19 -8
- data/lib/hybrid_platforms_conductor/hpc_plugins/test/github_ci.rb +8 -3
- data/lib/hybrid_platforms_conductor/version.rb +1 -1
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/diff_impacts_spec.rb +10 -0
- data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb +35 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80a9228f00ac63d2ddf325f1fd4faeab83af8d7bbf73c43ff46d4632883462a4
|
4
|
+
data.tar.gz: 225b174fb0107a743e4daeda8a65148b8ce7d0ea81fb0862066a3626e60b7571
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc3c6a8c0a245a1929481f2e5482fdc3b9100dc24dab7a98bfbc026a294a8ef88b359060608cafb5c9937197ad89fc39630e3b56265888f5c913be9435960a3b
|
7
|
+
data.tar.gz: c82665286ed8c6783b02640e4122eb08d555c0d04fecbc49a688194caf828144f63f243824e28be8a120f41a331cd5194497b9ede07630d9347e8888383187b9
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,45 @@
|
|
1
|
+
# [v33.8.3](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.8.2...v33.8.3) (2021-08-16 14:18:52)
|
2
|
+
|
3
|
+
## Global changes
|
4
|
+
### Patches
|
5
|
+
|
6
|
+
* [[Fix(platform_handler_serverless_chef)] [#97] Fix git_diff_impacts when a library file is removed](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/da60609dbd395b9a78c5df8089b39255db1fed9f)
|
7
|
+
|
8
|
+
## Changes for platform_handler_serverless_chef
|
9
|
+
### Patches
|
10
|
+
|
11
|
+
* [[Fix(platform_handler_serverless_chef)] [#97] Fix git_diff_impacts when a library file is removed](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/da60609dbd395b9a78c5df8089b39255db1fed9f)
|
12
|
+
|
13
|
+
# [v33.8.2](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.8.1...v33.8.2) (2021-08-14 21:12:19)
|
14
|
+
|
15
|
+
## Global changes
|
16
|
+
### Patches
|
17
|
+
|
18
|
+
* [[Fix(test_github_ci)] [#95] Make sure the github_ci test does not fail when a repository has no workflow run](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/e805c5b2d7e391c3c5205996fd56dadc14ddec7f)
|
19
|
+
|
20
|
+
## Changes for test_github_ci
|
21
|
+
### Patches
|
22
|
+
|
23
|
+
* [[Fix(test_github_ci)] [#95] Make sure the github_ci test does not fail when a repository has no workflow run](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/e805c5b2d7e391c3c5205996fd56dadc14ddec7f)
|
24
|
+
|
25
|
+
# [v33.8.1](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.8.0...v33.8.1) (2021-08-05 17:11:39)
|
26
|
+
|
27
|
+
### Patches
|
28
|
+
|
29
|
+
* [[Hotfix] Added test checking that test keys are not deployed in production for security](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/f2e5bcc59b595592bf0a2b4f63c92966f10902ef)
|
30
|
+
|
31
|
+
# [v33.8.0](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.7.4...v33.8.0) (2021-08-04 15:55:54)
|
32
|
+
|
33
|
+
## Global changes
|
34
|
+
### Patches
|
35
|
+
|
36
|
+
* [[Feature(platform_handler_serverless_chef)] Integrate testadmin public key while deploying in local mode](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/6083463bf3bc760c393b786515db59af89315333)
|
37
|
+
|
38
|
+
## Changes for platform_handler_serverless_chef
|
39
|
+
### Features
|
40
|
+
|
41
|
+
* [[Feature(platform_handler_serverless_chef)] Integrate testadmin public key while deploying in local mode](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/6083463bf3bc760c393b786515db59af89315333)
|
42
|
+
|
1
43
|
# [v33.7.4](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v33.7.3...v33.7.4) (2021-08-04 14:21:08)
|
2
44
|
|
3
45
|
## Global changes
|
@@ -138,22 +138,23 @@ module HybridPlatformsConductor
|
|
138
138
|
value = Regexp.last_match(2)
|
139
139
|
key = key_str.to_sym
|
140
140
|
# Type-cast some values
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
141
|
+
deploy_info[key] =
|
142
|
+
case key_str
|
143
|
+
when 'date'
|
144
|
+
# Date and time values
|
145
|
+
# Thu Nov 23 18:43:01 UTC 2017
|
146
|
+
Time.parse("#{value} UTC")
|
147
|
+
when 'debug'
|
148
|
+
# Boolean values
|
149
|
+
# Yes
|
150
|
+
value == 'Yes'
|
151
|
+
when /^diff_files_.+$/, 'services'
|
152
|
+
# Array of strings
|
153
|
+
# my_file.txt, other_file.txt
|
154
|
+
value.split(', ')
|
155
|
+
else
|
156
|
+
value
|
157
|
+
end
|
157
158
|
else
|
158
159
|
deploy_info[:unknown_lines] = [] unless deploy_info.key?(:unknown_lines)
|
159
160
|
deploy_info[:unknown_lines] << line
|
@@ -190,6 +190,15 @@ module HybridPlatformsConductor
|
|
190
190
|
secrets_file = "#{@repository_path}/#{package_dir}/data_bags/hpc_secrets/hpc_secrets.json"
|
191
191
|
FileUtils.mkdir_p(File.dirname(secrets_file))
|
192
192
|
File.write(secrets_file, secrets.merge(id: 'hpc_secrets').to_json)
|
193
|
+
# Make the testadmin public key available for deployment for hpc_test cookbook
|
194
|
+
testadmin_pub_key = "#{@config.hybrid_platforms_dir}/testadmin.key.pub"
|
195
|
+
if local_environment && File.exist?(testadmin_pub_key)
|
196
|
+
Dir.glob("#{@repository_path}/#{package_dir}/cookbook_artifacts/hpc_test-*") do |hpc_test_cookbook_path|
|
197
|
+
hpc_test_files_dir = "#{hpc_test_cookbook_path}/files/default"
|
198
|
+
FileUtils.mkdir_p hpc_test_files_dir
|
199
|
+
FileUtils.cp(testadmin_pub_key, "#{hpc_test_files_dir}/testadmin.key.pub")
|
200
|
+
end
|
201
|
+
end
|
193
202
|
# Remember the package info
|
194
203
|
File.write(package_info_file, package_info.to_json)
|
195
204
|
end
|
@@ -419,14 +428,16 @@ module HybridPlatformsConductor
|
|
419
428
|
end
|
420
429
|
when %r{libraries/(.+)}
|
421
430
|
# Find any recipe using methods from this library
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
431
|
+
if File.exist?("#{@repository_path}/#{impacted_file}")
|
432
|
+
lib_methods_regexps = File.read("#{@repository_path}/#{impacted_file}").scan(/(\W|^)def\s+(\w+)(\W|$)/).map { |_grp_1, method_name, _grp_2| /(\W|^)#{Regexp.escape(method_name)}(\W|$)/ }
|
433
|
+
known_cookbook_paths.each do |cookbooks_path|
|
434
|
+
Dir.glob("#{@repository_path}/#{cookbooks_path}/**/recipes/*.rb") do |recipe_path|
|
435
|
+
file_content = File.read(recipe_path)
|
436
|
+
found_lib_regexp = lib_methods_regexps.find { |regexp| file_content =~ regexp }
|
437
|
+
unless found_lib_regexp.nil?
|
438
|
+
cookbook_name, recipe_name = recipe_path.match(%r{#{cookbooks_path}/(\w+)/recipes/(\w+)\.rb})[1..2]
|
439
|
+
register.call("included library helper #{found_lib_regexp.source[6..-7]}", recipe_name, cookbook_name: cookbook_name)
|
440
|
+
end
|
430
441
|
end
|
431
442
|
end
|
432
443
|
end
|
@@ -18,10 +18,15 @@ module HybridPlatformsConductor
|
|
18
18
|
def test
|
19
19
|
for_each_github_repo do |client, repo_info|
|
20
20
|
log_debug "Checking CI for Github repository #{repo_info[:slug]}"
|
21
|
-
|
21
|
+
last_run = client.repository_workflow_runs(repo_info[:slug])[:workflow_runs].
|
22
22
|
select { |run| run[:head_branch] == 'master' }.
|
23
|
-
max_by { |run| run[:created_at] }
|
24
|
-
|
23
|
+
max_by { |run| run[:created_at] }
|
24
|
+
if last_run.nil?
|
25
|
+
error "No workflow run found for repository #{repo_info[:slug]}"
|
26
|
+
else
|
27
|
+
last_status = last_run[:conclusion]
|
28
|
+
error "Last workflow status for repository #{repo_info[:slug]} is #{last_status}" unless last_status == 'success'
|
29
|
+
end
|
25
30
|
end
|
26
31
|
end
|
27
32
|
|
data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/diff_impacts_spec.rb
CHANGED
@@ -158,6 +158,16 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
|
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
161
|
+
it 'returns no impacted service due to a library helper being removed' do
|
162
|
+
with_serverless_chef_platforms('recipes') do |platform|
|
163
|
+
expect(platform.impacts_from('cookbooks/test_cookbook_2/libraries/removed.rb' => {})).to eq [
|
164
|
+
[],
|
165
|
+
[],
|
166
|
+
false
|
167
|
+
]
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
161
171
|
it 'ignored impacted service from an unknown helper' do
|
162
172
|
with_serverless_chef_platforms('recipes') do |platform, repository|
|
163
173
|
File.write("#{repository}/cookbooks/test_cookbook_1/recipes/default.rb", <<~EO_RECIPE)
|
data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb
CHANGED
@@ -51,6 +51,7 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
|
|
51
51
|
[
|
52
52
|
%r{^cd #{Regexp.escape(repository)} &&\s+sudo rm -rf dist/#{Regexp.escape(env)}/#{Regexp.escape(policy)} &&\s+/opt/chef-workstation/bin/chef export #{Regexp.escape(policy_file)} dist/#{Regexp.escape(env)}/#{Regexp.escape(policy)} --chef-license accept#{data_bags ? " && cp -ar data_bags/ dist/#{Regexp.escape(env)}/#{Regexp.escape(policy)}/" : ''}$},
|
53
53
|
proc do
|
54
|
+
# Mock the packaging in the dist directory
|
54
55
|
package_dir = "#{repository}/dist/#{env}/#{policy}"
|
55
56
|
FileUtils.mkdir_p package_dir
|
56
57
|
FileUtils.cp_r("#{repository}/data_bags", "#{package_dir}/") if data_bags
|
@@ -329,6 +330,40 @@ describe HybridPlatformsConductor::HpcPlugins::PlatformHandler::ServerlessChef d
|
|
329
330
|
end
|
330
331
|
end
|
331
332
|
|
333
|
+
it 'packages the repository with a testadmin public key in local mode' do
|
334
|
+
with_serverless_chef_platforms('hpc_test') do |platform, repository|
|
335
|
+
File.write("#{ENV['hpc_platforms']}/testadmin.key.pub", 'ssh-rsa 12345 testadmin@test.com')
|
336
|
+
with_packaging_mocked(
|
337
|
+
repository,
|
338
|
+
policy_file: 'policyfiles/test_policy.local.rb',
|
339
|
+
env: 'local',
|
340
|
+
cookbook_metadata: {
|
341
|
+
'hpc_test-1234' => {}
|
342
|
+
}
|
343
|
+
) do
|
344
|
+
platform.package(services: { 'node' => %w[test_policy] }, secrets: {}, local_environment: true)
|
345
|
+
testadmin_key_pub = Dir.glob("#{repository}/dist/local/test_policy/cookbook_artifacts/hpc_test-*/files/default/testadmin.key.pub").first
|
346
|
+
expect(testadmin_key_pub).not_to eq nil
|
347
|
+
expect(File.read(testadmin_key_pub)).to eq 'ssh-rsa 12345 testadmin@test.com'
|
348
|
+
end
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
it 'does not package the repository with a testadmin public key in prod mode' do
|
353
|
+
with_serverless_chef_platforms('hpc_test') do |platform, repository|
|
354
|
+
File.write("#{ENV['hpc_platforms']}/testadmin.key.pub", 'ssh-rsa 12345 testadmin@test.com')
|
355
|
+
with_packaging_mocked(
|
356
|
+
repository,
|
357
|
+
cookbook_metadata: {
|
358
|
+
'hpc_test-1234' => {}
|
359
|
+
}
|
360
|
+
) do
|
361
|
+
platform.package(services: { 'node' => %w[test_policy] }, secrets: {}, local_environment: false)
|
362
|
+
expect(Dir.glob("#{repository}/dist/prod/test_policy/cookbook_artifacts/hpc_test-*/files/default/testadmin.key.pub")).to eq []
|
363
|
+
end
|
364
|
+
end
|
365
|
+
end
|
366
|
+
|
332
367
|
end
|
333
368
|
|
334
369
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hybrid_platforms_conductor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 33.
|
4
|
+
version: 33.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Muriel Salvan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: range_operators
|