Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 5cc91f8f authored by PRUVOST Florent's avatar PRUVOST Florent
Browse files

Factorize

parent dcb6ecb2
No related branches found
No related tags found
No related merge requests found
......@@ -4,45 +4,40 @@ stages:
- build-distrib
- build-vite
build-ci:
.config:
image: docker:19.03.12
stage: build-ci
services:
- docker:19.03.12-dind
tags: ['docker']
only:
- master
- merge_requests
artifacts:
untracked: true
timeout: 2h
build-ci:
stage: build-ci
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -f dockerfile-ci -t $CI_REGISTRY_IMAGE/ci . | tee build.log
- docker push $CI_REGISTRY_IMAGE/ci
artifacts:
untracked: true
extends: .config
build-distrib:
image: docker:19.03.12
stage: build-distrib
services:
- docker:19.03.12-dind
tags: ['docker']
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -f dockerfile-distrib -t $CI_REGISTRY_IMAGE/distrib .
| tee build.log
- docker push $CI_REGISTRY_IMAGE/distrib
artifacts:
untracked: true
timeout: 2h
extends: .config
build-vite:
image: docker:19.03.12
stage: build-vite
services:
- docker:19.03.12-dind
tags: ['docker']
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -f dockerfile-vite -t $CI_REGISTRY_IMAGE/vite .
| tee build.log
- docker push $CI_REGISTRY_IMAGE/vite
artifacts:
untracked: true
timeout: 2h
extends: .config
#+TITLE: Dockerfile recipes
This is the recipes for docker images
- Ubuntu environment with development tools: registry.gitlab.inria.fr/solverstack/docker/ci
- Based on 'ci', plus solverstack libraries (starpu, parsec,
chameleon, pastix, maphys etc): registry.gitlab.inria.fr/solverstack/docker/distrib
- Ubuntu environment with development tools:
registry.gitlab.inria.fr/solverstack/docker/ci
- Based on 'ci', plus solverstack libraries (starpu, parsec, chameleon, pastix,
maphys etc): registry.gitlab.inria.fr/solverstack/docker/distrib
To use it:
#+begin_src sh
docker run -it registry.gitlab.inria.fr/solverstack/docker/distrib
#+end_src
* ci
#+begin_src :eval no :export none :tangle dockerfile-ci
FROM ubuntu:20.04
# Installing as root: docker images are usually set up as root.
# Since some autotools scripts might complain about this being unsafe, we set
# FORCE_UNSAFE_CONFIGURE=1 to avoid configure errors.
ENV FORCE_UNSAFE_CONFIGURE=1
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
sudo \
bash \
cpio \
wget \
vim \
emacs \
emacs-goodies-el \
tmux \
curl \
patch \
unzip \
bzip2 \
mlocate \
gawk \
bison \
flex \
jq \
git \
subversion \
mercurial \
build-essential \
gfortran \
clang \
clang-tidy \
autoconf \
automake \
cmake \
cmake-data\
cmake-curses-gui \
graphviz \
doxygen \
texinfo \
texlive \
texlive-latex-extra\
pkg-config \
environment-modules \
gcovr \
lcov \
cppcheck \
vera++ \
valgrind \
python3 \
python3-pip \
pylint \
julia \
libjulia-dev \
xsltproc \
r-cran-ggplot2 \
r-cran-plyr \
r-cran-reshape2 && \
apt-get autoremove -y
# For validation of the image with https://gitlab.inria.fr/sed-bso/heat
RUN apt-get install -y libopenmpi-dev
RUN pip3 install --upgrade pip && \
python3 -m pip install \
click \
elasticsearch \
lcov_cobertura \
matplotlib \
pandas \
pytest \
pytest-cov \
scan-build \
seaborn \
setuptools
RUN groupadd -f -g 1000 gitlab && \
useradd -u 1000 -g gitlab -ms /bin/bash gitlab && \
mkdir /builds && \
chown -R gitlab:gitlab /builds && \
echo "gitlab:gitlab" | chpasswd && adduser gitlab sudo
# Install git-archive-all to get submodules when using git archive
RUN mkdir -p /home/gitlab/sonar && \
cd /home/gitlab/sonar/ && \
git clone https://github.com/Kentzo/git-archive-all.git && \
cp /home/gitlab/sonar/git-archive-all/git_archive_all.py /home/gitlab/sonar/git-archive-all/git-archive-all && \
chmod +x /home/gitlab/sonar/git-archive-all/git-archive-all && \
ln -s /home/gitlab/sonar/git-archive-all/git-archive-all /usr/local/bin/git-archive-all
ENV version_rats 2.4
RUN cd /home/gitlab/sonar/ && \
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/rough-auditing-tool-for-security/rats-${version_rats}.tgz && \
tar -xzvf rats-${version_rats}.tgz && \
cd rats-${version_rats} && \
./configure && make && sudo make install && \
rm /home/gitlab/sonar/rats-2.4.tgz
ENV version_drmemory 2.3.0-1
RUN cd /home/gitlab/sonar && \
wget https://github.com/DynamoRIO/drmemory/releases/download/release_2.3.0/DrMemory-Linux-${version_drmemory}.tar.gz && \
tar xf DrMemory-Linux-${version_drmemory}.tar.gz
RUN cd /home/gitlab/sonar && \
wget --no-check-certificate https://scan.coverity.com/download/linux64 --post-data "token=TPvx1_FxIoOMK3-4GnuAlg&project=Chameleon" -O coverity_tool.tgz && \
tar xf coverity_tool.tgz && \
ln -s -f $PWD/cov-analysis-linux64-*/bin/cov-build /usr/local/bin/cov-build && \
rm /home/gitlab/sonar/coverity_tool.tgz
RUN cd /home/gitlab/sonar && \
git clone https://github.com/SonarOpenCommunity/sonar-cxx.git && \
chmod +x /home/gitlab/sonar/sonar-cxx/cxx-sensors/src/tools/vera++Report2checkstyleReport.perl && \
ln -s /home/gitlab/sonar/sonar-cxx/cxx-sensors/src/tools/vera++Report2checkstyleReport.perl /usr/local/bin/vera++Report2checkstyleReport.perl
RUN cd /home/gitlab/sonar && \
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.4.0.2170-linux.zip && \
unzip sonar-scanner-cli-4.4.0.2170-linux.zip && \
ln -s /home/gitlab/sonar/sonar-scanner-4.4.0.2170-linux/bin/sonar-scanner /usr/local/bin/sonar-scanner && \
rm /home/gitlab/sonar/sonar-scanner-cli-4.4.0.2170-linux.zip
COPY ctest-to-junit.xsl /home/gitlab/
RUN usermod -aG sudo gitlab
RUN chown -R gitlab:gitlab /home/gitlab/
# fix a strange bug with openmpi when mpiexec command is located in /bin/mpiexec
RUN rm /bin/mpiexec && ln -s /usr/bin/mpiexec.openmpi /usr/bin/mpiexec
USER gitlab
# change the default shell to be bash
SHELL ["/bin/bash", "-c"]
# set DRMEMORY path (does not work without using an absolute path)
ENV DRMEMORY /home/gitlab/sonar/DrMemory-Linux-${version_drmemory}/bin64
# default working directory is
WORKDIR /builds
#+end_src
* distrib
#+begin_src :eval no :export none :tangle dockerfile-distrib
FROM registry.gitlab.inria.fr/solverstack/docker/ci
USER root
# Installing as root: docker images are usually set up as root.
# Since some autotools scripts might complain about this being unsafe, we set
# FORCE_UNSAFE_CONFIGURE=1 to avoid configure errors.
ENV FORCE_UNSAFE_CONFIGURE=1
ENV DEBIAN_FRONTEND noninteractive
# Install common packages
RUN apt-get update && apt-get install -y \
gnupg2 \
libacl1-dev \
libboost-dev \
libboost-context-dev \
libfftw3-dev \
libfxt-dev \
libgtg-dev \
libhypre-dev \
liblapack-dev \
liblapacke-dev \
libmetis-dev \
libmumps-dev \
libopenmpi-dev \
libpapi-dev \
libparmetis-dev \
libpfm4-dev \
libptscotch-dev \
libscalapack-mpi-dev \
libsuitesparse-dev \
nvidia-cuda-dev \
nvidia-cuda-toolkit \
ocl-icd-opencl-dev \
petsc-dev \
slepc-dev \
zlib1g-dev \
python3-numpy \
python3-mpi4py \
python3-scipy && \
apt-get autoremove -y
# Install ViTE packages
RUN apt-get update && apt-get install -y \
qtbase5-dev qt5-qmake qttools5-dev \
libglm-dev \
libglew-dev
# change the default shell to be bash
SHELL ["/bin/bash", "-c"]
# Create directory where to install our specific libraries
RUN mkdir -p /home/gitlab/install
# Install QUARK
RUN cd $HOME && \
git clone https://github.com/ecrc/quark && \
cd quark/ && \
sed -i -e "s#prefix=.*#prefix=/home/gitlab/install/quark#g" make.inc && \
sed -i -e "s#CFLAGS=.*#CFLAGS= -g -O2 -DADD_ -fPIC#g" make.inc && \
make && \
make install && \
cd $HOME && \
rm quark/ -rf
ENV QUARK_DIR=/home/gitlab/install/quark
# Install PARSEC
RUN cd $HOME && \
git clone https://bitbucket.org/mfaverge/parsec.git && \
cd parsec && \
git checkout mymaster && \
git submodule update && \
mkdir -p build-shm && \
cd build-shm && \
cmake .. -DCMAKE_INSTALL_PREFIX=/home/gitlab/install/parsec-shm -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DPARSEC_GPU_WITH_CUDA=OFF && \
make -j5 && \
make install && \
cd .. && \
mkdir -p build-mpi && \
cd build-mpi && \
cmake .. -DCMAKE_INSTALL_PREFIX=/home/gitlab/install/parsec-mpi -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DPARSEC_GPU_WITH_CUDA=OFF -DPARSEC_DIST_WITH_MPI=ON && \
make -j5 && \
make install && \
cd $HOME && \
rm parsec/ -rf
ENV PARSEC_DIR=/home/gitlab/install/parsec-shm
ENV PKG_CONFIG_PATH=$PARSEC_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# Install SimGrid
RUN cd $HOME && \
wget https://github.com/simgrid/simgrid/releases/download/v3.25/SimGrid-3.25.tar.gz && \
tar xvzf SimGrid-3.25.tar.gz && \
cd SimGrid-3.25 && \
cmake . -DCMAKE_INSTALL_PREFIX=/home/gitlab/install/simgrid -DCMAKE_BUILD_TYPE=Debug -Denable_msg=ON && \
make -j5 && \
make install && \
cd $HOME && \
rm SimGrid-3.25/ SimGrid-3.25.tar.gz -rf
ENV SIMGRID_DIR=/home/gitlab/install/simgrid
ENV PKG_CONFIG_PATH=$SIMGRID_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# Install StarPU
RUN cd $HOME && \
wget http://starpu.gforge.inria.fr/files/starpu-1.3.9/starpu-1.3.9.tar.gz && \
tar xvzf starpu-1.3.9.tar.gz && \
cd starpu-1.3.9/ && \
./configure --prefix=/home/gitlab/install/starpu --enable-debug && \
make -j5 && \
make install && \
export PKG_CONFIG_PATH=/home/gitlab/install/simgrid/lib/pkgconfig:$PKG_CONFIG_PATH && \
./configure --prefix=/home/gitlab/install/starpu-simgrid --enable-debug --disable-cuda --disable-opencl --with-fxt=/usr/lib/x86_64-linux-gnu/ --enable-simgrid --with-simgrid-dir=/home/gitlab/install/simgrid && \
make -j5 && \
make install && \
cd $HOME && \
rm starpu-1.3.9/ starpu-1.3.9.tar.gz -rf
ENV STARPU_DIR=/home/gitlab/install/starpu
ENV PKG_CONFIG_PATH=$STARPU_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
ENV STARPUSIMGRID_DIR=/home/gitlab/install/starpu-simgrid
# Install Chameleon
RUN cd $HOME && \
git clone --recursive https://gitlab.inria.fr/solverstack/chameleon.git && \
cd chameleon/ && \
source ./.gitlab-ci-env.sh && \
mkdir build && \
cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/home/gitlab/install/chameleon -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DCHAMELEON_USE_MPI=ON -DCHAMELEON_ENABLE_DOC=ON && \
make -j5 && \
make install && \
cd $HOME && \
rm chameleon/ -rf
ENV CHAMELEON_DIR=/home/gitlab/install/chameleon
ENV PKG_CONFIG_PATH=$CHAMELEON_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# Install HQR
RUN cd $HOME && \
git clone --recursive https://gitlab.inria.fr/solverstack/hqr.git && \
cd hqr/ && \
mkdir build && \
cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/home/gitlab/install/hqr -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON && \
make -j5 && \
make install && \
cd $HOME && \
rm hqr/ -rf
ENV HQR_DIR=/home/gitlab/install/hqr
ENV PKG_CONFIG_PATH=$HQR_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# Install Fabulous
RUN cd $HOME && \
git clone --recursive https://gitlab.inria.fr/solverstack/fabulous.git && \
cd fabulous/ && \
git checkout release/1.0 && \
git submodule update && \
mkdir build && \
cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/home/gitlab/install/fabulous -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DFABULOUS_BUILD_C_API=ON -DFABULOUS_BUILD_Fortran_API=ON && \
make -j5 && \
make install && \
cd $HOME && \
rm fabulous/ -rf
ENV FABULOUS_DIR=/home/gitlab/install/fabulous
ENV PKG_CONFIG_PATH=$FABULOUS_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# Install SPM
RUN cd $HOME && \
git clone --recursive https://gitlab.inria.fr/solverstack/spm.git && \
cd spm/ && \
mkdir build && \
cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/home/gitlab/install/spm -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DSPM_INT64=OFF && \
make -j5 && \
make install && \
cd $HOME && \
rm spm/ -rf
ENV SPM_DIR=/home/gitlab/install/spm
ENV PKG_CONFIG_PATH=$SPM_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# Install PaStiX
RUN cd $HOME && \
git clone --recursive https://gitlab.inria.fr/solverstack/pastix.git && \
cd pastix/ && \
mkdir build && \
cd build && \
PARSEC_DIR=/home/gitlab/install/parsec-shm && \
cmake .. -DCMAKE_INSTALL_PREFIX=/home/gitlab/install/pastix -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DPASTIX_WITH_STARPU=ON -DPASTIX_WITH_PARSEC=ON -DPASTIX_INT64=OFF && \
make -j5 && \
make install && \
cd $HOME && \
rm pastix/ -rf
ENV PASTIX_DIR=/home/gitlab/install/pastix
ENV PKG_CONFIG_PATH=$PASTIX_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# Install Maphys
# RUN cd $HOME && \
# git clone --recursive https://gitlab.inria.fr/solverstack/maphys/maphys.git && \
# cd maphys/ && \
# git checkout develop && \
# git submodule update && \
# mkdir build && \
# cd build && \
# cmake .. -DCMAKE_INSTALL_PREFIX=/home/gitlab/install/maphys -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DPASTIX_VER_6=ON && \
# make -j5 && \
# make install && \
# cd $HOME && \
# rm maphys/ -rf
# ENV MAPHYS_DIR=/home/gitlab/install/maphys
# ENV PKG_CONFIG_PATH=$MAPHYS_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# Install HYPRE
RUN cd $HOME && \
wget https://github.com/hypre-space/hypre/archive/v2.19.0.tar.gz && \
tar xf v2.19.0.tar.gz && \
rm v2.19.0.tar.gz && \
cd hypre-2.19.0/src && \
./configure --prefix=/home/gitlab/install/hypre --enable-debug --enable-shared && \
make -j5 install
ENV HYPRE_DIR=/home/gitlab/install/hypre
ENV PKG_CONFIG_PATH=$HYPRE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# Set gitlab environment
RUN chown -R gitlab:gitlab /builds
USER gitlab
# specific env. var.
ENV QUARK_DIR=/home/gitlab/install/quark
ENV PARSEC_DIR=/home/gitlab/install/parsec-shm
ENV STARPU_DIR=/home/gitlab/install/starpu
ENV SIMGRID_DIR=/home/gitlab/install/simgrid
ENV STARPUSIMGRID_DIR=/home/gitlab/install/starpu-simgrid
ENV CHAMELEON_DIR=/home/gitlab/install/chameleon
ENV HQR_DIR=/home/gitlab/install/hqr
ENV FABULOUS_DIR=/home/gitlab/install/fabulous
ENV SPM_DIR=/home/gitlab/install/spm
ENV SCALFMM_DIR=/home/gitlab/install/scalfmm
ENV PASTIX_DIR=/home/gitlab/install/pastix
# ENV MAPHYS_DIR=/home/gitlab/install/maphys
ENV PAMPA_DIR=/home/gitlab/install/pampa
ENV HYPRE_DIR=/home/gitlab/install/hypre
WORKDIR /builds
#+end_src
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment