13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/docktor_rails/checks/compose_platform_risk.rb', line 13
def run(ctx)
root = ctx.fetch(:root)
platform = ctx[:platform]
compose_path = Compose.find_file(root)
return pass("No compose file found (skipping platform check)") unless compose_path
return pass("Unknown host architecture (skipping platform risk)") if platform.nil? || platform.arch == :unknown
doc = Compose.load_file(compose_path)
services = Compose.services(doc)
pins = services.filter_map do |name, svc|
next unless svc.is_a?(Hash)
p = svc["platform"]
next unless p.is_a?(String)
[name, p]
end
return pass("No compose platform pins") if pins.empty?
risky = pins.select { |_name, p| mismatch?(platform, p) }
if risky.empty?
pass("Compose platform pins match host")
else
warn("Compose platform pins may not match this host", files: risky.map { |n, p| "#{n}: #{p}" })
end
end
|