Skip to content

Commit d20e10f

Browse files
authored
CLOUDP-339846 - add support to tag to multiple places (#358)
# Summary <!-- Enter your issue summary here.--> ## Proof of Work - manually releasing agents to 2 repos - [Link](https://spruce.mongodb.com/version/68a6eed68146b10007a8e31f/tasks?sorts=STATUS%3AASC%3BBASE_STATUS%3ADESC) - all of them are uploaded: https://us-east-1.console.aws.amazon.com/ecr/repositories/private/268558157000/nnguyen/mongodb-agent?region=us-east-1 + https://us-east-1.console.aws.amazon.com/ecr/repositories/private/268558157000/nnguyen/mongodb-agent-ubi?region=us-east-1 - changeset is: ``` "agent": { "dockerfile-path": "docker/mongodb-agent/Dockerfile.atomic", "patch": { - "repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-agent-ubi", - "platforms": [ + "repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/nnguyen/mongodb-agent", "268558157000.dkr.ecr.us-east-1.amazonaws.com/nnguyen/mongodb-agent-ubi"], + "platforms": [ "linux/amd64" ] }, ``` ## 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
1 parent 588a2a2 commit d20e10f

File tree

7 files changed

+129
-117
lines changed

7 files changed

+129
-117
lines changed

build_info.json

Lines changed: 38 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
"operator": {
44
"dockerfile-path": "docker/mongodb-kubernetes-operator/Dockerfile.atomic",
55
"patch": {
6-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes",
6+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes"],
77
"platforms": [
88
"linux/amd64"
99
]
1010
},
1111
"staging": {
1212
"sign": true,
13-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes",
13+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes"],
1414
"platforms": [
1515
"linux/arm64",
1616
"linux/amd64",
@@ -20,7 +20,7 @@
2020
},
2121
"release": {
2222
"sign": true,
23-
"repository": "quay.io/mongodb/mongodb-kubernetes",
23+
"repository": ["quay.io/mongodb/mongodb-kubernetes"],
2424
"platforms": [
2525
"linux/arm64",
2626
"linux/amd64",
@@ -32,14 +32,14 @@
3232
"operator-race": {
3333
"dockerfile-path": "docker/mongodb-kubernetes-operator/Dockerfile.atomic",
3434
"patch": {
35-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes",
35+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes"],
3636
"platforms": [
3737
"linux/amd64"
3838
]
3939
},
4040
"staging": {
4141
"sign": true,
42-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes",
42+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes"],
4343
"platforms": [
4444
"linux/arm64",
4545
"linux/amd64"
@@ -49,14 +49,14 @@
4949
"init-database": {
5050
"dockerfile-path": "docker/mongodb-kubernetes-init-database/Dockerfile.atomic",
5151
"patch": {
52-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-database",
52+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-database"],
5353
"platforms": [
5454
"linux/amd64"
5555
]
5656
},
5757
"staging": {
5858
"sign": true,
59-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-database",
59+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-database"],
6060
"platforms": [
6161
"linux/arm64",
6262
"linux/amd64",
@@ -66,7 +66,7 @@
6666
},
6767
"release": {
6868
"sign": true,
69-
"repository": "quay.io/mongodb/mongodb-kubernetes-init-database",
69+
"repository": ["quay.io/mongodb/mongodb-kubernetes-init-database"],
7070
"platforms": [
7171
"linux/arm64",
7272
"linux/amd64",
@@ -78,14 +78,14 @@
7878
"init-appdb": {
7979
"dockerfile-path": "docker/mongodb-kubernetes-init-appdb/Dockerfile.atomic",
8080
"patch": {
81-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-appdb",
81+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-appdb"],
8282
"platforms": [
8383
"linux/amd64"
8484
]
8585
},
8686
"staging": {
8787
"sign": true,
88-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-appdb",
88+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-appdb"],
8989
"platforms": [
9090
"linux/arm64",
9191
"linux/amd64",
@@ -95,7 +95,7 @@
9595
},
9696
"release": {
9797
"sign": true,
98-
"repository": "quay.io/mongodb/mongodb-kubernetes-init-appdb",
98+
"repository": ["quay.io/mongodb/mongodb-kubernetes-init-appdb"],
9999
"platforms": [
100100
"linux/arm64",
101101
"linux/amd64",
@@ -107,21 +107,21 @@
107107
"init-ops-manager": {
108108
"dockerfile-path": "docker/mongodb-kubernetes-init-ops-manager/Dockerfile.atomic",
109109
"patch": {
110-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-ops-manager",
110+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-ops-manager"],
111111
"platforms": [
112112
"linux/amd64"
113113
]
114114
},
115115
"staging": {
116116
"sign": true,
117-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-ops-manager",
117+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-ops-manager"],
118118
"platforms": [
119119
"linux/amd64"
120120
]
121121
},
122122
"release": {
123123
"sign": true,
124-
"repository": "quay.io/mongodb/mongodb-kubernetes-init-ops-manager",
124+
"repository": ["quay.io/mongodb/mongodb-kubernetes-init-ops-manager"],
125125
"platforms": [
126126
"linux/amd64"
127127
]
@@ -130,14 +130,14 @@
130130
"database": {
131131
"dockerfile-path": "docker/mongodb-kubernetes-database/Dockerfile.atomic",
132132
"patch": {
133-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-database",
133+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-database"],
134134
"platforms": [
135135
"linux/amd64"
136136
]
137137
},
138138
"staging": {
139139
"sign": true,
140-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-database",
140+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-database"],
141141
"platforms": [
142142
"linux/arm64",
143143
"linux/amd64",
@@ -147,7 +147,7 @@
147147
},
148148
"release": {
149149
"sign": true,
150-
"repository": "quay.io/mongodb/mongodb-kubernetes-database",
150+
"repository": ["quay.io/mongodb/mongodb-kubernetes-database"],
151151
"platforms": [
152152
"linux/arm64",
153153
"linux/amd64",
@@ -159,13 +159,13 @@
159159
"meko-tests": {
160160
"dockerfile-path": "docker/mongodb-kubernetes-tests/Dockerfile",
161161
"patch": {
162-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-tests",
162+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-tests"],
163163
"platforms": [
164164
"linux/amd64"
165165
]
166166
},
167167
"staging": {
168-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-tests",
168+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-tests"],
169169
"platforms": [
170170
"linux/arm64",
171171
"linux/amd64"
@@ -175,13 +175,13 @@
175175
"mco-tests": {
176176
"dockerfile-path": "docker/mongodb-community-tests/Dockerfile",
177177
"patch": {
178-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-community-tests",
178+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-community-tests"],
179179
"platforms": [
180180
"linux/amd64"
181181
]
182182
},
183183
"staging": {
184-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-community-tests",
184+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-community-tests"],
185185
"platforms": [
186186
"linux/amd64"
187187
]
@@ -190,14 +190,14 @@
190190
"readiness-probe": {
191191
"dockerfile-path": "docker/mongodb-kubernetes-readinessprobe/Dockerfile.atomic",
192192
"patch": {
193-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-readinessprobe",
193+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-readinessprobe"],
194194
"platforms": [
195195
"linux/amd64"
196196
]
197197
},
198198
"staging": {
199199
"sign": true,
200-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-readinessprobe",
200+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-readinessprobe"],
201201
"platforms": [
202202
"linux/arm64",
203203
"linux/amd64",
@@ -208,7 +208,9 @@
208208
"release": {
209209
"version": "1.0.22",
210210
"sign": true,
211-
"repository": "quay.io/mongodb/mongodb-kubernetes-readinessprobe",
211+
"repository": [
212+
"quay.io/mongodb/mongodb-kubernetes-readinessprobe"
213+
],
212214
"platforms": [
213215
"linux/arm64",
214216
"linux/amd64",
@@ -220,14 +222,14 @@
220222
"upgrade-hook": {
221223
"dockerfile-path": "docker/mongodb-kubernetes-upgrade-hook/Dockerfile.atomic",
222224
"patch": {
223-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-operator-version-upgrade-post-start-hook",
225+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-operator-version-upgrade-post-start-hook"],
224226
"platforms": [
225227
"linux/amd64"
226228
]
227229
},
228230
"staging": {
229231
"sign": true,
230-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-operator-version-upgrade-post-start-hook",
232+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-operator-version-upgrade-post-start-hook"],
231233
"platforms": [
232234
"linux/arm64",
233235
"linux/amd64",
@@ -238,7 +240,7 @@
238240
"release": {
239241
"version": "1.0.9",
240242
"sign": true,
241-
"repository": "quay.io/mongodb/mongodb-kubernetes-operator-version-upgrade-post-start-hook",
243+
"repository": ["quay.io/mongodb/mongodb-kubernetes-operator-version-upgrade-post-start-hook"],
242244
"platforms": [
243245
"linux/arm64",
244246
"linux/amd64",
@@ -250,14 +252,14 @@
250252
"agent": {
251253
"dockerfile-path": "docker/mongodb-agent/Dockerfile.atomic",
252254
"patch": {
253-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-agent-ubi",
255+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-agent-ubi"],
254256
"platforms": [
255257
"linux/amd64"
256258
]
257259
},
258260
"staging": {
259261
"sign": true,
260-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-agent-ubi",
262+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-agent-ubi"],
261263
"platforms": [
262264
"linux/arm64",
263265
"linux/amd64",
@@ -267,7 +269,7 @@
267269
},
268270
"release": {
269271
"sign": true,
270-
"repository": "quay.io/mongodb/mongodb-agent-ubi",
272+
"repository": ["quay.io/mongodb/mongodb-agent-ubi", "quay.io/mongodb/mongodb-agent"],
271273
"platforms": [
272274
"linux/arm64",
273275
"linux/amd64",
@@ -280,23 +282,23 @@
280282
"dockerfile-path": "docker/mongodb-enterprise-ops-manager/Dockerfile.atomic",
281283
"patch": {
282284
"version": "om-version-from-release.json",
283-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-enterprise-ops-manager",
285+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-enterprise-ops-manager"],
284286
"platforms": [
285287
"linux/amd64"
286288
]
287289
},
288290
"staging": {
289291
"version": "om-version-from-release.json",
290292
"sign": true,
291-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-enterprise-ops-manager",
293+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-enterprise-ops-manager"],
292294
"platforms": [
293295
"linux/amd64"
294296
]
295297
},
296298
"release": {
297299
"version": "om-version-from-release.json",
298300
"sign": true,
299-
"repository": "quay.io/mongodb/mongodb-enterprise-ops-manager",
301+
"repository": ["quay.io/mongodb/mongodb-enterprise-ops-manager"],
300302
"platforms": [
301303
"linux/amd64"
302304
]
@@ -336,15 +338,15 @@
336338
"helm-charts": {
337339
"mongodb-kubernetes": {
338340
"patch": {
339-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/helm-charts"
341+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/helm-charts"]
340342
},
341343
"staging": {
342344
"sign": true,
343-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/helm-charts"
345+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/helm-charts"]
344346
},
345347
"release": {
346348
"sign": true,
347-
"repository": "quay.io/mongodb/helm-charts"
349+
"repository": ["quay.io/mongodb/helm-charts"]
348350
}
349351
}
350352
}

scripts/release/atomic_pipeline.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from queue import Queue
1111
from typing import Dict, List, Optional, Tuple
1212

13+
import python_on_whales
1314
import requests
1415
from opentelemetry import trace
1516

@@ -55,29 +56,30 @@ def build_image(
5556
build_path: str = ".",
5657
):
5758
"""
58-
Build an image then (optionally) sign the result.
59+
Build an image (optionally) sign, then tag and push to all repositories in the registry list.
5960
"""
6061
image_name = build_configuration.image_name()
6162
span = trace.get_current_span()
6263
span.set_attribute("mck.image_name", image_name)
6364

64-
base_registry = build_configuration.base_registry()
65+
registries = build_configuration.get_registries
66+
6567
build_args = build_args or {}
6668

6769
if build_args:
6870
span.set_attribute("mck.build_args", str(build_args))
69-
span.set_attribute("mck.registry", base_registry)
71+
span.set_attribute("mck.registries", str(registries))
7072
span.set_attribute("mck.platforms", build_configuration.platforms)
7173

72-
# Build docker registry URI and call build_image
73-
image_full_uri = f"{build_configuration.registry}:{build_configuration.version}"
74+
# Build the image once with all repository tags
75+
all_tags = [f"{registry}:{build_configuration.version}" for registry in build_configuration.registry]
7476

7577
logger.info(
76-
f"Building {image_full_uri} for platforms={build_configuration.platforms}, dockerfile args: {build_args}"
78+
f"Building image with tags {all_tags} for platforms={build_configuration.platforms}, dockerfile args: {build_args}"
7779
)
7880

7981
execute_docker_build(
80-
tag=image_full_uri,
82+
tags=all_tags,
8183
dockerfile=build_configuration.dockerfile_path,
8284
path=build_path,
8385
args=build_args,
@@ -89,8 +91,9 @@ def build_image(
8991
logger.info("Logging in MongoDB Artifactory for Garasign image")
9092
mongodb_artifactory_login()
9193
logger.info("Signing image")
92-
sign_image(build_configuration.registry, build_configuration.version)
93-
verify_signature(build_configuration.registry, build_configuration.version)
94+
for registry in build_configuration.registry:
95+
sign_image(registry, build_configuration.version)
96+
verify_signature(registry, build_configuration.version)
9497

9598

9699
def build_meko_tests_image(build_configuration: ImageBuildConfiguration):

scripts/release/build/build_info.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import json
22
from dataclasses import dataclass
3-
from typing import Dict
3+
from typing import Dict, List
44

55
from scripts.release.build.build_scenario import BuildScenario
66
from scripts.release.constants import (
@@ -27,7 +27,7 @@
2727

2828
@dataclass
2929
class ImageInfo:
30-
repository: str
30+
repository: List[str]
3131
platforms: list[str]
3232
version: str
3333
dockerfile_path: str
@@ -44,7 +44,7 @@ class BinaryInfo:
4444

4545
@dataclass
4646
class HelmChartInfo:
47-
repository: str
47+
repository: List[str]
4848
version: str
4949
sign: bool
5050

0 commit comments

Comments
 (0)