Skip to content

Commit 00532b0

Browse files
committed
Use mirrored images from registry.ddbuild.io for all image references
- Add mirror_images.py for lock file generation, lint checking, and mirroring - Add mirror_images.lock.yaml with resolved digests for all images - Use MIRROR_REGISTRY ARG for flexible image sourcing in Dockerfiles - Add GitLab CI jobs for linting and mirroring images - Auto-cancel previous pipelines on new push - Add AGENTS.md with codebase overview for AI agents
1 parent 7b8a6ad commit 00532b0

21 files changed

Lines changed: 1470 additions & 66 deletions

File tree

.github/workflows/system-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
# - https://github.com/DataDog/system-tests/blob/main/utils/scripts/load-binary.sh
2020
NGINX_VERSION: 1.29.5
2121
WAF: ON
22-
BASE_IMAGE: alpine:3.20.3
22+
MIRROR_REGISTRY: ""
2323
steps:
2424
- name: checkout
2525
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0

.gitlab-ci.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
1+
workflow:
2+
auto_cancel:
3+
on_new_commit: interruptible
4+
15
stages:
26
- build-and-test-fast
37
- build-all
48
- test-all
9+
- mirror-images
510
- benchmarks
611

12+
default:
13+
interruptible: true
14+
715
include:
816
- local: ".gitlab/build-and-test-all.yml"
917
- local: ".gitlab/build-and-test-fast.yml"
18+
- local: ".gitlab/mirror.yml"
1019

1120
macrobenchmarks:
1221
stage: benchmarks

