This repository holds all of the Dockerfiles that create the containers used throughout the Pressio ecosystem for testing. These containers allow us to, e.g., not rebuild Trilinos every time we test Pressio in CI.
Contents:
The following table shows the current Docker containers maintained by the pressio-containers repository.
Click on a container to see its corresponding dockerfile with all dependencies.
| Container Name |
|---|
ubuntu-01 |
ubuntu-02 |
ubuntu-03 |
ubuntu-04 |
ubuntu-05 |
ubuntu-06 |
ubuntu-07 |
ubuntu-08 |
To add a new container you will need to create a new Dockerfile (see the docker_scripts directory for existing Dockerfiles).
Once the dockerfile has been made, simply add it to the configuration matrix of the ci-docker.yml.
For example, if the new file is called ubuntu-09.dockerfile, and uses MPI, you would add to the matrix:
jobs:
CI:
strategy:
matrix:
include:
#
# Current containers...
#
- name: ubuntu-09
display_name: ubuntu-09, <description>
tpl_flags: "${MPI_FLAGS} <any other flags>"The tpl_flags are used when configuring Pressio to test with the new image.
To add a new version of Trilinos, create a new Dockerfile that runs the install_trilinos.sh script with the desired version or commit.
For example, this dockerfile creates a container from the 0dc4553 commit:
ARG UBUNTU_VERSION=22.04
FROM ubuntu:${UBUNTU_VERSION}
ARG TRILINOS_VERSION=0dc4553
COPY ../scripts/install_trilinos.sh /install_trilinos.sh
RUN chmod +x /install_trilinos.sh && \
/install_trilinos.sh ${TRILINOS_VERSION}
The ci-docker.yml GitHub workflow runs on all pushes or pull requests. For every image provided in the matrix (see Adding a New Container), the workflow will perform three steps:
- Build the image
- Build and test pressio-rom (
developbranch) inside of the container - If everything passes, push the image to the Pressio container registry.