Skip to content
Snippets Groups Projects
Verified Commit 20a0c828 authored by Simon Schwitanski's avatar Simon Schwitanski :slight_smile:
Browse files

Initial commit

parents
Branches
No related tags found
No related merge requests found
Pipeline #375801 passed
image: docker:latest
services:
- name: docker:dind
command: ["--tls=false"]
stages:
- build
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY --username $CI_REGISTRY_USER --password-stdin
build:
stage: build
variables:
LLVM_VERSION: 14
MUST_VERSION: 1.9.2
parallel:
matrix:
- MPI_FLAVOR: [mpich, openmpi]
script:
- docker build -f Dockerfile -t $CI_REGISTRY_IMAGE:${MUST_VERSION}-${MPI_FLAVOR}-llvm${LLVM_VERSION} --build-arg MPI_FLAVOR=${MPI_FLAVOR} --build-arg LLVM_VERSION=${LLVM_VERSION} --build-arg MUST_VERSION=${MUST_VERSION} .
- docker push $CI_REGISTRY_IMAGE:${MUST_VERSION}-${MPI_FLAVOR}-llvm${LLVM_VERSION}
tags:
- "privileged"
ARG MPI_FLAVOR=mpich
FROM debian:12 AS base
ARG LLVM_VERSION=14
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe/Berlin
ENV PATH=/opt/must/bin:$PATH
RUN apt-get update && apt-get -y -qq --no-install-recommends install \
build-essential \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update \
&& apt-get -y -qq --no-install-recommends install \
cmake \
curl \
binutils-dev \
make \
automake \
autotools-dev \
autoconf \
libtool \
zlib1g \
zlib1g-dev \
libatomic1 \
libfabric-dev \
libxml2-dev \
python3 \
python3-pip \
python3-venv \
gfortran \
gcc \
g++ \
git \
graphviz \
libgtest-dev \
clang-${LLVM_VERSION} \
libomp-${LLVM_VERSION}-dev \
clang-format-${LLVM_VERSION} \
llvm-${LLVM_VERSION} \
lldb-${LLVM_VERSION} \
ninja-build \
vim \
openssh-client \
gdb \
wget \
googletest \
&& apt-get -yq clean \
&& rm --recursive --force /var/lib/apt/lists/*
# Ensure that correct LLVM toolset is used
RUN ln -s /usr/bin/FileCheck-${LLVM_VERSION} /usr/bin/FileCheck
RUN ln -s /usr/bin/clang-${LLVM_VERSION} /usr/bin/clang
RUN ln -s /usr/bin/clang++-${LLVM_VERSION} /usr/bin/clang++
RUN ln -s /usr/bin/clang-format-${LLVM_VERSION} /usr/bin/clang-format
ENV CC=clang
ENV CXX=clang++
FROM base AS base-mpich
RUN apt-get update \
&& apt-get -y -qq --no-install-recommends install \
mpich \
libmpich-dev \
&& apt-get -yq clean \
&& rm --recursive --force /var/lib/apt/lists/*
ENV MPICH_CC=clang
ENV MPICH_CXX=clang++
FROM base AS base-openmpi
RUN apt-get update \
&& apt-get -y -qq --no-install-recommends install \
openmpi-bin \
libopenmpi-dev \
&& apt-get -yq clean \
&& rm --recursive --force /var/lib/apt/lists/*
ENV OMPI_CC=clang
ENV OMPI_CXX=clang++
FROM base-${MPI_FLAVOR} AS final
ARG MUST_VERSION=1.9.2
# Build and install MUST
RUN mkdir -p /opt/must/
RUN wget https://hpc.rwth-aachen.de/must/files/MUST-v${MUST_VERSION}.tar.gz && \
tar -xf MUST-v${MUST_VERSION}.tar.gz && cd MUST-v${MUST_VERSION} && \
mkdir build && \
cd build && \
CC=clang CXX=clang++ MPICH_CC=clang MPICH_CXX=clang++ OMPI_CC=clang OMPI_CXX=clang \
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/must -DUSE_BACKWARD=ON -DENABLE_FORTRAN=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo && \
make install -j8 install-prebuilds && \
rm /MUST-v${MUST_VERSION}.tar.gz && \
rm -r -f /MUST-v${MUST_VERSION}
# Run as non-privileged user
RUN useradd -ms /bin/bash user
USER user
\ No newline at end of file
# MUST Docker Images
Provides different MUST docker images.
## Registry
The registry with all images is available here:
<https://git-ce.rwth-aachen.de/hpc-public/must-containers/container_registry>
## CI: Select Images to Build
Check [.gitlab-ci.yml](.gitlab-ci.yml) and update `LLVM_VERSION`, `MUST_VERSION`, `MPI_FLAVOR` accordingly.
Currently, only LLVM as compiler is supported.
## Build Image Manually
```
docker build -f Dockerfile -t my_image_tag \
--build-arg MPI_FLAVOR=${MPI_FLAVOR} \
--build-arg LLVM_VERSION=${LLVM_VERSION} \
--build-arg MUST_VERSION=${MUST_VERSION} .
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment