[Chapel Merge] Add a job to build Chapel Docker images

Branch: refs/heads/main
Revision: d8ce7c2149d0c07d29e53814cfe0c84ad61ddc1d
Author: arifthpe
Link: Add a job to build Chapel Docker images by arifthpe · Pull Request #29232 · chapel-lang/chapel · GitHub
Log Message:
Add a job to build Chapel Docker images (#29232)

Add jobs that build the chapel, chapel-gasnet, and
chapel-gasnet-smp Docker images, and push nightly- and commit
SHA-tagged images to Docker Hub from main.

Details:

  • Added to the Extended checks tier.
  • Implemented as a separate reusable workflow,
    docker-image-builds.yml, which gets called into.
  • Since the chapel-gasnet and chapel-gasnet-smp images depend on the
    chapel image, the base image is built first, followed by the two
    gasnet* images concurrently. In my testing, the total time to build
    them all is under an hour.
  • x86 and amd64 versions of each image are built separately, then merged
    by a subsequent job into a multiarch image. This is more complicated
    than just doing a multi-platform built with buildkit, but around 10x
    faster due to not needing to virtualize.
  • The single-arch images are pushed to an ephemeral registry running in
    the job (as pushing seems to be necessary to get a manifest for a
    single-arch image).
  • The resulting image is pushed to our Docker Hub if running on main,
    via the same condition as build-CI-container.

Future work:

  • Add a release mode for this job.

[reviewer info placeholder]

Compare: Comparing 7260caffc65bd5b0952d720d951f12e42da252d3...ce469063fab1693483407d91c34d3b94a7e871d3 · chapel-lang/chapel · GitHub

Diff:
A .github/workflows/docker-image-builds.yml
M .github/workflows/extended-ci-checks.yml
https://github.com/chapel-lang/chapel/pull/29232.diff