From 3ce59c09e67b70b44e30d6c12703e95bf6876363 Mon Sep 17 00:00:00 2001 From: MADELA Patrick <patrick.madela@synchrotron-soleil.fr> Date: Thu, 20 Feb 2025 20:47:47 +0100 Subject: [PATCH] Rename image based on conda-forge and add image based on compiled gcc --- .gitlab-ci.yml | 8 +- README.md | 1 + .../.gitlab-ci.yml | 2 +- .../Dockerfile | 0 .../docker-compose.yml | 18 +++++ .../environment.yml | 0 conan-el7-gcc115/.gitlab-ci.yml | 42 ++++++++++ conan-el7-gcc115/Dockerfile | 81 +++++++++++++++++++ .../docker-compose.yml | 8 +- 9 files changed, 154 insertions(+), 6 deletions(-) rename {conan-el7-gcc114 => conan-el7-gcc114-conda-forge}/.gitlab-ci.yml (97%) rename {conan-el7-gcc114 => conan-el7-gcc114-conda-forge}/Dockerfile (100%) create mode 100644 conan-el7-gcc114-conda-forge/docker-compose.yml rename {conan-el7-gcc114 => conan-el7-gcc114-conda-forge}/environment.yml (100%) create mode 100644 conan-el7-gcc115/.gitlab-ci.yml create mode 100644 conan-el7-gcc115/Dockerfile rename {conan-el7-gcc114 => conan-el7-gcc115}/docker-compose.yml (65%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c379283..089e4dd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -64,7 +64,13 @@ conan-el7-gcc112: conan-el7-gcc114: stage: triggers trigger: - include: conan-el7-gcc114/.gitlab-ci.yml + include: conan-el7-gcc114-conda-forge/.gitlab-ci.yml + strategy: depend + +conan-el7-gcc115: + stage: triggers + trigger: + include: conan-el7-gcc115/.gitlab-ci.yml strategy: depend conan-el9-gcc115: diff --git a/README.md b/README.md index 03a34f6..14a0ca3 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ All images include: | conan-el7-gcc93-x86 | CentOS 7 | i686 | gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2) | | conan-el7-gcc112 | CentOS 7 | x86_64 | gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) | | conan-el7-gcc114 | CentOS 7 | x86_64 | gcc (conda-forge gcc 11.4.0-13) 11.4.0 | +| conan-el7-gcc115 | CentOS 7 | x86_64 | gcc (GCC) 11.5.0 | | conan-el9-gcc115 | Rocky Linux 9 | x86_64 | gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5) | ## Build diff --git a/conan-el7-gcc114/.gitlab-ci.yml b/conan-el7-gcc114-conda-forge/.gitlab-ci.yml similarity index 97% rename from conan-el7-gcc114/.gitlab-ci.yml rename to conan-el7-gcc114-conda-forge/.gitlab-ci.yml index b6dcfc0..8e979f9 100644 --- a/conan-el7-gcc114/.gitlab-ci.yml +++ b/conan-el7-gcc114-conda-forge/.gitlab-ci.yml @@ -3,7 +3,7 @@ services: - docker:dind variables: - NAME: conan-el7-gcc114 + NAME: conan-el7-gcc114-conda-forge CONTAINER_TEST_IMAGE: ${CI_REGISTRY_IMAGE}/${NAME}:$CI_COMMIT_REF_SLUG CONTAINER_RELEASE_IMAGE: ${CI_REGISTRY_IMAGE}/${NAME}:latest diff --git a/conan-el7-gcc114/Dockerfile b/conan-el7-gcc114-conda-forge/Dockerfile similarity index 100% rename from conan-el7-gcc114/Dockerfile rename to conan-el7-gcc114-conda-forge/Dockerfile diff --git a/conan-el7-gcc114-conda-forge/docker-compose.yml b/conan-el7-gcc114-conda-forge/docker-compose.yml new file mode 100644 index 0000000..c8416f6 --- /dev/null +++ b/conan-el7-gcc114-conda-forge/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.8" + +services: + conan-el7-gcc114-conda-forge: + build: + context: .. + dockerfile: conan-el7-gcc114-conda-forge/Dockerfile + args: + - http_proxy + - https_proxy + - no_proxy + image: "gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el7-gcc114-conda-forge" + container_name: conan-el7-gcc114-conda-forge + tty: true + environment: + - http_proxy + - https_proxy + - no_proxy diff --git a/conan-el7-gcc114/environment.yml b/conan-el7-gcc114-conda-forge/environment.yml similarity index 100% rename from conan-el7-gcc114/environment.yml rename to conan-el7-gcc114-conda-forge/environment.yml diff --git a/conan-el7-gcc115/.gitlab-ci.yml b/conan-el7-gcc115/.gitlab-ci.yml new file mode 100644 index 0000000..ffc74d8 --- /dev/null +++ b/conan-el7-gcc115/.gitlab-ci.yml @@ -0,0 +1,42 @@ +image: docker:latest +services: + - docker:dind + +variables: + NAME: conan-el7-gcc115 + CONTAINER_TEST_IMAGE: ${CI_REGISTRY_IMAGE}/${NAME}:$CI_COMMIT_REF_SLUG + CONTAINER_RELEASE_IMAGE: ${CI_REGISTRY_IMAGE}/${NAME}:latest + +stages: + - build + - test + - release + +before_script: + - echo "${CI_JOB_TOKEN}" | docker login ${CI_REGISTRY} -u ${CI_REGISTRY_USER} --password-stdin + +build: + stage: build + script: + - docker build --pull -t ${CONTAINER_TEST_IMAGE} -f ${NAME}/Dockerfile . + - docker push ${CONTAINER_TEST_IMAGE} + +test: + stage: test + script: + - docker run --rm ${CONTAINER_TEST_IMAGE} cat /etc/centos-release | grep "CentOS Linux release 7" + - docker run --rm ${CONTAINER_TEST_IMAGE} uname -m | grep "x86_64" + - docker run --rm ${CONTAINER_TEST_IMAGE} gcc --version | grep "gcc (GCC) 11\.5" + - docker run --rm ${CONTAINER_TEST_IMAGE} cmake --version | grep "3.31.5" + - docker run --rm ${CONTAINER_TEST_IMAGE} git --version | grep "2.39.2" + - docker run --rm ${CONTAINER_TEST_IMAGE} python --version | grep "3.6.13" + - docker run --rm ${CONTAINER_TEST_IMAGE} conan --version | grep "2.12.1" + - docker run --rm ${CONTAINER_TEST_IMAGE} jq --version + - docker run --rm ${CONTAINER_TEST_IMAGE} yq --version + +release: + stage: release + script: + - docker pull ${CONTAINER_TEST_IMAGE} + - docker tag ${CONTAINER_TEST_IMAGE} ${CONTAINER_RELEASE_IMAGE} + - docker push ${CONTAINER_RELEASE_IMAGE} diff --git a/conan-el7-gcc115/Dockerfile b/conan-el7-gcc115/Dockerfile new file mode 100644 index 0000000..7540a78 --- /dev/null +++ b/conan-el7-gcc115/Dockerfile @@ -0,0 +1,81 @@ +FROM centos:7 + +LABEL maintainer="Patrick Madela <patrick.madela@synchrotron-soleil.fr" + +RUN rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime \ + # Fix Centos repo urls + && sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* \ + && sed -i 's|#\s*baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* \ + # Update OS + && yum -y update \ + # Install epel repo + && yum -y install epel-release \ + && yum -y install unzip sudo make glibc-devel \ + && yum clean all --enablerepo='*' + +ARG PYTHON_VERSION=3.6.13 \ + CONAN_VERSION=2.12.1 \ + CMAKE_VERSION=3.31.5 \ + GIT_VERSION=2.39.2 \ + GCC_VERSION=11.5.0 \ + DEVTOOLS_ROOT=/usr/Local/devtools \ + OS=linux \ + ARCH=x86_64 + +ENV PYTHON_ROOT=${DEVTOOLS_ROOT}/python-${PYTHON_VERSION}-${OS}-${ARCH} \ + CONAN_ROOT=${DEVTOOLS_ROOT}/conan-${CONAN_VERSION}-${OS}-${ARCH} \ + CMAKE_ROOT=${DEVTOOLS_ROOT}/cmake-${CMAKE_VERSION}-${OS}-${ARCH} \ + GIT_ROOT=${DEVTOOLS_ROOT}/git-${GIT_VERSION}-${OS}-${ARCH} \ + GCC_ROOT=${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH} \ + PATH=${DEVTOOLS_ROOT}/bin:${DEVTOOLS_ROOT}/python-${PYTHON_VERSION}-${OS}-${ARCH}/bin:${DEVTOOLS_ROOT}/conan-${CONAN_VERSION}-${OS}-${ARCH}:${DEVTOOLS_ROOT}/cmake-${CMAKE_VERSION}-${OS}-${ARCH}/bin:${DEVTOOLS_ROOT}/git-${GIT_VERSION}-${OS}-${ARCH}/bin:${PATH}:${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH}/bin:${PATH} \ + LD_LIBRARY_PATH=${DEVTOOLS_ROOT}/python-${PYTHON_VERSION}-${OS}-${ARCH}/lib:${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH}/lib64 \ + CXX=${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH}/bin/g++ \ + CC=${DEVTOOLS_ROOT}/gcc-${GCC_VERSION}-${OS}-${ARCH}/bin/gcc + +RUN groupadd g1001 -g 1001 \ + && groupadd g1000 -g 1000 \ + && groupadd g2000 -g 2000 \ + # Creation of conan user + && useradd -ms /bin/bash conan -u 1000 -g 1001 -G 1000,2000,999 \ + # Add sudo for conan user + && printf "conan:conan" | chpasswd \ + && printf "conan ALL= NOPASSWD: ALL\\n" >> /etc/sudoers \ + # Create devtools folder + && mkdir -p ${DEVTOOLS_ROOT} \ + # Install python 3 + && curl -s -L -o ${PYTHON_ROOT}.zip https://gitlab.synchrotron-soleil.fr/software-control-system/devtools/python3/-/jobs/artifacts/3.6.13/download?job=linux-x86_64 \ + && unzip -q ${PYTHON_ROOT}.zip -d ${DEVTOOLS_ROOT} \ + && rm ${PYTHON_ROOT}.zip \ + # Install git + && curl -s -L -o ${GIT_ROOT}.zip https://gitlab.synchrotron-soleil.fr/software-control-system/devtools/git/-/jobs/artifacts/2.39.2/download?job=linux-x86_64 \ + && unzip -q ${GIT_ROOT}.zip -d ${DEVTOOLS_ROOT} \ + && rm ${GIT_ROOT}.zip \ + # Install cmake + && CMAKE_VERSION_MAJOR_MINOR=$(echo ${CMAKE_VERSION} | sed 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\1\.\2/') \ + && curl -s https://cmake.org/files/v${CMAKE_VERSION_MAJOR_MINOR}/cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz | tar -xzf - -C ${DEVTOOLS_ROOT} \ + --exclude=bin/cmake-gui \ + --exclude=doc/cmake \ + --exclude=share/cmake-${CMAKE_VERSION_MAJOR_MINOR}/Help \ + --exclude=share/vim \ + # Install conan + && curl -s -L -o ${CONAN_ROOT}.zip https://gitlab.synchrotron-soleil.fr/software-control-system/devtools/conan/-/jobs/artifacts/2.12.1/download?job=linux-x86_64 \ + && unzip -q ${CONAN_ROOT}.zip -d ${DEVTOOLS_ROOT} \ + && rm ${CONAN_ROOT}.zip \ + # Install other tools + && mkdir ${DEVTOOLS_ROOT}/bin \ + && curl -s -L -o ${DEVTOOLS_ROOT}/bin/jq https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64 \ + && curl -s -L -o ${DEVTOOLS_ROOT}/bin/yq https://github.com/mikefarah/yq/releases/download/v4.34.2/yq_linux_amd64 \ + && chmod +x ${DEVTOOLS_ROOT}/bin/* \ + # Install gcc + && curl -s -L -o ${GCC_ROOT}.zip https://controlforge.synchrotron-soleil.fr/artifactory/generic-local/soleil/gcc/11.5.0/gcc-11.5.0-linux-x86_64.zip \ + && mkdir -p ${DEVTOOLS_ROOT} \ + && unzip -q ${GCC_ROOT}.zip -d ${GCC_ROOT} \ + && rm ${GCC_ROOT}.zip + +COPY environment /etc/environment +USER conan +WORKDIR /home/conan + +ENTRYPOINT ["bash", "-c" ,"conan config install --verify-ssl false --type git https://gitlab.synchrotron-soleil.fr/software-control-system/factory/conan/conan2-config.git && \"$@\"", "-s"] + +CMD ["bash"] diff --git a/conan-el7-gcc114/docker-compose.yml b/conan-el7-gcc115/docker-compose.yml similarity index 65% rename from conan-el7-gcc114/docker-compose.yml rename to conan-el7-gcc115/docker-compose.yml index 665b0d9..c706498 100644 --- a/conan-el7-gcc114/docker-compose.yml +++ b/conan-el7-gcc115/docker-compose.yml @@ -1,16 +1,16 @@ version: "3.8" services: - conan-el7-gcc114: + conan-el7-gcc115: build: context: .. - dockerfile: conan-el7-gcc114/Dockerfile + dockerfile: conan-el7-gcc115/Dockerfile args: - http_proxy - https_proxy - no_proxy - image: "gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el7-gcc114" - container_name: conan-el7-gcc114 + image: "gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el7-gcc115" + container_name: conan-el7-gcc115 tty: true environment: - http_proxy -- GitLab