Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
a1dd666
retry first round of revisions
rrsettgast Apr 29, 2026
39dcdfc
adding rocky gcc13
rrsettgast Apr 29, 2026
4c06cad
turn off docs for rocky build
rrsettgast Apr 29, 2026
8fd0a66
python update
rrsettgast Apr 29, 2026
97924fd
update to the correct hash
rrsettgast Apr 29, 2026
5da3651
pip clingo patch
rrsettgast Apr 29, 2026
852de35
renamed spack.yaml to ubuntu-spack.yaml
rrsettgast Apr 29, 2026
de399d1
move from perl-open to perl
rrsettgast Apr 29, 2026
2c0dbe8
add gcc12 spec to rocky
rrsettgast Apr 29, 2026
f99304c
add clang builds
rrsettgast Apr 30, 2026
3a2048b
add libtool
rrsettgast Apr 30, 2026
b43a221
some potential fixes for ubuntu clang
rrsettgast Apr 30, 2026
c96e5fd
enforce python3 pip
rrsettgast Apr 30, 2026
e18b6de
use updated base images with correct gfortran for clang
rrsettgast Apr 30, 2026
801ce1b
disable docs for all builds that are not the docs build
rrsettgast Apr 30, 2026
8ba7ae2
avoid filters
rrsettgast Apr 30, 2026
423816a
trim redundant packages
rrsettgast May 1, 2026
1e98054
add cuda builds
rrsettgast May 1, 2026
bace24a
add other cuda variants. remove cuda13 until raja support
rrsettgast May 1, 2026
6e85b59
denote docs
rrsettgast May 1, 2026
a94b533
add superlu patch
rrsettgast May 1, 2026
ddcf47e
fix patch
rrsettgast May 1, 2026
9de70f4
renamed superlu-dist patch
rrsettgast May 1, 2026
603f743
give up on superlu patch. comment out build until proper patch is made
rrsettgast May 1, 2026
8cb122a
reenable vtk and trilinos
rrsettgast May 1, 2026
2c5910a
add hypredrive variants
rrsettgast May 1, 2026
2ef0f01
build for both sm_86 and sm_120
rrsettgast May 3, 2026
2394ed2
fix typo in LC builds. delete unused files
rrsettgast May 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
246 changes: 176 additions & 70 deletions .github/workflows/docker_build_tpls.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,85 +7,190 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

# TPL images build on top of the base images produced by
# https://github.com/GEOS-DEV/docker_base_images.
env:
DOCKER_BASE_IMAGE_SHA: 1c3c049b3f629d9d44838656fd306b2a0c04c9e8

jobs:
build_images:
name: ${{ matrix.name }}
runs-on: ${{ matrix.RUNS_ON }}

strategy:

# In-progress jobs will not be cancelled if there is a failure
fail-fast : false
fail-fast: false

matrix:
include:
- name: Ubuntu (20.04, gcc 9.4.0, open-mpi 4.0.3)
DOCKER_REPOSITORY: geosx/ubuntu20.04-gcc9
TPL_DOCKERFILE: docker/tpl-ubuntu-gcc.Dockerfile
DOCKER_ROOT_IMAGE: ubuntu:20.04
DOCKER_COMPILER_BUILD_ARG: "--build-arg GCC_MAJOR_VERSION=9"
# Minimal restart slice: only known-good Ubuntu host builds.
- name: Ubuntu 24.04 - gcc 12
RUNS_ON: ubuntu-latest
- name: Ubuntu (20.04, gcc 10.5.0, open-mpi 4.0.3) - github codespaces
DOCKER_REPOSITORY: geosx/ubuntu20.04-gcc10
TPL_DOCKERFILE: docker/tpl-ubuntu-gcc.Dockerfile
DOCKER_ROOT_IMAGE: mcr.microsoft.com/devcontainers/base:ubuntu-20.04
DOCKER_COMPILER_BUILD_ARG: "--build-arg GCC_MAJOR_VERSION=10"
TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
DOCKER_BASE_IMAGE_TAG: 24.04-gcc12
DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
DOCKER_REPOSITORY: geosx/ubuntu24.04-gcc12
GCC_VERSION: 12
SPEC: "~pygeosx ~docs %gcc-12"

