Skip to content

Commit ca9fff7

Browse files
committed
ci: testing some dockerfile validation and visualization
1 parent f521075 commit ca9fff7

3 files changed

Lines changed: 698 additions & 0 deletions

File tree

.dockerfile-deps.json

Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
{
2+
"dependencies": {
3+
"all": [
4+
"confidence-cloudflare-resolver.lint",
5+
"confidence-resolver.lint",
6+
"confidence-resolver.test",
7+
"openfeature-provider-go.build",
8+
"openfeature-provider-go.lint",
9+
"openfeature-provider-go.test",
10+
"openfeature-provider-go.validate-wasm",
11+
"openfeature-provider-java.build",
12+
"openfeature-provider-java.test",
13+
"openfeature-provider-java.test_e2e",
14+
"openfeature-provider-js.build",
15+
"openfeature-provider-js.test",
16+
"openfeature-provider-js.test_e2e",
17+
"openfeature-provider-ruby.build",
18+
"openfeature-provider-ruby.lint",
19+
"openfeature-provider-ruby.test",
20+
"python-host.test",
21+
"wasm-msg.lint",
22+
"wasm-msg.test",
23+
"wasm-rust-guest.artifact",
24+
"wasm-rust-guest.lint"
25+
],
26+
"confidence-cloudflare-resolver.lint": [
27+
"wasm-deps"
28+
],
29+
"confidence-resolver.lint": [
30+
"rust-test-base"
31+
],
32+
"confidence-resolver.test": [
33+
"rust-test-base"
34+
],
35+
"openfeature-provider-go-base": [
36+
"wasm-rust-guest.artifact"
37+
],
38+
"openfeature-provider-go.build": [
39+
"openfeature-provider-go-base"
40+
],
41+
"openfeature-provider-go.lint": [
42+
"openfeature-provider-go-base"
43+
],
44+
"openfeature-provider-go.test": [
45+
"openfeature-provider-go-base"
46+
],
47+
"openfeature-provider-go.validate-wasm": [
48+
"wasm-rust-guest.artifact"
49+
],
50+
"openfeature-provider-java-base": [
51+
"wasm-rust-guest.artifact"
52+
],
53+
"openfeature-provider-java.build": [
54+
"openfeature-provider-java-base"
55+
],
56+
"openfeature-provider-java.publish": [
57+
"openfeature-provider-java.build"
58+
],
59+
"openfeature-provider-java.test": [
60+
"openfeature-provider-java-base"
61+
],
62+
"openfeature-provider-java.test_e2e": [
63+
"openfeature-provider-java.test"
64+
],
65+
"openfeature-provider-js-base": [
66+
"wasm-rust-guest.artifact"
67+
],
68+
"openfeature-provider-js.artifact": [
69+
"openfeature-provider-js.pack"
70+
],
71+
"openfeature-provider-js.build": [
72+
"openfeature-provider-js-base"
73+
],
74+
"openfeature-provider-js.pack": [
75+
"openfeature-provider-js.build"
76+
],
77+
"openfeature-provider-js.test": [
78+
"openfeature-provider-js-base"
79+
],
80+
"openfeature-provider-js.test_e2e": [
81+
"openfeature-provider-js.test"
82+
],
83+
"openfeature-provider-ruby.artifact": [
84+
"openfeature-provider-ruby.build"
85+
],
86+
"openfeature-provider-ruby.build": [
87+
"openfeature-provider-ruby-base"
88+
],
89+
"openfeature-provider-ruby.lint": [
90+
"openfeature-provider-ruby-base"
91+
],
92+
"openfeature-provider-ruby.publish": [
93+
"openfeature-provider-ruby.build"
94+
],
95+
"openfeature-provider-ruby.test": [
96+
"openfeature-provider-ruby-base"
97+
],
98+
"python-host-base": [
99+
"wasm-rust-guest.artifact"
100+
],
101+
"python-host.test": [
102+
"python-host-base"
103+
],
104+
"rust-deps": [
105+
"rust-base"
106+
],
107+
"rust-test-base": [
108+
"rust-base",
109+
"rust-deps"
110+
],
111+
"wasm-deps": [
112+
"rust-base",
113+
"rust-deps"
114+
],
115+
"wasm-msg.lint": [
116+
"rust-test-base"
117+
],
118+
"wasm-msg.test": [
119+
"rust-test-base"
120+
],
121+
"wasm-rust-guest.artifact": [
122+
"wasm-rust-guest.build"
123+
],
124+
"wasm-rust-guest.build": [
125+
"wasm-deps"
126+
],
127+
"wasm-rust-guest.lint": [
128+
"wasm-deps"
129+
]
130+
},
131+
"file_dependencies": {
132+
"openfeature-provider-go-base": [
133+
"openfeature-provider/go/Makefile",
134+
"openfeature-provider/go/confidence/*.go",
135+
"openfeature-provider/go/confidence/proto",
136+
"openfeature-provider/go/go.mod"
137+
],
138+
"openfeature-provider-go.validate-wasm": [
139+
"openfeature-provider/go/confidence/wasm/confidence_resolver.wasm"
140+
],
141+
"openfeature-provider-java-base": [
142+
"confidence-resolver/protos",
143+
"openfeature-provider/java/Makefile",
144+
"openfeature-provider/java/pom.xml",
145+
"openfeature-provider/java/src",
146+
"wasm/proto"
147+
],
148+
"openfeature-provider-js-base": [
149+
"\\",
150+
"openfeature-provider/js/Makefile",
151+
"openfeature-provider/js/proto",
152+
"openfeature-provider/js/src",
153+
"openfeature-provider/js/tsconfig.json"
154+
],
155+
"openfeature-provider-js.test": [
156+
"confidence-resolver/protos",
157+
"openfeature-provider/js/.prettierignore",
158+
"openfeature-provider/js/prettier.config.cjs",
159+
"wasm/resolver_state.pb"
160+
],
161+
"openfeature-provider-ruby-base": [
162+
"openfeature-provider/ruby/Gemfile",
163+
"openfeature-provider/ruby/Makefile",
164+
"openfeature-provider/ruby/Rakefile",
165+
"openfeature-provider/ruby/confidence-openfeaure-provider.gemspec",
166+
"openfeature-provider/ruby/lib",
167+
"openfeature-provider/ruby/spec"
168+
],
169+
"python-host-base": [
170+
"wasm/proto",
171+
"wasm/python-host/*.py",
172+
"wasm/python-host/Makefile",
173+
"wasm/python-host/generate_proto.py",
174+
"wasm/resolver_state.pb"
175+
],
176+
"rust-base": [
177+
"rust-toolchain.toml"
178+
],
179+
"rust-deps": [
180+
"Cargo.toml",
181+
"confidence-cloudflare-resolver/Cargo.toml",
182+
"confidence-resolver/Cargo.toml",
183+
"confidence-resolver/build.rs",
184+
"confidence-resolver/protos",
185+
"openfeature-provider/go/Cargo.toml",
186+
"openfeature-provider/java/Cargo.toml",
187+
"openfeature-provider/js/Cargo.toml",
188+
"wasm-msg/Cargo.toml",
189+
"wasm-msg/build.rs",
190+
"wasm-msg/proto",
191+
"wasm/proto",
192+
"wasm/rust-guest/Cargo.toml",
193+
"wasm/rust-guest/build.rs",
194+
"wasm/rust-guest/proto"
195+
],
196+
"rust-test-base": [
197+
"Cargo.toml",
198+
"confidence-cloudflare-resolver/",
199+
"confidence-resolver/",
200+
"openfeature-provider/go/Cargo.toml",
201+
"openfeature-provider/java/Cargo.toml",
202+
"openfeature-provider/js/Cargo.toml",
203+
"wasm-msg/",
204+
"wasm/proto/",
205+
"wasm/rust-guest/"
206+
],
207+
"wasm-deps": [
208+
"Cargo.toml",
209+
"confidence-cloudflare-resolver/",
210+
"confidence-resolver/",
211+
"data/",
212+
"openfeature-provider/go/Cargo.toml",
213+
"openfeature-provider/java/Cargo.toml",
214+
"openfeature-provider/js/Cargo.toml",
215+
"wasm-msg/",
216+
"wasm/proto/",
217+
"wasm/rust-guest/"
218+
]
219+
},
220+
"stages": {
221+
"all": "scratch",
222+
"confidence-cloudflare-resolver.lint": "wasm-deps",
223+
"confidence-resolver.lint": "rust-test-base",
224+
"confidence-resolver.test": "rust-test-base",
225+
"openfeature-provider-go-base": "golang:1.24-alpine",
226+
"openfeature-provider-go.build": "openfeature-provider-go-base",
227+
"openfeature-provider-go.lint": "openfeature-provider-go-base",
228+
"openfeature-provider-go.test": "openfeature-provider-go-base",
229+
"openfeature-provider-go.validate-wasm": "alpine:3.22",
230+
"openfeature-provider-java-base": "eclipse-temurin:17-jdk",
231+
"openfeature-provider-java.build": "openfeature-provider-java-base",
232+
"openfeature-provider-java.publish": "openfeature-provider-java.build",
233+
"openfeature-provider-java.test": "openfeature-provider-java-base",
234+
"openfeature-provider-java.test_e2e": "openfeature-provider-java.test",
235+
"openfeature-provider-js-base": "node:20-alpine",
236+
"openfeature-provider-js.artifact": "scratch",
237+
"openfeature-provider-js.build": "openfeature-provider-js-base",
238+
"openfeature-provider-js.pack": "openfeature-provider-js.build",
239+
"openfeature-provider-js.test": "openfeature-provider-js-base",
240+
"openfeature-provider-js.test_e2e": "openfeature-provider-js.test",
241+
"openfeature-provider-ruby-base": "ruby:3.3-alpine",
242+
"openfeature-provider-ruby.artifact": "scratch",
243+
"openfeature-provider-ruby.build": "openfeature-provider-ruby-base",
244+
"openfeature-provider-ruby.lint": "openfeature-provider-ruby-base",
245+
"openfeature-provider-ruby.publish": "openfeature-provider-ruby.build",
246+
"openfeature-provider-ruby.test": "openfeature-provider-ruby-base",
247+
"python-host-base": "python:3.11-slim",
248+
"python-host.test": "python-host-base",
249+
"rust-base": "alpine:3.22",
250+
"rust-deps": "rust-base",
251+
"rust-test-base": "rust-base",
252+
"wasm-deps": "rust-base",
253+
"wasm-msg.lint": "rust-test-base",
254+
"wasm-msg.test": "rust-test-base",
255+
"wasm-rust-guest.artifact": "scratch",
256+
"wasm-rust-guest.build": "wasm-deps",
257+
"wasm-rust-guest.lint": "wasm-deps"
258+
}
259+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Dockerfile Dependency Validation
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- 'Dockerfile'
7+
- '.dockerfile-deps.json'
8+
push:
9+
branches:
10+
- main
11+
12+
jobs:
13+
validate-dockerfile-deps:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v4
17+
18+
- name: Set up Python
19+
uses: actions/setup-python@v5
20+
with:
21+
python-version: '3.11'
22+
23+
- name: Validate Dockerfile dependencies
24+
id: validate
25+
run: |
26+
python3 tools/dockerfile-deps.py --validate > report.md
27+
echo "exit_code=$?" >> $GITHUB_OUTPUT
28+
continue-on-error: true
29+
30+
- name: Add report to job summary
31+
if: always()
32+
run: |
33+
cat report.md >> $GITHUB_STEP_SUMMARY
34+
35+
- name: Fail if validation failed
36+
if: steps.validate.outputs.exit_code != '0'
37+
run: |
38+
echo "::error::Dockerfile dependencies validation failed. See job summary for details."
39+
exit 1

0 commit comments

Comments
 (0)