Expand list of Docker images - #66
marcosbento wants to merge 9 commits into
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
New dependent images bypass pre-merge builds, and several platform notes are outdated.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Expands public CI coverage across eight additional Linux release platforms.
Changes:
- Adds base, compiler, and Boost/Qt images.
- Documents the expanded image matrix.
- Extends manual image contract smoke tests.
File summaries
| File | Description |
|---|---|
public-images/ubuntu22.04/base/Dockerfile |
Adds Ubuntu 22.04 base. |
public-images/ubuntu22.04/gfortran11/Dockerfile |
Adds GCC/GFortran 11. |
public-images/ubuntu22.04/gfortran11-boost-qt6/Dockerfile |
Adds Boost and Qt6. |
public-images/ubuntu26.04/base/Dockerfile |
Adds Ubuntu 26.04 base. |
public-images/ubuntu26.04/gfortran15/Dockerfile |
Adds GCC/GFortran 15. |
public-images/ubuntu26.04/gfortran15-boost-qt6/Dockerfile |
Adds Boost and Qt6. |
public-images/rocky9/base/Dockerfile |
Adds Rocky Linux 9 base. |
public-images/rocky9/gfortran11/Dockerfile |
Adds GCC/GFortran 11. |
public-images/rocky9/gfortran11-boost-qt5/Dockerfile |
Adds Boost and Qt5. |
public-images/rocky10/base/Dockerfile |
Adds Rocky Linux 10 base. |
public-images/rocky10/gfortran14/Dockerfile |
Adds GCC/GFortran 14. |
public-images/rocky10/gfortran14-boost-qt6/Dockerfile |
Adds Boost and Qt6. |
public-images/fedora43/base/Dockerfile |
Adds Fedora 43 base. |
public-images/fedora43/gfortran15/Dockerfile |
Adds GCC/GFortran 15. |
public-images/fedora43/gfortran15-boost-qt6/Dockerfile |
Adds Boost and Qt6. |
public-images/fedora44/base/Dockerfile |
Adds Fedora 44 base. |
public-images/fedora44/gfortran16/Dockerfile |
Adds GCC/GFortran 16. |
public-images/fedora44/gfortran16-boost-qt6/Dockerfile |
Adds Boost and Qt6. |
public-images/debian12/base/Dockerfile |
Adds Debian 12 base. |
public-images/debian12/gfortran12/Dockerfile |
Adds GCC/GFortran 12. |
public-images/debian12/gfortran12-boost-qt6/Dockerfile |
Adds Boost and Qt6. |
public-images/debian13/base/Dockerfile |
Adds Debian 13 base. |
public-images/debian13/gfortran14/Dockerfile |
Adds GCC/GFortran 14. |
public-images/debian13/gfortran14-boost-qt6/Dockerfile |
Adds Boost and Qt6. |
IMAGES.md |
Catalogues platforms and toolchains. |
.github/workflows/smoke-test-runners.yml |
Adds image contract checks. |
Review details
- Files reviewed: 26/26 changed files
- Comments generated: 5
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| - image: ubuntu22.04-gfortran11-boost-qt6 | ||
| declares: ubuntu22.04/gfortran11-boost-qt6 | ||
| cxx: g++-11 | ||
| cxx-major: '11' |
There was a problem hiding this comment.
the smoke-test-runners should not go through all images.
It's task is about quickly testing if the runner-groups and the S3 storage work.
Especially if people suspect connection issues for failing tests, they can just dispatch this test.
-----–––––––––––-------------------------
The testing of dependents is already adressed
de6e225 to
29b3c3b
Compare
|
Hey @marcosbento, Thank you for this great addition. If we are so drastically expanding the number of images I would like to add a few more tests.
|
|
@mcocdawc , I did some expanding of the tests, ensuring also that "derived" images are rebuild every time the "base" image is updated. Please have a look at my latest commits. This is just all draft, of course... Hopefully it will inspire you! :-) |
| - image: ubuntu22.04-gfortran11-boost-qt6 | ||
| declares: ubuntu22.04/gfortran11-boost-qt6 | ||
| cxx: g++-11 | ||
| cxx-major: '11' |
There was a problem hiding this comment.
the smoke-test-runners should not go through all images.
It's task is about quickly testing if the runner-groups and the S3 storage work.
Especially if people suspect connection issues for failing tests, they can just dispatch this test.
-----–––––––––––-------------------------
The testing of dependents is already adressed
Provide base, GNU 12, and Boost/Qt 6 variants using Debian's system Python 3.11 and a pinned CMake that meets the project floor. Include the full variant in runner smoke tests and validate the image graph and self-description contract.
Provide base, GNU 14, and Boost/Qt 6 variants using Debian 13's native Python and CMake toolchain. Include the full variant in runner smoke tests and extend the shared Debian image contract checks.
Provide base, GNU 11, and Boost/Qt 5 variants on Rocky Linux 9.7 with Python 3.12 and native CMake. Replace curl-minimal with full curl during base setup, and cover the full variant in image contract smoke tests.
Provide base, GNU 14, and Boost/Qt 6 variants on Rocky Linux 10.1 using its native Python and CMake toolchain. Include the full variant in runner smoke tests and extend the shared image graph and metadata checks.
Provide base, GNU 15, and Boost/Qt 6 variants using Fedora 43's native Python, CMake, and GitHub CLI packages. Include the full variant in runner smoke tests and extend the shared image graph and metadata checks.
Provide base, GNU 16, and Boost/Qt 6 variants using Fedora 44's native Python, CMake, and GitHub CLI packages. Include the full variant in runner smoke tests and extend the shared image graph and metadata checks.
Provide base, GNU 11, and Boost/Qt 6 variants with a pinned Python 3.11 runtime for the baked infrastructure package. Use Jammy's versioned Qt 6 development packages and include the full variant in runner smoke tests.
Provide base, GNU 15, and Boost/Qt 6 variants using Ubuntu 26.04's native Python and CMake toolchain. Include the full variant in runner smoke tests and extend the shared image graph and metadata checks.
ed36cb9 to
87f2b53
Compare
Python 3.11 is the project's declared minimum and is used by the Debian 12 image. Python 3.11.2 does not support the tarfile extraction filter argument, so omit it when extracting the trusted archive created by the test itself.
|
@mcocdawc, rebased and trimmed the changes, which are now solely focused on extending the list of |
| shell: bash | ||
| run: cat "${{ runner.temp }}/sccache-server.log" || true | ||
|
|
||
| # Per-image contract checks (verify-image.sh), one leg per toolchain image. |
There was a problem hiding this comment.
With the amount of new images, the image-contract job can altogether go.
It's already enforced at construction of the images. Removing it keeps this test lean and focused on the availability of the runners and S3 storage.
| unpacked.mkdir() | ||
| with tarfile.open(staging / "source.tgz") as tar: | ||
| tar.extractall(unpacked, filter="data") | ||
| tar.extractall(unpacked) |
There was a problem hiding this comment.
is there a reason to remove the filter? It's slightly safer to have it.
There was a problem hiding this comment.
🟡 Changes recommended
Three RPM-based base images need DNF conflict handling for replacing curl-minimal with curl.
Get a fresh assessment by requesting another Copilot review.
Review details
- Files reviewed: 27/27 changed files
- Comments generated: 3
- Review effort level: Balanced
|
btw: the fact that https://github.com/ecmwf/ci-infrastructure/actions/runs/35240521586 fails for the new images is expected. Of course they cannot be downloaded if they were not uploaded yet. (which they will be, once they are in master). |
|
Hey @marcosbento , I made a few important changes in #71
|
Description
As per PR title -- each commit adds a new distro image.
The content of the images was extracted from the information in
runners-infraand at the same time trying to mimic the already existing dockerfiles.Contributor Declaration
By opening this pull request, I affirm the following: