Rework container image rebuilds
I maintainer di solito rispondono entro 1 giorno
@lbussell ci sta già lavorando.
Dal 8/7/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Current state
graph TD
subgraph docker-tools repo
check-base-images["check base images pipeline \n (multiple repos)"]
subscriptions[subscriptions.json]
end
subgraph consuming["consuming repo"]
build-pipeline[build-pipeline]
end
subgraph versions["versions repo"]
image-info[image-info.json]
end
subgraph acr
public["public images"]
end
check-base-images -->|reads| subscriptions
check-base-images -->|"reads (many)"| image-info
check-base-images -->|"queues (many)"| build-pipeline
subscriptions -->|"references (many)"| consuming
build-pipeline <-->|updates and reads| image-info
build-pipeline -->|pushes images| public
Problems with current setup
- Requires a separate repo to store
image-info.jsonmetadata file. Git is in the critical path for builds. - Only the docker-tools repo can queue base image re-bulids, and the docker-tools repo must know about all other consuming repos in order to queue their builds.
- The docker-tools repo and the consuming repos can go out-of-sync. For example, if the manifest.json or image-info formats change, then the docker-tools check-base-images pipeline can fail until all consuming repos have adopted the updated image-builder version.
Desired state
Key ideas:
- Consuming repos should own their own base image update pipeline + schedule.
- The docker-tools repo should provide sane defaults/pipeline templates for base image re-builds.
- Base image re-builds should work both in public and internal scenarios without extra work.
- There should not be a dependency on external repos or storage locations for the critical base image re-build path.
image-info.json, if it still needs to exist, should not be a source of truth. It should be computed separately, strictly downstream of image build pipelines.
graph TD
subgraph consuming[consuming repo]
check-base-images["check base images pipeline \n (one repo)"]
build-pipeline[build pipeline]
end
subgraph acr
public["public images \n with labels/annotations"]
end
public -->|reads| check-base-images
public -->|reads| build-pipeline
check-base-images -->|queues| build-pipeline
build-pipeline -->|pushes images| public
Future work
Here's the work that I see required to reach this desired state:
- #1602
- Attach metadata labels to images during build - #2163
- Make rebuild decisions repo-local
- Implement a new version of the
getStaleImagescommand which reads these labels to determine which images are out of date. - Implement a new pipeline which runs the new command and queues a build for stale images.
- Implement a new version of the
- Backwards compatibility with existing image-info.json publishing
- ImageBuilder should still synthesize image-info.json and write it to disk, at least for the time being.
- For backwards compatibility, we need to provide some kind paved path for publishing image-info.json to a location like a git repo, OCI artifact, or storage account. This could be in the form of a pipeline extension point/parameter, a new imagebuilder command, a totally new pipeline/template, or some combination of those.
- Lingua principale
- C#
- Stelle
- 182
- Fork
- 67
- Merge medio
- 2g 2h
- PR unite (30g)
- 17
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di dotnet/docker-tools
-
area-dockerfiles up-for-grabs
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
dotnet/docker-tools#2080 ·
I maintainer di solito rispondono entro 1 giorno
-
area-infrastructure
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
dotnet/docker-tools#2240 ·
I maintainer di solito rispondono entro 1 giorno
-
image-info.json's `commitUrl` is incorrect when manifest is not in repo rootForse di nuovo libera @lbussell l’ha presa 83 giorni fa e non c’è nessuna pull request aperta. Apertaarea-infrastructure
dotnet/docker-tools#2165 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Use image annotations to split public and internal EOL lifecycle annotationsForse di nuovo libera @lbussell l’ha presa 76 giorni fa e non c’è nessuna pull request aperta. Apertaarea-infrastructure
dotnet/docker-tools#2153 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
area-infrastructure up-for-grabs
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
dotnet/docker-tools#2094 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di dotnet/docker-tools
Issue simili
-
0 - Backlog Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
BrighterCommand/Brighter#4444 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
area:frontend bug FE P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
klasolsson81/jobbliggaren#1915 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
microsoft/vscode-copilotstudio#431 ·
I maintainer di solito rispondono entro 2 giorni