- name: Ubuntu 24.04 - gcc 13 (docs)
RUNS_ON: ubuntu-latest
- name: Ubuntu (22.04, gcc 11.4.0, open-mpi 4.1.2)
DOCKER_ROOT_IMAGE: ubuntu:22.04
DOCKER_REPOSITORY: geosx/ubuntu22.04-gcc11
TPL_DOCKERFILE: docker/tpl-ubuntu-gcc.Dockerfile
DOCKER_COMPILER_BUILD_ARG: "--build-arg GCC_MAJOR_VERSION=11"
TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
DOCKER_BASE_IMAGE_TAG: 24.04-gcc13
DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
DOCKER_REPOSITORY: geosx/ubuntu24.04-gcc13
GCC_VERSION: 13
SPEC: "~pygeosx +docs %gcc-13"

- name: Ubuntu 24.04 - gcc 13 (+docs +hypredrive)
RUNS_ON: ubuntu-latest
- name: Ubuntu (22.04, gcc 12.3.0, open-mpi 4.1.2)
DOCKER_ROOT_IMAGE: ubuntu:22.04
DOCKER_REPOSITORY: geosx/ubuntu22.04-gcc12
TPL_DOCKERFILE: docker/tpl-ubuntu-gcc.Dockerfile
DOCKER_COMPILER_BUILD_ARG: "--build-arg GCC_MAJOR_VERSION=12"
TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
DOCKER_BASE_IMAGE_TAG: 24.04-gcc13
DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
DOCKER_REPOSITORY: geosx/ubuntu24.04-gcc13-hypredrive
GCC_VERSION: 13
SPEC: "~pygeosx +docs +hypredrive %gcc-13"

- name: Ubuntu 24.04 - clang 19
RUNS_ON: ubuntu-latest
- name: Ubuntu (22.04, gcc 12.3.0, open-mpi 4.1.2, +hypredrive)
DOCKER_ROOT_IMAGE: ubuntu:22.04
DOCKER_REPOSITORY: geosx/ubuntu22.04-gcc12-hypredrive
TPL_DOCKERFILE: docker/tpl-ubuntu-gcc.Dockerfile
DOCKER_COMPILER_BUILD_ARG: "--build-arg GCC_MAJOR_VERSION=12"
SPEC: "~pygeosx +docs +hypredrive %gcc-12"
TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
DOCKER_BASE_IMAGE_TAG: 24.04-clang19
DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
DOCKER_REPOSITORY: geosx/ubuntu24.04-clang19
CLANG_VERSION: 19
SPEC: "~pygeosx ~docs %clang-19"

- name: Ubuntu 24.04 - clang 20
RUNS_ON: ubuntu-latest
- name: Ubuntu (22.04, clang 15.0.7 + gcc 11.4.0, open-mpi 4.1.2)
DOCKER_ROOT_IMAGE: ubuntu:22.04
DOCKER_REPOSITORY: geosx/ubuntu22.04-clang15
TPL_DOCKERFILE: docker/tpl-ubuntu-clang.Dockerfile
DOCKER_COMPILER_BUILD_ARG: "--build-arg CLANG_MAJOR_VERSION=15 --build-arg GCC_MAJOR_VERSION=11"
TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
DOCKER_BASE_IMAGE_TAG: 24.04-clang20
DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
DOCKER_REPOSITORY: geosx/ubuntu24.04-clang20
CLANG_VERSION: 20
SPEC: "~pygeosx ~docs %clang-20"

# First Rocky non-CUDA row re-enabled for incremental validation.
- name: Rocky Linux 8 - gcc 12
RUNS_ON: ubuntu-latest
- name: Ubuntu (20.04, clang 10.0.0 + gcc 9.4.0, open-mpi 4.0.3, cuda-11.8.89)
DOCKER_REPOSITORY: geosx/ubuntu20.04-clang10.0.0-cuda11.8.89
TPL_DOCKERFILE: docker/tpl-ubuntu-clang-cuda.Dockerfile
TPL_DOCKERFILE: docker/tpl-rockylinux.Dockerfile
DOCKER_BASE_IMAGE_TAG: 8-gcc12
DOCKER_BASE_IMAGE_REPO: geosx/rockylinux
DOCKER_REPOSITORY: geosx/rockylinux8-gcc12
SPEC: "~pygeosx ~docs %gcc-12"