.gitlab/build-and-test-all.yml

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -137,83 +137,83 @@ test-nginx-all:
137137
parallel:
138138
matrix:
139139
- ARCH: ["amd64", "arm64"]
140-
BASE_IMAGE: ["nginx:1.24.0", "nginx:1.24.0-alpine"]
140+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.24.0", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.24.0-alpine"]
141141
NGINX_VERSION: ["1.24.0"]
142142
WAF: ["ON", "OFF"]
143143
- ARCH: ["amd64", "arm64"]
144-
BASE_IMAGE: ["nginx:1.25.0", "nginx:1.25.0-alpine"]
144+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.0", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.0-alpine"]
145145
NGINX_VERSION: ["1.25.0"]
146146
WAF: ["ON", "OFF"]
147147
- ARCH: ["amd64", "arm64"]
148-
BASE_IMAGE: ["nginx:1.25.1", "nginx:1.25.1-alpine"]
148+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.1", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.1-alpine"]
149149
NGINX_VERSION: ["1.25.1"]
150150
WAF: ["ON", "OFF"]
151151
- ARCH: ["amd64", "arm64"]
152-
BASE_IMAGE: ["nginx:1.25.2", "nginx:1.25.2-alpine"]
152+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.2", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.2-alpine"]
153153
NGINX_VERSION: ["1.25.2"]
154154
WAF: ["ON", "OFF"]
155155
- ARCH: ["amd64", "arm64"]
156-
BASE_IMAGE: ["nginx:1.25.3", "nginx:1.25.3-alpine"]
156+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.3", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.3-alpine"]
157157
NGINX_VERSION: ["1.25.3"]
158158
WAF: ["ON", "OFF"]
159159
- ARCH: ["amd64", "arm64"]
160-
BASE_IMAGE: ["nginx:1.25.4", "nginx:1.25.4-alpine"]
160+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.4", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.4-alpine"]
161161
NGINX_VERSION: ["1.25.4"]
162162
WAF: ["ON", "OFF"]
163163
- ARCH: ["amd64", "arm64"]
164-
BASE_IMAGE: ["nginx:1.25.5", "nginx:1.25.5-alpine"]
164+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.5", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.5-alpine"]
165165
NGINX_VERSION: ["1.25.5"]
166166
WAF: ["ON", "OFF"]
167167
- ARCH: ["amd64", "arm64"]
168-
BASE_IMAGE: ["nginx:1.26.0", "nginx:1.26.0-alpine"]
168+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.0", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.0-alpine"]
169169
NGINX_VERSION: ["1.26.0"]
170170
WAF: ["ON", "OFF"]
171171
- ARCH: ["amd64", "arm64"]
172-
BASE_IMAGE: ["nginx:1.26.1", "nginx:1.26.1-alpine"]
172+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.1", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.1-alpine"]
173173
NGINX_VERSION: ["1.26.1"]
174174
WAF: ["ON", "OFF"]
175175
- ARCH: ["amd64", "arm64"]
176-
BASE_IMAGE: ["nginx:1.26.2", "nginx:1.26.2-alpine"]
176+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.2", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.2-alpine"]
177177
NGINX_VERSION: ["1.26.2"]
178178
WAF: ["ON", "OFF"]
179179
- ARCH: ["amd64", "arm64"]
180-
BASE_IMAGE: ["nginx:1.26.3", "nginx:1.26.3-alpine"]
180+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.3", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.3-alpine"]
181181
NGINX_VERSION: ["1.26.3"]
182182
WAF: ["ON", "OFF"]
183183
- ARCH: ["amd64", "arm64"]
184-
BASE_IMAGE: ["nginx:1.27.0", "nginx:1.27.0-alpine"]
184+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.0", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.0-alpine"]
185185
NGINX_VERSION: ["1.27.0"]
186186
WAF: ["ON", "OFF"]
187187
- ARCH: ["amd64", "arm64"]
188-
BASE_IMAGE: ["nginx:1.27.1", "nginx:1.27.1-alpine"]
188+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.1", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.1-alpine"]
189189
NGINX_VERSION: ["1.27.1"]
190190
WAF: ["ON", "OFF"]
191191
- ARCH: ["amd64", "arm64"]
192-
BASE_IMAGE: ["nginx:1.27.2", "nginx:1.27.2-alpine"]
192+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.2", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.2-alpine"]
193193
NGINX_VERSION: ["1.27.2"]
194194
WAF: ["ON", "OFF"]
195195
- ARCH: ["amd64", "arm64"]
196-
BASE_IMAGE: ["nginx:1.27.3", "nginx:1.27.3-alpine"]
196+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.3", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.3-alpine"]
197197
NGINX_VERSION: ["1.27.3"]
198198
WAF: ["ON", "OFF"]
199199
- ARCH: ["amd64", "arm64"]
200-
BASE_IMAGE: ["nginx:1.27.4", "nginx:1.27.4-alpine"]
200+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.4", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.4-alpine"]
201201
NGINX_VERSION: ["1.27.4"]
202202
WAF: ["ON", "OFF"]
203203
- ARCH: ["amd64", "arm64"]
204-
BASE_IMAGE: ["nginx:1.27.5", "nginx:1.27.5-alpine"]
204+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.5", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.5-alpine"]
205205
NGINX_VERSION: ["1.27.5"]
206206
WAF: ["ON", "OFF"]
207207
- ARCH: ["amd64", "arm64"]
208-
BASE_IMAGE: ["nginx:1.28.0", "nginx:1.28.0-alpine"]
208+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.0", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.0-alpine"]
209209
NGINX_VERSION: ["1.28.0"]
210210
WAF: ["ON", "OFF"]
211211
- ARCH: ["amd64", "arm64"]
212-
BASE_IMAGE: ["nginx:1.28.1", "nginx:1.28.1-alpine"]
212+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.1", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.1-alpine"]
213213
NGINX_VERSION: ["1.28.1"]
214214
WAF: ["ON", "OFF"]
215215
- ARCH: ["amd64", "arm64"]
216-
BASE_IMAGE: ["nginx:1.28.2", "nginx:1.28.2-alpine"]
216+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.2", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.2-alpine"]
217217
NGINX_VERSION: ["1.28.2"]
218218
WAF: ["ON", "OFF"]
219219

