Allow building the Gitlab docker image in Gitlab#8507
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9438b27962
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
BenchmarksBenchmark execution time: 2026-05-05 17:17:19 Comparing candidate commit f9ade5e in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 27 metrics, 0 unstable metrics, 59 known flaky benchmarks, 28 flaky benchmarks without significant changes.
|
e1f9012 to
2912ca7
Compare
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8507) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard. Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph). Duration chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8507) - mean (73ms) : 70, 76
master - mean (76ms) : 72, 80
section Bailout
This PR (8507) - mean (77ms) : 75, 79
master - mean (78ms) : 75, 81
section CallTarget+Inlining+NGEN
This PR (8507) - mean (1,085ms) : 1027, 1142
master - mean (1,086ms) : 1045, 1126
FakeDbCommand (.NET Core 3.1)gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8507) - mean (115ms) : 112, 118
master - mean (123ms) : 114, 132
section Bailout
This PR (8507) - mean (119ms) : 112, 126
master - mean (123ms) : 118, 128
section CallTarget+Inlining+NGEN
This PR (8507) - mean (786ms) : 754, 817
master - mean (854ms) : 751, 957
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8507) - mean (102ms) : 97, 107
master - mean (102ms) : 98, 105
section Bailout
This PR (8507) - mean (106ms) : 101, 111
master - mean (107ms) : 100, 115
section CallTarget+Inlining+NGEN
This PR (8507) - mean (943ms) : 910, 976
master - mean (949ms) : 910, 989
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8507) - mean (101ms) : 98, 104
master - mean (101ms) : 97, 105
section Bailout
This PR (8507) - mean (105ms) : 100, 111
master - mean (103ms) : 99, 108
section CallTarget+Inlining+NGEN
This PR (8507) - mean (827ms) : 791, 864
master - mean (828ms) : 796, 861
HttpMessageHandler (.NET Framework 4.8)gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8507) - mean (211ms) : 199, 224
master - mean (208ms) : 201, 214
section Bailout
This PR (8507) - mean (214ms) : 201, 227
master - mean (214ms) : 206, 222
section CallTarget+Inlining+NGEN
This PR (8507) - mean (1,223ms) : 1173, 1274
master - mean (1,224ms) : 1171, 1277
HttpMessageHandler (.NET Core 3.1)gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8507) - mean (301ms) : 283, 319
master - mean (295ms) : 283, 306
section Bailout
This PR (8507) - mean (302ms) : 282, 322
master - mean (296ms) : 286, 306
section CallTarget+Inlining+NGEN
This PR (8507) - mean (992ms) : 961, 1023
master - mean (980ms) : 952, 1008
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8507) - mean (295ms) : 273, 316
master - mean (292ms) : 277, 306
section Bailout
This PR (8507) - mean (298ms) : 273, 324
master - mean (292ms) : 277, 307
section CallTarget+Inlining+NGEN
This PR (8507) - mean (1,189ms) : 1144, 1235
master - mean (1,171ms) : 1134, 1209
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8507) - mean (299ms) : 276, 323
master - mean (294ms) : 282, 307
section Bailout
This PR (8507) - mean (305ms) : 275, 335
master - mean (295ms) : 282, 308
section CallTarget+Inlining+NGEN
This PR (8507) - mean (1,106ms) : 994, 1218
master - mean (1,078ms) : 987, 1170
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7fe561b to
f9ade5e
Compare
| - Windows PC/Virtual Machine | ||
| - Docker Desktop with Windows containers enabled | ||
| - Push access to `datadog` DockerHub organization | ||
| This is a single-PR flow. You do not need a local Windows machine with Docker Desktop, and you do not need to touch `DataDog/images`. |
Summary of changes
Reason for change
Today, updating the windows gitlab image involves
That's a lot of faff. Instead, this PR changes it so that building the docker image is just "click a button in GitLab"
Implementation details
The crux of the implementation uses a hash of the contents of the gitlab dockerimage folder. There's other ways we could do this, but this has the nice behaviour of meaning your build will fail if you change something there and don't rebuild the image (e.g. see #8474).
The first time you change something in this folder, the
Buildstage will fail:You can then click on the pipeline, click build-windows-ci-image, and go make a coffee ☕ After ~45 mins, the new image should have been pushed, and you can re-run the build, with your new changes.
Test coverage
I tested the workflow for this PR, and it works 🙌
Other details
One issue I had to deal with is the 2019/2022 issue. You can only run docker images of the same base Windows version on the host, and the
registry.ddbuild.io/ci-identities/ci-identities-gitlab-job-client:v0.2.0-windows-amd64image is apparently a 2022 host. Seeing as we really should be using 2022 anyway (and we use 2022 in azure devops), switched everything to be 2022 instead