- name: Rocky Linux 8 - gcc 13
RUNS_ON: ubuntu-latest
- name: Rockylinux (8, gcc 13.3, cuda 12.9.1)
DOCKER_REPOSITORY: geosx/rockylinux8-gcc13-cuda12.9.1
TPL_DOCKERFILE: docker/tpl-rockylinux-gcc-cuda-12.Dockerfile
TPL_DOCKERFILE: docker/tpl-rockylinux.Dockerfile
DOCKER_BASE_IMAGE_TAG: 8-gcc13
DOCKER_BASE_IMAGE_REPO: geosx/rockylinux
DOCKER_REPOSITORY: geosx/rockylinux8-gcc13
SPEC: "~pygeosx ~docs %gcc-13"

- name: Rocky Linux 8 - gcc 13 (+hypredrive)
RUNS_ON: ubuntu-latest
TPL_DOCKERFILE: docker/tpl-rockylinux.Dockerfile
DOCKER_BASE_IMAGE_TAG: 8-gcc13
DOCKER_BASE_IMAGE_REPO: geosx/rockylinux
DOCKER_REPOSITORY: geosx/rockylinux8-gcc13-hypredrive
SPEC: "~pygeosx ~docs +hypredrive %gcc-13"

- name: Rocky Linux 8 - clang 19
RUNS_ON: ubuntu-latest
TPL_DOCKERFILE: docker/tpl-rockylinux.Dockerfile
DOCKER_BASE_IMAGE_TAG: 8-clang19
DOCKER_BASE_IMAGE_REPO: geosx/rockylinux
DOCKER_REPOSITORY: geosx/rockylinux8-clang19
SPEC: "~pygeosx ~docs %clang-19"

- name: Rocky Linux 9 - clang 22
RUNS_ON: ubuntu-latest
TPL_DOCKERFILE: docker/tpl-rockylinux.Dockerfile
DOCKER_BASE_IMAGE_TAG: 9-clang22
DOCKER_BASE_IMAGE_REPO: geosx/rockylinux
DOCKER_REPOSITORY: geosx/rockylinux9-clang22
SPEC: "~pygeosx ~docs %clang-22"

# CUDA restart slice.
- name: Ubuntu 24.04 - gcc 13 + CUDA 12.9.1
RUNS_ON: streak2
NPROC: 8
DOCKER_RUN_ARGS: "--cpus=8 --memory=128g --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -v /etc/pki/tls/certs/ca-bundle.crt:/etc/pki/tls/certs/ca-bundle.crt:ro -v /etc/pki/tls/certs/ca-bundle.crt:/certs/ca-bundle.crt:ro"
- name: Rockylinux (8, clang 17.0.6, cuda 12.9.1)
DOCKER_REPOSITORY: geosx/rockylinux8-clang17-cuda12.9.1
TPL_DOCKERFILE: docker/tpl-rockylinux-clang-cuda-12.Dockerfile
TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
DOCKER_BASE_IMAGE_TAG: 24.04-gcc13-cuda12.9.1
DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
DOCKER_REPOSITORY: geosx/ubuntu24.04-gcc13-cuda12.9.1
GCC_VERSION: 13
SPEC: "+cuda cuda_arch=86,120 ~openmp ~pygeosx ~docs %gcc-13 ^cuda@12.9.1+allow-unsupported-compilers"

- name: Ubuntu 24.04 - gcc 13 + CUDA 12.9.1 (+hypredrive)
RUNS_ON: streak2
NPROC: 8
DOCKER_RUN_ARGS: "--cpus=8 --memory=128g --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -v /etc/pki/tls/certs/ca-bundle.crt:/etc/pki/tls/certs/ca-bundle.crt:ro -v /etc/pki/tls/certs/ca-bundle.crt:/certs/ca-bundle.crt:ro"
# - name: Sherlock CPU (centos 7.9.2009, gcc 10.1.0, open-mpi 4.1.2, openblas 0.3.10, zlib 1.2.11)
# DOCKER_REPOSITORY: geosx/sherlock-gcc10.1.0-openmpi4.1.2-openblas0.3.10-zlib1.2.11
# TPL_DOCKERFILE: docker/Stanford/Dockerfile
# DOCKER_ROOT_IMAGE: matteofrigo5/sherlock-gcc10.1.0-openmpi4.1.2-cuda12.4.0-openblas0.3.10-zlib1.2.11-cmake3.31.4-no-geosx:0.0.1
# SPEC: "~pygeosx~openmp %gcc@10.1.0"
# INSTALL_DIR_ROOT: /oak/stanford/groups/tchelepi/geos-sherlock/CPU
# RUNS_ON: ubuntu-latest
# - name: Sherlock GPU (centos 7.9.2009, gcc 10.1.0, open-mpi 4.1.2, cuda 12.4.0, openblas 0.3.10, zlib 1.2.11)
# DOCKER_REPOSITORY: geosx/sherlock-gcc10.1.0-openmpi4.1.2-cuda12.4.0-openblas0.3.10-zlib1.2.11
# TPL_DOCKERFILE: docker/Stanford/Dockerfile
# DOCKER_ROOT_IMAGE: matteofrigo5/sherlock-gcc10.1.0-openmpi4.1.2-cuda12.4.0-openblas0.3.10-zlib1.2.11-cmake3.31.4-no-geosx:0.0.1
# SPEC: "~pygeosx~openmp cuda_arch=86 %gcc@10.1.0 ^cuda@12.4.0+allow-unsupported-compilers"
# INSTALL_DIR_ROOT: /oak/stanford/groups/tchelepi/geos-sherlock/GPU
# RUNS_ON: ubuntu-latest
TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
DOCKER_BASE_IMAGE_TAG: 24.04-gcc13-cuda12.9.1
DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
DOCKER_REPOSITORY: geosx/ubuntu24.04-gcc13-cuda12.9.1-hypredrive
GCC_VERSION: 13
SPEC: "+cuda cuda_arch=86,120 ~openmp ~pygeosx ~docs +hypredrive %gcc-13 ^cuda@12.9.1+allow-unsupported-compilers"