@@ -225,31 +225,31 @@ test-nginx-all-bis:
225225
parallel:
226226
matrix:
227227
- ARCH: ["amd64", "arm64"]
228-
BASE_IMAGE: ["nginx:1.29.0", "nginx:1.29.0-alpine"]
228+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.0", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.0-alpine"]
229229
NGINX_VERSION: ["1.29.0"]
230230
WAF: ["ON", "OFF"]
231231
- ARCH: ["amd64", "arm64"]
232-
BASE_IMAGE: ["nginx:1.29.1", "nginx:1.29.1-alpine"]
232+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.1", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.1-alpine"]
233233
NGINX_VERSION: ["1.29.1"]
234234
WAF: ["ON", "OFF"]
235235
- ARCH: ["amd64", "arm64"]
236-
BASE_IMAGE: ["nginx:1.29.2", "nginx:1.29.2-alpine"]
236+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.2", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.2-alpine"]
237237
NGINX_VERSION: ["1.29.2"]
238238
WAF: ["ON", "OFF"]
239239
- ARCH: ["amd64", "arm64"]
240-
BASE_IMAGE: ["nginx:1.29.3", "nginx:1.29.3-alpine"]
240+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.3", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.3-alpine"]
241241
NGINX_VERSION: ["1.29.3"]
242242
WAF: ["ON", "OFF"]
243243
- ARCH: ["amd64", "arm64"]
244-
BASE_IMAGE: ["nginx:1.29.4", "nginx:1.29.4-alpine"]
244+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.4", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.4-alpine"]
245245
NGINX_VERSION: ["1.29.4"]
246246
WAF: ["ON", "OFF"]
247247
- ARCH: ["amd64", "arm64"]
248-
BASE_IMAGE: ["nginx:1.29.5", "nginx:1.29.5-alpine"]
248+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.5", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.5-alpine"]
249249
NGINX_VERSION: ["1.29.5"]
250250
WAF: ["ON", "OFF"]
251251
- ARCH: ["amd64", "arm64"]
252-
BASE_IMAGE: ["amazonlinux:2023.3.20240219.0"]
252+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/amazonlinux:2023.3.20240219.0"]
253253
NGINX_VERSION: ["1.24.0"]
254254
WAF: ["ON", "OFF"]
255255

@@ -260,27 +260,27 @@ test-nginx-rum-all:
260260
parallel:
261261
matrix:
262262
- ARCH: ["amd64", "arm64"]
263-
BASE_IMAGE: ["nginx:1.24.0"]
263+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.24.0"]
264264
NGINX_VERSION: ["1.24.0"]
265265
WAF: ["OFF"]
266266
- ARCH: ["amd64", "arm64"]
267-
BASE_IMAGE: ["nginx:1.25.5"]
267+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.5"]
268268
NGINX_VERSION: ["1.25.5"]
269269
WAF: ["OFF"]
270270
- ARCH: ["amd64", "arm64"]
271-
BASE_IMAGE: ["nginx:1.26.3"]
271+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.3"]
272272
NGINX_VERSION: ["1.26.3"]
273273
WAF: ["OFF"]
274274
- ARCH: ["amd64", "arm64"]
275-
BASE_IMAGE: ["nginx:1.27.5"]
275+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.5"]
276276
NGINX_VERSION: ["1.27.5"]
277277
WAF: ["OFF"]
278278
- ARCH: ["amd64", "arm64"]
279-
BASE_IMAGE: ["nginx:1.28.2"]
279+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.2"]
280280
NGINX_VERSION: ["1.28.2"]
281281
WAF: ["OFF"]
282282
- ARCH: ["amd64", "arm64"]
283-
BASE_IMAGE: ["nginx:1.29.5"]
283+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.5"]
284284
NGINX_VERSION: ["1.29.5"]
285285
WAF: ["OFF"]
286286

.gitlab/build-and-test-fast.yml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ shellcheck:
2222
image: registry.ddbuild.io/ci/nginx-datadog/nginx_musl_toolchain
2323
tags: ["arch:amd64"]
2424
script:
25-
- find bin/ test/ example/ -type f -executable | xargs shellcheck --exclude SC1071,SC1091,SC2317
25+
- find bin/ test/ example/ -type f -executable -not -name '*.py' | xargs shellcheck --exclude SC1071,SC1091,SC2317
2626

