Skip to content

Commit 6f85608

Browse files
CLOUDP-295785 - add dockerfile_path to build_info.json (#335)
# Summary Moved `dockerfile_path` from code to `build_info.json`. It will be easier to refactor the filenames later and to see what files are used in each image type. ## Proof of Work CI + updated unit test passing. ## Checklist - [ ] Have you linked a jira ticket and/or is the ticket in the title? - [ ] Have you checked whether your jira ticket required DOCSP changes? - [ ] Have you added changelog file? - use `skip-changelog` label if not needed - refer to [Changelog files and Release Notes](https://github.com/mongodb/mongodb-kubernetes/blob/master/CONTRIBUTING.md#changelog-files-and-release-notes) section in CONTRIBUTING.md for more details --------- Co-authored-by: Julien Benhaim <[email protected]>
1 parent 2babb74 commit 6f85608

File tree

7 files changed

+92
-43
lines changed

7 files changed

+92
-43
lines changed

build_info.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"images": {
33
"operator": {
4+
"dockerfile-path": "docker/mongodb-kubernetes-operator/Dockerfile.atomic",
45
"patch": {
56
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes",
67
"platforms": [
@@ -25,6 +26,7 @@
2526
}
2627
},
2728
"init-database": {
29+
"dockerfile-path": "docker/mongodb-kubernetes-init-database/Dockerfile.atomic",
2830
"patch": {
2931
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-database",
3032
"platforms": [
@@ -49,6 +51,7 @@
4951
}
5052
},
5153
"init-appdb": {
54+
"dockerfile-path": "docker/mongodb-kubernetes-init-appdb/Dockerfile.atomic",
5255
"patch": {
5356
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-appdb",
5457
"platforms": [
@@ -73,6 +76,7 @@
7376
}
7477
},
7578
"init-ops-manager": {
79+
"dockerfile-path": "docker/mongodb-kubernetes-init-ops-manager/Dockerfile.atomic",
7680
"patch": {
7781
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-ops-manager",
7882
"platforms": [
@@ -97,6 +101,7 @@
97101
}
98102
},
99103
"database": {
104+
"dockerfile-path": "docker/mongodb-kubernetes-database/Dockerfile.atomic",
100105
"patch": {
101106
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-database",
102107
"platforms": [
@@ -121,6 +126,7 @@
121126
}
122127
},
123128
"meko-tests": {
129+
"dockerfile-path": "docker/mongodb-kubernetes-tests/Dockerfile",
124130
"patch": {
125131
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-tests",
126132
"platforms": [
@@ -135,6 +141,7 @@
135141
}
136142
},
137143
"mco-tests": {
144+
"dockerfile-path": "docker/mongodb-community-tests/Dockerfile",
138145
"patch": {
139146
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-community-tests",
140147
"platforms": [
@@ -149,6 +156,7 @@
149156
}
150157
},
151158
"readiness-probe": {
159+
"dockerfile-path": "docker/mongodb-kubernetes-readinessprobe/Dockerfile.atomic",
152160
"patch": {
153161
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-readinessprobe",
154162
"platforms": [
@@ -174,6 +182,7 @@
174182
}
175183
},
176184
"upgrade-hook": {
185+
"dockerfile-path": "docker/mongodb-kubernetes-upgrade-hook/Dockerfile.atomic",
177186
"patch": {
178187
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-operator-version-upgrade-post-start-hook",
179188
"platforms": [
@@ -199,6 +208,7 @@
199208
}
200209
},
201210
"agent": {
211+
"dockerfile-path": "docker/mongodb-agent/Dockerfile.atomic",
202212
"patch": {
203213
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-agent-ubi",
204214
"platforms": [
@@ -223,6 +233,7 @@
223233
}
224234
},
225235
"ops-manager": {
236+
"dockerfile-path": "docker/mongodb-enterprise-ops-manager/Dockerfile.atomic",
226237
"patch": {
227238
"version": "om-version-from-release.json",
228239
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-enterprise-ops-manager",

scripts/release/atomic_pipeline.py

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929

3030
@TRACER.start_as_current_span("build_image")
3131
def build_image(
32-
dockerfile_path: str,
3332
build_configuration: ImageBuildConfiguration,
3433
build_args: Dict[str, str] = None,
3534
build_path: str = ".",
@@ -41,23 +40,24 @@ def build_image(
4140
span = trace.get_current_span()
4241
span.set_attribute("mck.image_name", image_name)
4342

44-
registry = build_configuration.base_registry
43+
base_registry = build_configuration.base_registry()
4544
build_args = build_args or {}
4645

4746
if build_args:
4847
span.set_attribute("mck.build_args", str(build_args))
49-
50-
logger.info(f"Building {image_name}, dockerfile args: {build_args}")
51-
logger.debug(f"Build args: {build_args}")
52-
logger.debug(f"Building {image_name} for platforms={build_configuration.platforms}")
53-
logger.debug(f"build image generic - registry={registry}")
48+
span.set_attribute("mck.registry", base_registry)
49+
span.set_attribute("mck.platforms", build_configuration.platforms)
5450

5551
# Build docker registry URI and call build_image
5652
image_full_uri = f"{build_configuration.registry}:{build_configuration.version}"
5753

54+
logger.info(
55+
f"Building {image_full_uri} for platforms={build_configuration.platforms}, dockerfile args: {build_args}"
56+
)
57+
5858
execute_docker_build(
5959
tag=image_full_uri,
60-
dockerfile=dockerfile_path,
60+
dockerfile=build_configuration.dockerfile_path,
6161
path=build_path,
6262
args=build_args,
6363
push=True,
@@ -72,7 +72,7 @@ def build_image(
7272
verify_signature(build_configuration.registry, build_configuration.version)
7373

7474

75-
def build_tests_image(build_configuration: ImageBuildConfiguration):
75+
def build_meko_tests_image(build_configuration: ImageBuildConfiguration):
7676
"""
7777
Builds image used to run tests.
7878
"""
@@ -101,7 +101,6 @@ def build_tests_image(build_configuration: ImageBuildConfiguration):
101101
build_args = dict({"PYTHON_VERSION": python_version})
102102

103103
build_image(
104-
dockerfile_path="docker/mongodb-kubernetes-tests/Dockerfile",
105104
build_configuration=build_configuration,
106105
build_args=build_args,
107106
build_path="docker/mongodb-kubernetes-tests",
@@ -114,7 +113,6 @@ def build_mco_tests_image(build_configuration: ImageBuildConfiguration):
114113
"""
115114

116115
build_image(
117-
dockerfile_path="docker/mongodb-community-tests/Dockerfile",
118116
build_configuration=build_configuration,
119117
)
120118

@@ -135,7 +133,6 @@ def build_operator_image(build_configuration: ImageBuildConfiguration):
135133
logger.info(f"Building Operator args: {args}")
136134

137135
build_image(
138-
dockerfile_path="docker/mongodb-kubernetes-operator/Dockerfile.atomic",
139136
build_configuration=build_configuration,
140137
build_args=args,
141138
)
@@ -148,7 +145,6 @@ def build_database_image(build_configuration: ImageBuildConfiguration):
148145
args = {"version": build_configuration.version}
149146

150147
build_image(
151-
dockerfile_path="docker/mongodb-kubernetes-database/Dockerfile.atomic",
152148
build_configuration=build_configuration,
153149
build_args=args,
154150
)
@@ -199,7 +195,6 @@ def build_init_om_image(build_configuration: ImageBuildConfiguration):
199195
args = {"version": build_configuration.version}
200196

201197
build_image(
202-
dockerfile_path="docker/mongodb-kubernetes-init-ops-manager/Dockerfile.atomic",
203198
build_configuration=build_configuration,
204199
build_args=args,
205200
)
@@ -225,7 +220,6 @@ def build_om_image(build_configuration: ImageBuildConfiguration):
225220
}
226221

227222
build_image(
228-
dockerfile_path="docker/mongodb-enterprise-ops-manager/Dockerfile.atomic",
229223
build_configuration=build_configuration,
230224
build_args=args,
231225
)
@@ -238,7 +232,6 @@ def build_init_appdb_image(build_configuration: ImageBuildConfiguration):
238232
args = {"version": build_configuration.version, "mongodb_tools_url_ubi": mongodb_tools_url_ubi}
239233

240234
build_image(
241-
dockerfile_path="docker/mongodb-kubernetes-init-appdb/Dockerfile.atomic",
242235
build_configuration=build_configuration,
243236
build_args=args,
244237
)
@@ -252,7 +245,6 @@ def build_init_database_image(build_configuration: ImageBuildConfiguration):
252245
args = {"version": build_configuration.version, "mongodb_tools_url_ubi": mongodb_tools_url_ubi}
253246

254247
build_image(
255-
"docker/mongodb-kubernetes-init-database/Dockerfile.atomic",
256248
build_configuration=build_configuration,
257249
build_args=args,
258250
)
@@ -264,7 +256,6 @@ def build_readiness_probe_image(build_configuration: ImageBuildConfiguration):
264256
"""
265257

266258
build_image(
267-
dockerfile_path="docker/mongodb-kubernetes-readinessprobe/Dockerfile.atomic",
268259
build_configuration=build_configuration,
269260
)
270261

@@ -275,7 +266,6 @@ def build_upgrade_hook_image(build_configuration: ImageBuildConfiguration):
275266
"""
276267

277268
build_image(
278-
dockerfile_path="docker/mongodb-kubernetes-upgrade-hook/Dockerfile.atomic",
279269
build_configuration=build_configuration,
280270
)
281271

@@ -421,7 +411,6 @@ def build_agent_pipeline(
421411
}
422412

423413
build_image(
424-
dockerfile_path="docker/mongodb-agent/Dockerfile.atomic",
425414
build_configuration=build_configuration_copy,
426415
build_args=args,
427416
)

scripts/release/build/build_info.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class ImageInfo:
2424
repository: str
2525
platforms: list[str]
2626
version: str
27+
dockerfile_path: str
2728
sign: bool
2829

2930

@@ -81,49 +82,50 @@ def load_build_info(scenario: BuildScenario,
8182
build_info_scenario = BuildScenario.PATCH
8283

8384
images = {}
84-
for name, env_data in build_info["images"].items():
85-
data = env_data.get(build_info_scenario)
86-
if not data:
87-
# If no data is available for the scenario, skip this image
85+
for name, data in build_info["images"].items():
86+
scenario_data = data.get(build_info_scenario)
87+
if not scenario_data:
88+
# If no scenario_data is available for the scenario, skip this image
8889
continue
8990

9091
# Only update the image_version if it is not already set in the build_info.json file
91-
image_version = data.get("version")
92+
image_version = scenario_data.get("version")
9293
if not image_version:
9394
image_version = version
9495

9596
images[name] = ImageInfo(
96-
repository=data["repository"],
97-
platforms=data["platforms"],
97+
repository=scenario_data["repository"],
98+
platforms=scenario_data["platforms"],
9899
version=image_version,
99-
sign=data.get("sign", False),
100+
dockerfile_path=data["dockerfile-path"],
101+
sign=scenario_data.get("sign", False),
100102
)
101103

102104
binaries = {}
103-
for name, env_data in build_info["binaries"].items():
104-
data = env_data.get(build_info_scenario)
105-
if not data:
106-
# If no data is available for the scenario, skip this binary
105+
for name, data in build_info["binaries"].items():
106+
scenario_data = data.get(build_info_scenario)
107+
if not scenario_data:
108+
# If no scenario_data is available for the scenario, skip this binary
107109
continue
108110

109111
binaries[name] = BinaryInfo(
110-
s3_store=data["s3-store"],
111-
platforms=data["platforms"],
112+
s3_store=scenario_data["s3-store"],
113+
platforms=scenario_data["platforms"],
112114
version=version,
113-
sign=data.get("sign", False),
115+
sign=scenario_data.get("sign", False),
114116
)
115117

116118
helm_charts = {}
117-
for name, env_data in build_info["helm-charts"].items():
118-
data = env_data.get(build_info_scenario)
119-
if not data:
120-
# If no data is available for the scenario, skip this helm-chart
119+
for name, data in build_info["helm-charts"].items():
120+
scenario_data = data.get(build_info_scenario)
121+
if not scenario_data:
122+
# If no scenario_data is available for the scenario, skip this helm-chart
121123
continue
122124

123125
helm_charts[name] = HelmChartInfo(
124-
repository=data["repository"],
126+
repository=scenario_data["repository"],
125127
version=version,
126-
sign=data.get("sign", False),
128+
sign=scenario_data.get("sign", False),
127129
)
128130

129131
return BuildInfo(images=images, binaries=binaries, helm_charts=helm_charts)

0 commit comments

Comments
 (0)