I count 98 images defined in integration/config. With the new Zuul and Nodepool, we will have the jobs tied to labels which themselves are associated to one, or several, image (s). Example:
labels: - name: quibble-bullseye-php81 - name: quibble-bullseye-php82 - name: quibble-bullseye-php83 - name: quibble-bullseye-php84 providers: - name: mediawiki max-servers: 8 labels: - !!merge : *default_label name: quibble-bullseye-php81 image: docker-registry.wikimedia.org/releng/quibble-bullseye-php81:1.14.1-s2 - !!merge : *default_label name: quibble-bullseye-php82 image: docker-registry.wikimedia.org/releng/quibble-bullseye-php82:1.14.1-s2 - !!merge : *default_label name: quibble-bullseye-php83 image: docker-registry.wikimedia.org/releng/quibble-bullseye-php83:1.14.1-s2 - !!merge : *default_label name: quibble-bullseye-php84 image: docker-registry.wikimedia.org/releng/quibble-bullseye-php84:1.14.1-s2
Having 98 such labels is a lot, we can certainly find a way to reduce them by aggregating images.
For example the php-ast image has been removed by embedding the build in the existing php images T396312. As part of doing that task, we have php??-compile images which I guess can be merged in?
Same for composer for which we have three variants per PHP version:
composer-package-php81 composer-package-php82 composer-package-php83 composer-package-php84 composer-php81 composer-php82 composer-php83 composer-php84 composer-scratch composer-test-php81 composer-test-php82 composer-test-php83 composer-test-php84
We can surely provide a single php81 image that has composer, can do the package work and compile an extension.
Same for node:
node24 node24-test node24-test-browser node24-test-browser-php81-composer node24-test-browser-php83-composer
Though the browser ones are heavy.