2727
build-nginx-fast:
2828
extends:
@@ -86,31 +86,31 @@ test-nginx-fast:
8686
parallel:
8787
matrix:
8888
- ARCH: ["amd64", "arm64"]
89-
BASE_IMAGE: ["nginx:1.24.0", "nginx:1.24.0-alpine"]
89+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.24.0", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.24.0-alpine"]
9090
NGINX_VERSION: ["1.24.0"]
9191
WAF: ["ON", "OFF"]
9292
- ARCH: ["amd64", "arm64"]
93-
BASE_IMAGE: ["nginx:1.25.5", "nginx:1.25.5-alpine"]
93+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.5", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.5-alpine"]
9494
NGINX_VERSION: ["1.25.5"]
9595
WAF: ["ON", "OFF"]
9696
- ARCH: ["amd64", "arm64"]
97-
BASE_IMAGE: ["nginx:1.26.3", "nginx:1.26.3-alpine"]
97+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.3", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.3-alpine"]
9898
NGINX_VERSION: ["1.26.3"]
9999
WAF: ["ON", "OFF"]
100100
- ARCH: ["amd64", "arm64"]
101-
BASE_IMAGE: ["nginx:1.27.5", "nginx:1.27.5-alpine"]
101+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.5", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.5-alpine"]
102102
NGINX_VERSION: ["1.27.5"]
103103
WAF: ["ON", "OFF"]
104104
- ARCH: ["amd64", "arm64"]
105-
BASE_IMAGE: ["nginx:1.28.2", "nginx:1.28.2-alpine"]
105+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.2", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.2-alpine"]
106106
NGINX_VERSION: ["1.28.2"]
107107
WAF: ["ON", "OFF"]
108108
- ARCH: ["amd64", "arm64"]
109-
BASE_IMAGE: ["nginx:1.29.5", "nginx:1.29.5-alpine"]
109+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.5", "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.5-alpine"]
110110
NGINX_VERSION: ["1.29.5"]
111111
WAF: ["ON", "OFF"]
112112
- ARCH: ["amd64", "arm64"]
113-
BASE_IMAGE: ["amazonlinux:2023.3.20240219.0"]
113+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/amazonlinux:2023.3.20240219.0"]
114114
NGINX_VERSION: ["1.24.0"]
115115
WAF: ["ON", "OFF"]
116116

@@ -145,27 +145,27 @@ test-nginx-rum-fast:
145145
parallel:
146146
matrix:
147147
- ARCH: ["amd64", "arm64"]
148-
BASE_IMAGE: ["nginx:1.24.0"]
148+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.24.0"]
149149
NGINX_VERSION: ["1.24.0"]
150150
WAF: ["OFF"]
151151
- ARCH: ["amd64", "arm64"]
152-
BASE_IMAGE: ["nginx:1.25.5"]
152+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.25.5"]
153153
NGINX_VERSION: ["1.25.5"]
154154
WAF: ["OFF"]
155155
- ARCH: ["amd64", "arm64"]
156-
BASE_IMAGE: ["nginx:1.26.3"]
156+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.3"]
157157
NGINX_VERSION: ["1.26.3"]
158158
WAF: ["OFF"]
159159
- ARCH: ["amd64", "arm64"]
160-
BASE_IMAGE: ["nginx:1.27.5"]
160+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.27.5"]
161161
NGINX_VERSION: ["1.27.5"]
162162
WAF: ["OFF"]
163163
- ARCH: ["amd64", "arm64"]
164-
BASE_IMAGE: ["nginx:1.28.2"]
164+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.28.2"]
165165
NGINX_VERSION: ["1.28.2"]
166166
WAF: ["OFF"]
167167
- ARCH: ["amd64", "arm64"]
168-
BASE_IMAGE: ["nginx:1.29.5"]
168+
BASE_IMAGE: ["registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.29.5"]
169169
NGINX_VERSION: ["1.29.5"]
170170
WAF: ["OFF"]
171171

@@ -175,7 +175,7 @@ coverage:
175175
- .build
176176
variables:
177177
ARCH: "amd64"
178-
BASE_IMAGE: "nginx:1.26.0"
178+
BASE_IMAGE: "registry.ddbuild.io/ci/nginx-datadog/tests/images/nginx:1.26.0"
179179
NGINX_VERSION: "1.26.0"
180180
WAF: "ON"
181181
tags: ["docker-in-docker:$ARCH"]

.gitlab/common.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,15 @@
7979
variables:
8080
NGINX_FLAVOR: ingress-nginx
8181
script:
82-
- python3 test/bin/run.py --image registry.k8s.io/ingress-nginx/controller:v$INGRESS_NGINX_VERSION --module-path artifacts-ingress/$ARCH/$INGRESS_NGINX_VERSION/ngx_http_datadog_module.so -- --verbose --failfast
82+
- python3 test/bin/run.py --image registry.ddbuild.io/ci/nginx-datadog/tests/images/registry.k8s.io/ingress-nginx/controller:v$INGRESS_NGINX_VERSION --module-path artifacts-ingress/$ARCH/$INGRESS_NGINX_VERSION/ngx_http_datadog_module.so -- --verbose --failfast
8383
artifacts:
8484
paths:
8585
- test/logs/test.log
8686

8787
.test-openresty:
8888
extends: .test
8989
script:
90-
- python3 test/bin/run.py --image openresty/openresty:$RESTY_VERSION-alpine --module-path artifacts-openresty/$ARCH/$RESTY_VERSION/$WAF/ngx_http_datadog_module.so -- --verbose --failfast
90+
- python3 test/bin/run.py --image registry.ddbuild.io/ci/nginx-datadog/tests/images/openresty/openresty:$RESTY_VERSION-alpine --module-path artifacts-openresty/$ARCH/$RESTY_VERSION/$WAF/ngx_http_datadog_module.so -- --verbose --failfast
9191
artifacts:
9292
paths:
9393
- test/logs/test.log

.gitlab/mirror.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
lint-mirror-images:
2+
stage: mirror-images
3+
# Use the docker image for its pre-configured registry auth helpers.
4+
image: registry.ddbuild.io/images/docker:27.3.1
5+
tags: ["arch:amd64"]
6+
needs: []
7+
rules:
8+
- when: always
9+
script:
10+
- curl -LsSf https://astral.sh/uv/install.sh | sh
11+
- export PATH="$HOME/.local/bin:$PATH"
12+
- uv run bin/mirror_images.py lint
13+
14+
mirror-images:
15+
stage: mirror-images
16+
# Use the docker image for its pre-configured registry auth helpers
17+
# and crane binary for copying images.
18+
image: registry.ddbuild.io/images/docker:27.3.1
19+
tags: ["arch:amd64"]
20+
needs: []
21+
rules:
22+
- when: always
23+
script:
24+
- curl -LsSf https://astral.sh/uv/install.sh | sh
25+
- export PATH="$HOME/.local/bin:$PATH"
26+
- uv run bin/mirror_images.py mirror

AGENTS.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Agents Guide
2+
3+
## Docker Image Mirroring
4+
5+
All public Docker images must use `registry.ddbuild.io` mirrors — never reference Docker Hub, ghcr.io, or registry.k8s.io directly. Managed by `bin/mirror_images.py`:
6+
7+
```bash
8+
uv run bin/mirror_images.py add 'nginx:1.30.0' # add to mirror_images.yaml
9+
uv run bin/mirror_images.py lock # resolve digests -> lock file
10+
uv run bin/mirror_images.py relock 'nginx:1.29.*' # re-resolve matching images
11+
uv run bin/mirror_images.py mirror # push to registry
12+
uv run bin/mirror_images.py lint # check for public refs
13+
```
14+
15+
- Config: `mirror_images.yaml` / `mirror_images.lock.yaml`
16+
- Mirror prefix: `registry.ddbuild.io/ci/nginx-datadog/tests/images/`
17+
- `build_env/Dockerfile` uses `MIRROR_REGISTRY` ARG (set to `""` in GHA to use public registries)

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ build-push-musl-toolchain:
5959

6060
.PHONY: build-local-musl-toolchain
6161
build-local-musl-toolchain:
62-
docker build --progress=plain --platform $(DOCKER_PLATFORM) --build-arg ARCH=$(ARCH) $(if $(BASE_IMAGE), --build-arg BASE_IMAGE=$(BASE_IMAGE),) -t $(BUILD_IMAGE) build_env
62+
docker build --progress=plain --platform $(DOCKER_PLATFORM) --build-arg ARCH=$(ARCH) $(if $(filter environment command,$(origin MIRROR_REGISTRY)),--build-arg MIRROR_REGISTRY=$(MIRROR_REGISTRY),) -t $(BUILD_IMAGE) build_env
6363

6464
.PHONY: build-push-test-image
6565
build-push-test-image:

0 commit comments

Comments
 (0)