diff --git a/.github/workflows/build_publish_containers.yml b/.github/workflows/build_publish_containers.yml index 2687d0e..464932c 100644 --- a/.github/workflows/build_publish_containers.yml +++ b/.github/workflows/build_publish_containers.yml @@ -80,9 +80,57 @@ jobs: imagetag: ubuntu22 imagepath: ubuntu22 runson: ubuntu-latest + + build-ubuntu_24: + + permissions: + contents: read + packages: write + # This is used to complete the identity challenge + # with sigstore/fulcio when running outside of PRs. + id-token: write + + uses: ./.github/workflows/build-and-push.yml + with: + imagename: shamrock-ci + imagetag: ubuntu24 + imagepath: ubuntu24 + runson: ubuntu-latest + build-ubuntu_24_llvm_18: - + permissions: + contents: read + packages: write + # This is used to complete the identity challenge + # with sigstore/fulcio when running outside of PRs. + id-token: write + + needs: [build-ubuntu_24] + uses: ./.github/workflows/build-and-push.yml + with: + imagename: shamrock-ci + imagetag: ubuntu24-llvm18 + imagepath: ubuntu24_llvm18 + runson: ubuntu-latest + + build-ubuntu_24_llvm_20: + + permissions: + contents: read + packages: write + # This is used to complete the identity challenge + # with sigstore/fulcio when running outside of PRs. + id-token: write + + needs: [build-ubuntu_24] + uses: ./.github/workflows/build-and-push.yml + with: + imagename: shamrock-ci + imagetag: ubuntu24-llvm20 + imagepath: ubuntu24_llvm20 + runson: ubuntu-latest + build-ubuntu_20_llvm_15: permissions: @@ -100,6 +148,23 @@ jobs: imagepath: ubuntu20llvm15 runson: self-hosted + build-ubuntu_20_llvm_18: + + permissions: + contents: read + packages: write + # This is used to complete the identity challenge + # with sigstore/fulcio when running outside of PRs. + id-token: write + + needs: [build-ubuntu_20] + uses: ./.github/workflows/build-and-push.yml + with: + imagename: shamrock-ci + imagetag: ubuntu20llvm18 + imagepath: ubuntu20llvm18 + runson: self-hosted + build-ubuntu_20_cuda_12: permissions: diff --git a/images/ubuntu20llvm18/Dockerfile.in b/images/ubuntu20llvm18/Dockerfile.in new file mode 100644 index 0000000..bceba86 --- /dev/null +++ b/images/ubuntu20llvm18/Dockerfile.in @@ -0,0 +1,5 @@ +ARG BRANCHNAME +FROM ghcr.io/shamrock-code/shamrock-ci:ubuntu20${BRANCHNAME} + +COPY install_llvm.sh install_llvm.sh +RUN sh install_llvm.sh && rm install_llvm.sh \ No newline at end of file diff --git a/images/ubuntu20llvm18/install_llvm.sh b/images/ubuntu20llvm18/install_llvm.sh new file mode 100644 index 0000000..bb9bd44 --- /dev/null +++ b/images/ubuntu20llvm18/install_llvm.sh @@ -0,0 +1,14 @@ +set -eu + +LLVM_VERSION=18 + +wget https://apt.llvm.org/llvm.sh +chmod +x llvm.sh +sudo ./llvm.sh $LLVM_VERSION +sudo apt install -y libclang-${LLVM_VERSION}-dev clang-tools-${LLVM_VERSION} libomp-${LLVM_VERSION}-dev + +# special case for LLVM 16 +if [[ "${LLVM_VERSION}" == "16" ]]; then + sudo rm -r /usr/lib/clang/16* + sudo ln -s /usr/lib/llvm-16/lib/clang/16 /usr/lib/clang/16 +fi \ No newline at end of file diff --git a/images/ubuntu24/Dockerfile.in b/images/ubuntu24/Dockerfile.in new file mode 100644 index 0000000..b2cf2a0 --- /dev/null +++ b/images/ubuntu24/Dockerfile.in @@ -0,0 +1,55 @@ +# syntax=docker/dockerfile:1 +FROM ubuntu:latest +ARG DEBIAN_FRONTEND=noninteractive + +RUN useradd -m docker + +RUN apt update -y && apt upgrade -y && apt install -y \ + sudo \ + curl\ + wget\ + lsb-release\ + software-properties-common\ + gnupg\ + build-essential \ + git \ + python3 \ + python3-venv \ + python3-dev \ + python3-pip \ + cmake \ + ninja-build \ + libboost-all-dev \ + doxygen \ + graphviz \ + texlive-full \ + latexmk + +RUN echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers + +# USER docker + +# Fix for the issue +# Error: fatal: detected dubious ownership in repository at '/__w/Shamrock/Shamrock/external/NVTX' +# To add an exception for this directory, call: +# git config --global --add safe.directory /__w/Shamrock/Shamrock/external/NVTX +# Unable to find current revision in submodule path 'external/NVTX' +# Error: The process '/usr/bin/git' failed with exit code 1 +# +# see : https://github.com/wmde/git-filter-repo-docker-action/pull/2/files +# T314987: Git require the .git folder to be owned by the same user +# +# So we disable the check as detailled here +#https://stackoverflow.com/questions/71849415/i-cannot-add-the-parent-directory-to-safe-directory-in-git +# +RUN git config --global --add safe.directory '*' + +# Sometime some apt repo fail on first attempt +# https://stackoverflow.com/questions/72644496/docker-container-connection-timeout-while-installing-packages +RUN echo '\ +Acquire::Retries "20";\ +Acquire::https::Timeout "60";\ +Acquire::http::Timeout "60";\ +' > /etc/apt/apt.conf.d/99custom + +WORKDIR /home/docker diff --git a/images/ubuntu24_llvm18/Dockerfile.in b/images/ubuntu24_llvm18/Dockerfile.in new file mode 100644 index 0000000..8c29dbb --- /dev/null +++ b/images/ubuntu24_llvm18/Dockerfile.in @@ -0,0 +1,5 @@ +ARG BRANCHNAME +FROM ghcr.io/shamrock-code/shamrock-ci:ubuntu24${BRANCHNAME} + +COPY install_llvm.sh install_llvm.sh +RUN sh install_llvm.sh && rm install_llvm.sh \ No newline at end of file diff --git a/images/ubuntu24_llvm18/install_llvm.sh b/images/ubuntu24_llvm18/install_llvm.sh new file mode 100644 index 0000000..bb9bd44 --- /dev/null +++ b/images/ubuntu24_llvm18/install_llvm.sh @@ -0,0 +1,14 @@ +set -eu + +LLVM_VERSION=18 + +wget https://apt.llvm.org/llvm.sh +chmod +x llvm.sh +sudo ./llvm.sh $LLVM_VERSION +sudo apt install -y libclang-${LLVM_VERSION}-dev clang-tools-${LLVM_VERSION} libomp-${LLVM_VERSION}-dev + +# special case for LLVM 16 +if [[ "${LLVM_VERSION}" == "16" ]]; then + sudo rm -r /usr/lib/clang/16* + sudo ln -s /usr/lib/llvm-16/lib/clang/16 /usr/lib/clang/16 +fi \ No newline at end of file diff --git a/images/ubuntu24_llvm20/Dockerfile.in b/images/ubuntu24_llvm20/Dockerfile.in new file mode 100644 index 0000000..8c29dbb --- /dev/null +++ b/images/ubuntu24_llvm20/Dockerfile.in @@ -0,0 +1,5 @@ +ARG BRANCHNAME +FROM ghcr.io/shamrock-code/shamrock-ci:ubuntu24${BRANCHNAME} + +COPY install_llvm.sh install_llvm.sh +RUN sh install_llvm.sh && rm install_llvm.sh \ No newline at end of file diff --git a/images/ubuntu24_llvm20/install_llvm.sh b/images/ubuntu24_llvm20/install_llvm.sh new file mode 100644 index 0000000..6441aa8 --- /dev/null +++ b/images/ubuntu24_llvm20/install_llvm.sh @@ -0,0 +1,14 @@ +set -eu + +LLVM_VERSION=20 + +wget https://apt.llvm.org/llvm.sh +chmod +x llvm.sh +sudo ./llvm.sh $LLVM_VERSION +sudo apt install -y libclang-${LLVM_VERSION}-dev clang-tools-${LLVM_VERSION} libomp-${LLVM_VERSION}-dev + +# special case for LLVM 16 +if [[ "${LLVM_VERSION}" == "16" ]]; then + sudo rm -r /usr/lib/clang/16* + sudo ln -s /usr/lib/llvm-16/lib/clang/16 /usr/lib/clang/16 +fi \ No newline at end of file