# CUDA 13 is blocked by the pinned RAJA package:
# raja: '^cuda@13:' conflicts with '+cuda'
# - name: Ubuntu 24.04 - gcc 14 + CUDA 13.2.1
# RUNS_ON: streak2
# TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
# DOCKER_BASE_IMAGE_TAG: 24.04-gcc14-cuda13.2.1
# DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
# DOCKER_REPOSITORY: geosx/ubuntu24.04-gcc14-cuda13.2.1
# GCC_VERSION: 14
# SPEC: "+cuda cuda_arch=86,120 ~openmp ~pygeosx ~docs %gcc-14 ^cuda@13.2.1+allow-unsupported-compilers"

- name: Ubuntu 24.04 - clang 19 + CUDA 12.9.1
RUNS_ON: streak2
TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
DOCKER_BASE_IMAGE_TAG: 24.04-clang19-cuda12.9.1
DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
DOCKER_REPOSITORY: geosx/ubuntu24.04-clang19-cuda12.9.1
CLANG_VERSION: 19
SPEC: "+cuda cuda_arch=86,120 ~openmp ~pygeosx ~docs %clang-19 ^cuda@12.9.1+allow-unsupported-compilers"

# - name: Ubuntu 24.04 - clang 20 + CUDA 13.2.1
# RUNS_ON: streak2
# TPL_DOCKERFILE: docker/tpl-ubuntu.Dockerfile
# DOCKER_BASE_IMAGE_TAG: 24.04-clang20-cuda13.2.1
# DOCKER_BASE_IMAGE_REPO: geosx/ubuntu
# DOCKER_REPOSITORY: geosx/ubuntu24.04-clang20-cuda13.2.1
# CLANG_VERSION: 20
# SPEC: "+cuda cuda_arch=86,120 ~openmp ~pygeosx ~docs %clang-20 ^cuda@13.2.1+allow-unsupported-compilers"

- name: Rocky Linux 8 - gcc 13 + CUDA 12.9.1
RUNS_ON: streak2
TPL_DOCKERFILE: docker/tpl-rockylinux.Dockerfile
DOCKER_BASE_IMAGE_TAG: 8-gcc13-cuda12.9.1
DOCKER_BASE_IMAGE_REPO: geosx/rockylinux
DOCKER_REPOSITORY: geosx/rockylinux8-gcc13-cuda12.9.1
SPEC: "+cuda cuda_arch=86,120 ~openmp ~pygeosx ~docs %gcc-13 ^cuda@12.9.1+allow-unsupported-compilers"

- name: Rocky Linux 8 - gcc 13 + CUDA 12.9.1 (+hypredrive)
RUNS_ON: streak2
TPL_DOCKERFILE: docker/tpl-rockylinux.Dockerfile
DOCKER_BASE_IMAGE_TAG: 8-gcc13-cuda12.9.1
DOCKER_BASE_IMAGE_REPO: geosx/rockylinux
DOCKER_REPOSITORY: geosx/rockylinux8-gcc13-cuda12.9.1-hypredrive
SPEC: "+cuda cuda_arch=86,120 ~openmp ~pygeosx ~docs +hypredrive %gcc-13 ^cuda@12.9.1+allow-unsupported-compilers"

