Skip to content

Expand list of Docker images - #66

Open
marcosbento wants to merge 9 commits into
mainfrom
task/expand_docker_image_list
Open

marcosbento wants to merge 9 commits into
mainfrom
task/expand_docker_image_list

Conversation

@marcosbento

Copy link
Copy Markdown

Description

As per PR title -- each commit adds a new distro image.

The content of the images was extracted from the information in runners-infra and at the same time trying to mimic the already existing dockerfiles.

Contributor Declaration

By opening this pull request, I affirm the following:

  • All authors agree to the Contributor License Agreement.
  • The code follows the project's coding standards.
  • I have performed self-review and added comments where needed.
  • I have added or updated tests to verify that my changes are effective and functional.
  • I have run all existing tests and confirmed they pass.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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.

Comment on lines +211 to +214
- image: ubuntu22.04-gfortran11-boost-qt6
declares: ubuntu22.04/gfortran11-boost-qt6
cxx: g++-11
cxx-major: '11'

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread IMAGES.md
Comment thread IMAGES.md
Comment thread IMAGES.md
Comment thread IMAGES.md
@marcosbento
marcosbento force-pushed the task/expand_docker_image_list branch from de6e225 to 29b3c3b Compare September 17, 2026 06:50
@mcocdawc

mcocdawc commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

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.
It's fully on me, that the coverage was so lackluster before, sorry.
At the moment only the base images are tested for PRs and I would like to also do the toolchain variants.
I'll add this just now + I'll go through the copilot review; I have the feeling it flagged false positives.

  • I just saw that you are in draft mode anyway. :-D

@marcosbento

Copy link
Copy Markdown
Author

@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! :-)

@mcocdawc mcocdawc left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I incorporated tests in #67 and ported the build-image.sh to python. It's logic became too complicated to remain bash #68

Could you update with main.

Comment on lines +211 to +214
- image: ubuntu22.04-gfortran11-boost-qt6
declares: ubuntu22.04/gfortran11-boost-qt6
cxx: g++-11
cxx-major: '11'

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
@marcosbento
marcosbento force-pushed the task/expand_docker_image_list branch from ed36cb9 to 87f2b53 Compare September 17, 2026 14:33
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.
@marcosbento

Copy link
Copy Markdown
Author

@mcocdawc, rebased and trimmed the changes, which are now solely focused on extending the list of Dockerfiles.

@marcosbento
marcosbento marked this pull request as ready for review September 17, 2026 15:04
@mcocdawc
mcocdawc requested a balanced review from Copilot September 17, 2026 15:39

@mcocdawc mcocdawc left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very good. Thank you!

Before approving I have two simple comments

shell: bash
run: cat "${{ runner.temp }}/sccache-server.log" || true

# Per-image contract checks (verify-image.sh), one leg per toolchain image.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

@mcocdawc mcocdawc Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there a reason to remove the filter? It's slightly safer to have it.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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

Comment thread public-images/fedora43/base/Dockerfile
Comment thread public-images/fedora44/base/Dockerfile
Comment thread public-images/rocky10/base/Dockerfile
@mcocdawc

Copy link
Copy Markdown
Collaborator

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).

@mcocdawc

Copy link
Copy Markdown
Collaborator

Hey @marcosbento ,

I made a few important changes in #71

  1. the base ships no gcc
  2. make gccN part of the image name
  3. require all compilers to support openMP. This requires mostly the clang compilers to have additional packages; the gnu compilers generally come with openMP support.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants