Skip to content

Commit d2221ef

Browse files
committed
add support to tag to multiple places
1 parent 3e64361 commit d2221ef

File tree

7 files changed

+127
-117
lines changed

7 files changed

+127
-117
lines changed

build_info.json

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@
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"
1717
]
1818
},
1919
"release": {
2020
"sign": true,
21-
"repository": "quay.io/mongodb/mongodb-kubernetes",
21+
"repository": ["quay.io/mongodb/mongodb-kubernetes"],
2222
"platforms": [
2323
"linux/arm64",
2424
"linux/amd64"
@@ -28,14 +28,14 @@
2828
"operator-race": {
2929
"dockerfile-path": "docker/mongodb-kubernetes-operator/Dockerfile.atomic",
3030
"patch": {
31-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes",
31+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes"],
3232
"platforms": [
3333
"linux/amd64"
3434
]
3535
},
3636
"staging": {
3737
"sign": true,
38-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes",
38+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes"],
3939
"platforms": [
4040
"linux/arm64",
4141
"linux/amd64"
@@ -45,22 +45,22 @@
4545
"init-database": {
4646
"dockerfile-path": "docker/mongodb-kubernetes-init-database/Dockerfile.atomic",
4747
"patch": {
48-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-database",
48+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-database"],
4949
"platforms": [
5050
"linux/amd64"
5151
]
5252
},
5353
"staging": {
5454
"sign": true,
55-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-database",
55+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-database"],
5656
"platforms": [
5757
"linux/arm64",
5858
"linux/amd64"
5959
]
6060
},
6161
"release": {
6262
"sign": true,
63-
"repository": "quay.io/mongodb/mongodb-kubernetes-init-database",
63+
"repository": ["quay.io/mongodb/mongodb-kubernetes-init-database"],
6464
"platforms": [
6565
"linux/arm64",
6666
"linux/amd64"
@@ -70,22 +70,22 @@
7070
"init-appdb": {
7171
"dockerfile-path": "docker/mongodb-kubernetes-init-appdb/Dockerfile.atomic",
7272
"patch": {
73-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-appdb",
73+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-appdb"],
7474
"platforms": [
7575
"linux/amd64"
7676
]
7777
},
7878
"staging": {
7979
"sign": true,
80-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-appdb",
80+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-appdb"],
8181
"platforms": [
8282
"linux/arm64",
8383
"linux/amd64"
8484
]
8585
},
8686
"release": {
8787
"sign": true,
88-
"repository": "quay.io/mongodb/mongodb-kubernetes-init-appdb",
88+
"repository": ["quay.io/mongodb/mongodb-kubernetes-init-appdb"],
8989
"platforms": [
9090
"linux/arm64",
9191
"linux/amd64"
@@ -95,22 +95,22 @@
9595
"init-ops-manager": {
9696
"dockerfile-path": "docker/mongodb-kubernetes-init-ops-manager/Dockerfile.atomic",
9797
"patch": {
98-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-ops-manager",
98+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-ops-manager"],
9999
"platforms": [
100100
"linux/amd64"
101101
]
102102
},
103103
"staging": {
104104
"sign": true,
105-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-ops-manager",
105+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-init-ops-manager"],
106106
"platforms": [
107107
"linux/arm64",
108108
"linux/amd64"
109109
]
110110
},
111111
"release": {
112112
"sign": true,
113-
"repository": "quay.io/mongodb/mongodb-kubernetes-init-ops-manager",
113+
"repository": ["quay.io/mongodb/mongodb-kubernetes-init-ops-manager"],
114114
"platforms": [
115115
"linux/arm64",
116116
"linux/amd64"
@@ -120,22 +120,22 @@
120120
"database": {
121121
"dockerfile-path": "docker/mongodb-kubernetes-database/Dockerfile.atomic",
122122
"patch": {
123-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-database",
123+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-database"],
124124
"platforms": [
125125
"linux/amd64"
126126
]
127127
},
128128
"staging": {
129129
"sign": true,
130-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-database",
130+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-database"],
131131
"platforms": [
132132
"linux/arm64",
133133
"linux/amd64"
134134
]
135135
},
136136
"release": {
137137
"sign": true,
138-
"repository": "quay.io/mongodb/mongodb-kubernetes-database",
138+
"repository": ["quay.io/mongodb/mongodb-kubernetes-database"],
139139
"platforms": [
140140
"linux/arm64",
141141
"linux/amd64"
@@ -145,13 +145,13 @@
145145
"meko-tests": {
146146
"dockerfile-path": "docker/mongodb-kubernetes-tests/Dockerfile",
147147
"patch": {
148-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-tests",
148+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-tests"],
149149
"platforms": [
150150
"linux/amd64"
151151
]
152152
},
153153
"staging": {
154-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-tests",
154+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-tests"],
155155
"platforms": [
156156
"linux/amd64"
157157
]
@@ -160,13 +160,13 @@
160160
"mco-tests": {
161161
"dockerfile-path": "docker/mongodb-community-tests/Dockerfile",
162162
"patch": {
163-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-community-tests",
163+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-community-tests"],
164164
"platforms": [
165165
"linux/amd64"
166166
]
167167
},
168168
"staging": {
169-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-community-tests",
169+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-community-tests"],
170170
"platforms": [
171171
"linux/amd64"
172172
]
@@ -175,14 +175,14 @@
175175
"readiness-probe": {
176176
"dockerfile-path": "docker/mongodb-kubernetes-readinessprobe/Dockerfile.atomic",
177177
"patch": {
178-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-readinessprobe",
178+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-readinessprobe"],
179179
"platforms": [
180180
"linux/amd64"
181181
]
182182
},
183183
"staging": {
184184
"sign": true,
185-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-readinessprobe",
185+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-readinessprobe"],
186186
"platforms": [
187187
"linux/arm64",
188188
"linux/amd64"
@@ -191,7 +191,7 @@
191191
"release": {
192192
"version": "1.0.22",
193193
"sign": true,
194-
"repository": "quay.io/mongodb/mongodb-kubernetes-readinessprobe",
194+
"repository": ["quay.io/mongodb/mongodb-kubernetes-readinessprobe"],
195195
"platforms": [
196196
"linux/arm64",
197197
"linux/amd64"
@@ -201,14 +201,14 @@
201201
"upgrade-hook": {
202202
"dockerfile-path": "docker/mongodb-kubernetes-upgrade-hook/Dockerfile.atomic",
203203
"patch": {
204-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-operator-version-upgrade-post-start-hook",
204+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-operator-version-upgrade-post-start-hook"],
205205
"platforms": [
206206
"linux/amd64"
207207
]
208208
},
209209
"staging": {
210210
"sign": true,
211-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-operator-version-upgrade-post-start-hook",
211+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-kubernetes-operator-version-upgrade-post-start-hook"],
212212
"platforms": [
213213
"linux/arm64",
214214
"linux/amd64"
@@ -217,7 +217,7 @@
217217
"release": {
218218
"version": "1.0.9",
219219
"sign": true,
220-
"repository": "quay.io/mongodb/mongodb-kubernetes-operator-version-upgrade-post-start-hook",
220+
"repository": ["quay.io/mongodb/mongodb-kubernetes-operator-version-upgrade-post-start-hook"],
221221
"platforms": [
222222
"linux/arm64",
223223
"linux/amd64"
@@ -227,22 +227,22 @@
227227
"agent": {
228228
"dockerfile-path": "docker/mongodb-agent/Dockerfile.atomic",
229229
"patch": {
230-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-agent-ubi",
230+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-agent-ubi"],
231231
"platforms": [
232232
"linux/amd64"
233233
]
234234
},
235235
"staging": {
236236
"sign": true,
237-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-agent-ubi",
237+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-agent-ubi"],
238238
"platforms": [
239239
"linux/arm64",
240240
"linux/amd64"
241241
]
242242
},
243243
"release": {
244244
"sign": true,
245-
"repository": "quay.io/mongodb/mongodb-agent-ubi",
245+
"repository": ["quay.io/mongodb/mongodb-agent-ubi"],
246246
"platforms": [
247247
"linux/arm64",
248248
"linux/amd64"
@@ -253,23 +253,23 @@
253253
"dockerfile-path": "docker/mongodb-enterprise-ops-manager/Dockerfile.atomic",
254254
"patch": {
255255
"version": "om-version-from-release.json",
256-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-enterprise-ops-manager",
256+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-enterprise-ops-manager"],
257257
"platforms": [
258258
"linux/amd64"
259259
]
260260
},
261261
"staging": {
262262
"version": "om-version-from-release.json",
263263
"sign": true,
264-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-enterprise-ops-manager",
264+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/mongodb-enterprise-ops-manager"],
265265
"platforms": [
266266
"linux/amd64"
267267
]
268268
},
269269
"release": {
270270
"version": "om-version-from-release.json",
271271
"sign": true,
272-
"repository": "quay.io/mongodb/mongodb-enterprise-ops-manager",
272+
"repository": ["quay.io/mongodb/mongodb-enterprise-ops-manager"],
273273
"platforms": [
274274
"linux/amd64"
275275
]
@@ -309,15 +309,15 @@
309309
"helm-charts": {
310310
"mongodb-kubernetes": {
311311
"patch": {
312-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/helm-charts"
312+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/helm-charts"]
313313
},
314314
"staging": {
315315
"sign": true,
316-
"repository": "268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/helm-charts"
316+
"repository": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/staging/helm-charts"]
317317
},
318318
"release": {
319319
"sign": true,
320-
"repository": "quay.io/mongodb/helm-charts"
320+
"repository": ["quay.io/mongodb/helm-charts"]
321321
}
322322
}
323323
}

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, Optional, Tuple
1212

13+
import python_on_whales
1314
import requests
1415
from opentelemetry import trace
1516
from packaging.version import Version
@@ -37,29 +38,30 @@ def build_image(
3738
build_path: str = ".",
3839
):
3940
"""
40-
Build an image then (optionally) sign the result.
41+
Build an image (optionally) sign, then tag and push to all repositories in the registry list.
4142
"""
4243
image_name = build_configuration.image_name()
4344
span = trace.get_current_span()
4445
span.set_attribute("mck.image_name", image_name)
4546

46-
base_registry = build_configuration.base_registry()
47+
registries = build_configuration.get_registries
48+
4749
build_args = build_args or {}
4850

4951
if build_args:
5052
span.set_attribute("mck.build_args", str(build_args))
51-
span.set_attribute("mck.registry", base_registry)
53+
span.set_attribute("mck.registries", str(registries))
5254
span.set_attribute("mck.platforms", build_configuration.platforms)
5355

54-
# Build docker registry URI and call build_image
55-
image_full_uri = f"{build_configuration.registry}:{build_configuration.version}"
56+
# Build the image once with all repository tags
57+
all_tags = [f"{registry}:{build_configuration.version}" for registry in build_configuration.registry]
5658

5759
logger.info(
58-
f"Building {image_full_uri} for platforms={build_configuration.platforms}, dockerfile args: {build_args}"
60+
f"Building image with tags {all_tags} for platforms={build_configuration.platforms}, dockerfile args: {build_args}"
5961
)
6062

6163
execute_docker_build(
62-
tag=image_full_uri,
64+
tags=all_tags,
6365
dockerfile=build_configuration.dockerfile_path,
6466
path=build_path,
6567
args=build_args,
@@ -71,8 +73,9 @@ def build_image(
7173
logger.info("Logging in MongoDB Artifactory for Garasign image")
7274
mongodb_artifactory_login()
7375
logger.info("Signing image")
74-
sign_image(build_configuration.registry, build_configuration.version)
75-
verify_signature(build_configuration.registry, build_configuration.version)
76+
for registry in build_configuration.registry:
77+
sign_image(registry, build_configuration.version)
78+
verify_signature(registry, build_configuration.version)
7679

7780

7881
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)