# Rocky8 clang19 CUDA 12.9.1 is blocked by SuperLU_DIST using
# C++11 with CUDA 12.9 + clang19 + GCC 14 libstdc++.
# - name: Rocky Linux 8 - clang 19 + CUDA 12.9.1
# RUNS_ON: streak2
# TPL_DOCKERFILE: docker/tpl-rockylinux.Dockerfile
# DOCKER_BASE_IMAGE_TAG: 8-clang19-cuda12.9.1
# DOCKER_BASE_IMAGE_REPO: geosx/rockylinux
# DOCKER_REPOSITORY: geosx/rockylinux8-clang19-cuda12.9.1
# SPEC: "+cuda cuda_arch=86,120 ~openmp ~pygeosx ~docs %clang-19 ^cuda@12.9.1+allow-unsupported-compilers"

# - name: Rocky Linux 9 - gcc 15 + CUDA 13.2.1
# RUNS_ON: streak2
# TPL_DOCKERFILE: docker/tpl-rockylinux.Dockerfile
# DOCKER_BASE_IMAGE_TAG: 9-gcc15-cuda13.2.1
# DOCKER_BASE_IMAGE_REPO: geosx/rockylinux
# DOCKER_REPOSITORY: geosx/rockylinux9-gcc15-cuda13.2.1
# SPEC: "+cuda cuda_arch=86,120 ~openmp ~pygeosx ~docs %gcc-15 ^cuda@13.2.1+allow-unsupported-compilers"

steps:
- name: Checkout
Expand All @@ -95,37 +200,39 @@ jobs:
lfs: true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4

- name: Print environment
run: printenv

- name: Compose DOCKER_BASE_IMAGE
id: base
run: |
echo "DOCKER_BASE_IMAGE=${{ matrix.DOCKER_BASE_IMAGE_REPO }}:${{ matrix.DOCKER_BASE_IMAGE_TAG }}-${DOCKER_BASE_IMAGE_SHA}" >> "$GITHUB_OUTPUT"

- name: Inject CA certificate into Docker build
if: matrix.RUNS_ON == 'streak2'
run: |
# 1. Copy the host's CA bundle into the Docker build context
cp /etc/pki/tls/certs/ca-bundle.crt ./ca-bundle.crt

# 2. Inject the COPY and update-ca-trust commands right before dnf runs
sed -i '/RUN dnf clean all/i COPY ca-bundle.crt /etc/pki/ca-trust/source/anchors/ca-bundle.crt\nRUN update-ca-trust extract' ${{ matrix.TPL_DOCKERFILE }}

- name: Run the docker build docker script
env:
TPL_DOCKERFILE: ${{ matrix.TPL_DOCKERFILE }}
DOCKER_REPOSITORY: ${{ matrix.DOCKER_REPOSITORY }}
DOCKER_COMPILER_BUILD_ARG: ${{ matrix.DOCKER_COMPILER_BUILD_ARG }}
DOCKER_BASE_IMAGE: ${{ steps.base.outputs.DOCKER_BASE_IMAGE }}
GCC_VERSION: ${{ matrix.GCC_VERSION }}
CLANG_VERSION: ${{ matrix.CLANG_VERSION }}
INSTALL_DIR_ROOT: ${{ matrix.INSTALL_DIR_ROOT || '/opt/GEOS' }}
HOST_CONFIG: ${{ matrix.HOST_CONFIG || 'host-configs/environment.cmake'}}
HOST_CONFIG: ${{ matrix.HOST_CONFIG || 'host-configs/environment.cmake' }}
SPEC: ${{ matrix.SPEC || 'undefined' }}
DOCKER_ROOT_IMAGE: ${{ matrix.DOCKER_ROOT_IMAGE || 'undefined' }}
COMMIT: ${{ github.sha }}
BUILD_DIR: ${{ github.workspace }}
DOCKER_TAG: ${{ github.event.number }}-${{ github.run_number }}

run: bash -x ./scripts/docker-build.sh

- name: Login to DockerHub
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
Expand All @@ -135,7 +242,6 @@ jobs:
env:
DOCKER_REPOSITORY: ${{ matrix.DOCKER_REPOSITORY }}
DOCKER_TAG: ${{ github.event.number }}-${{ github.run_number }}

run: docker push ${DOCKER_REPOSITORY}:${DOCKER_TAG}

# Convenience job - passes when all docker images are built.
Expand Down
Loading