ci(cmake): Replace centos by AlmaLinux and RockyLinux
This commit is contained in:
2
.github/workflows/amd64_docker_cmake.yml
vendored
2
.github/workflows/amd64_docker_cmake.yml
vendored
@@ -7,7 +7,7 @@ jobs:
|
||||
cmake:
|
||||
strategy:
|
||||
matrix:
|
||||
distro: [alpine, archlinux, centos, debian, fedora, opensuse, ubuntu]
|
||||
distro: [almalinux, alpine, archlinux, debian, fedora, opensuse, rockylinux, ubuntu]
|
||||
lang: [cpp, python, dotnet, java]
|
||||
fail-fast: false
|
||||
name: ${{ matrix.distro }} • CMake • ${{ matrix.lang }}
|
||||
|
||||
@@ -38,12 +38,13 @@ help:
|
||||
@echo -e "\t${BOLD}clean_<distro>_<stage>${RESET}: Remove a <stage> docker image for a specific distro."
|
||||
@echo
|
||||
@echo -e "\tWith ${BOLD}<distro>${RESET}:"
|
||||
@echo -e "\t\t${BOLD}almalinux${RESET} (latest)"
|
||||
@echo -e "\t\t${BOLD}alpine${RESET} (edge)"
|
||||
@echo -e "\t\t${BOLD}archlinux${RESET} (latest)"
|
||||
@echo -e "\t\t${BOLD}centos${RESET} (latest)"
|
||||
@echo -e "\t\t${BOLD}debian${RESET} (latest)"
|
||||
@echo -e "\t\t${BOLD}fedora${RESET} (latest)"
|
||||
@echo -e "\t\t${BOLD}opensuse${RESET} (tumbleweed)"
|
||||
@echo -e "\t\t${BOLD}rockylinux${RESET} (9)"
|
||||
@echo -e "\t\t${BOLD}ubuntu${RESET} (rolling)"
|
||||
@echo -e "\t\t${BOLD}system_deps${RESET} (archlinux with all deps from pacman)"
|
||||
@echo -e "\t\t${BOLD}all${RESET}: ALL DISTROS"
|
||||
@@ -187,7 +188,7 @@ endif
|
||||
DOCKER_RUN_CMD := docker run --rm --init --net=host
|
||||
|
||||
# Currently supported distro
|
||||
DISTROS := alpine archlinux centos debian fedora opensuse ubuntu system_deps
|
||||
DISTROS := almalinux alpine archlinux debian fedora opensuse rockylinux ubuntu system_deps
|
||||
|
||||
# $* stem
|
||||
# $< first prerequist
|
||||
|
||||
@@ -1,29 +1,13 @@
|
||||
# Create a virtual environment with all tools installed
|
||||
# ref: https://quay.io/repository/centos/centos
|
||||
FROM quay.io/centos/centos:stream AS base
|
||||
# ref: https://hub.docker.com/_/almalinux
|
||||
FROM almalinux:latest AS base
|
||||
# Install system build dependencies
|
||||
ENV PATH=/usr/local/bin:$PATH
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install git wget openssl-devel \
|
||||
&& dnf -y install git wget openssl-devel cmake \
|
||||
&& dnf -y groupinstall "Development Tools" \
|
||||
&& dnf clean all \
|
||||
&& rm -rf /var/cache/dnf
|
||||
|
||||
# Install system build dependencies
|
||||
ENV PATH=/usr/local/bin:$PATH
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install gcc-toolset-11 \
|
||||
&& dnf clean all \
|
||||
&& rm -rf /var/cache/dnf
|
||||
|
||||
RUN echo "source /opt/rh/gcc-toolset-11/enable" >> /etc/bashrc
|
||||
SHELL ["/bin/bash", "--login", "-c"]
|
||||
|
||||
# Install CMake 3.28.3
|
||||
RUN wget -q "https://cmake.org/files/v3.28/cmake-3.28.3-linux-x86_64.sh" \
|
||||
&& chmod a+x cmake-3.28.3-linux-x86_64.sh \
|
||||
&& ./cmake-3.28.3-linux-x86_64.sh --prefix=/usr/local/ --skip-license \
|
||||
&& rm cmake-3.28.3-linux-x86_64.sh
|
||||
CMD [ "/usr/bin/bash" ]
|
||||
|
||||
# Install SWIG 4.2.0
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM ortools/cmake:centos_base AS env
|
||||
FROM ortools/cmake:almalinux_base AS env
|
||||
RUN cmake -version
|
||||
|
||||
FROM env AS devel
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM ortools/cmake:centos_swig AS env
|
||||
FROM ortools/cmake:almalinux_swig AS env
|
||||
# see: https://docs.microsoft.com/en-us/dotnet/core/install/linux-package-manager-centos8
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install dotnet-sdk-6.0 \
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM ortools/cmake:centos_swig AS env
|
||||
FROM ortools/cmake:almalinux_swig AS env
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel maven \
|
||||
&& dnf clean all \
|
||||
@@ -1,10 +1,11 @@
|
||||
FROM ortools/cmake:centos_swig AS env
|
||||
FROM ortools/cmake:almalinux_swig AS env
|
||||
ENV PATH=/root/.local/bin:$PATH
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install python3.11-devel python3.11-numpy python3.11-pip \
|
||||
&& dnf -y install python3-devel python3-pip python3-numpy \
|
||||
&& dnf clean all \
|
||||
&& rm -rf /var/cache/dnf
|
||||
RUN python3.11 -m pip install absl-py mypy mypy-protobuf pandas
|
||||
RUN python3 -m pip install \
|
||||
absl-py mypy mypy-protobuf pandas
|
||||
|
||||
FROM env AS devel
|
||||
WORKDIR /home/project
|
||||
27
cmake/docker/rockylinux/Dockerfile
Normal file
27
cmake/docker/rockylinux/Dockerfile
Normal file
@@ -0,0 +1,27 @@
|
||||
# Create a virtual environment with all tools installed
|
||||
# ref: https://hub.docker.com/_/rockylinux
|
||||
FROM rockylinux:9 AS base
|
||||
# Install system build dependencies
|
||||
ENV PATH=/usr/local/bin:$PATH
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install git wget openssl-devel cmake \
|
||||
&& dnf -y groupinstall "Development Tools" \
|
||||
&& dnf clean all \
|
||||
&& rm -rf /var/cache/dnf
|
||||
CMD [ "/usr/bin/bash" ]
|
||||
|
||||
# Install SWIG 4.2.0
|
||||
FROM base AS swig
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install pcre2-devel \
|
||||
&& dnf clean all \
|
||||
&& rm -rf /var/cache/dnf \
|
||||
&& wget -q "https://downloads.sourceforge.net/project/swig/swig/swig-4.2.0/swig-4.2.0.tar.gz" \
|
||||
&& tar xvf swig-4.2.0.tar.gz \
|
||||
&& rm swig-4.2.0.tar.gz \
|
||||
&& cd swig-4.2.0 \
|
||||
&& ./configure --prefix=/usr \
|
||||
&& make -j 4 \
|
||||
&& make install \
|
||||
&& cd .. \
|
||||
&& rm -rf swig-4.2.0
|
||||
29
cmake/docker/rockylinux/cpp.Dockerfile
Normal file
29
cmake/docker/rockylinux/cpp.Dockerfile
Normal file
@@ -0,0 +1,29 @@
|
||||
FROM ortools/cmake:rockylinux_base AS env
|
||||
RUN cmake -version
|
||||
|
||||
FROM env AS devel
|
||||
WORKDIR /home/project
|
||||
COPY . .
|
||||
|
||||
FROM devel AS build
|
||||
RUN cmake -S. -Bbuild -DBUILD_DEPS=ON
|
||||
RUN cmake --build build --target all -v
|
||||
RUN cmake --build build --target install
|
||||
|
||||
FROM build AS test
|
||||
RUN CTEST_OUTPUT_ON_FAILURE=1 cmake --build build --target test
|
||||
|
||||
FROM env AS install_env
|
||||
COPY --from=build /usr/local /usr/local/
|
||||
|
||||
FROM install_env AS install_devel
|
||||
WORKDIR /home/sample
|
||||
COPY cmake/samples/cpp .
|
||||
|
||||
FROM install_devel AS install_build
|
||||
RUN cmake -S. -Bbuild
|
||||
RUN cmake --build build --target all -v
|
||||
RUN cmake --build build --target install
|
||||
|
||||
FROM install_build AS install_test
|
||||
RUN cmake --build build --target test
|
||||
35
cmake/docker/rockylinux/dotnet.Dockerfile
Normal file
35
cmake/docker/rockylinux/dotnet.Dockerfile
Normal file
@@ -0,0 +1,35 @@
|
||||
FROM ortools/cmake:rockylinux_swig AS env
|
||||
# see: https://docs.microsoft.com/en-us/dotnet/core/install/linux-package-manager-centos8
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install dotnet-sdk-6.0 \
|
||||
&& dnf clean all \
|
||||
&& rm -rf /var/cache/dnf
|
||||
# Trigger first run experience by running arbitrary cmd
|
||||
RUN dotnet --info
|
||||
|
||||
# Add the library src to our build env
|
||||
FROM env AS devel
|
||||
WORKDIR /home/project
|
||||
COPY . .
|
||||
|
||||
FROM devel AS build
|
||||
RUN cmake -version
|
||||
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
|
||||
RUN cmake --build build --target all -v
|
||||
RUN cmake --build build --target install -v
|
||||
|
||||
FROM build AS test
|
||||
RUN CTEST_OUTPUT_ON_FAILURE=1 cmake --build build --target test -v
|
||||
|
||||
FROM env AS install_env
|
||||
WORKDIR /home/sample
|
||||
COPY --from=build /home/project/build/dotnet/packages/*.nupkg ./
|
||||
|
||||
FROM install_env AS install_devel
|
||||
COPY cmake/samples/dotnet .
|
||||
|
||||
FROM install_devel AS install_build
|
||||
RUN dotnet build
|
||||
|
||||
FROM install_build AS install_test
|
||||
RUN dotnet test
|
||||
31
cmake/docker/rockylinux/java.Dockerfile
Normal file
31
cmake/docker/rockylinux/java.Dockerfile
Normal file
@@ -0,0 +1,31 @@
|
||||
FROM ortools/cmake:rockylinux_swig AS env
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel maven \
|
||||
&& dnf clean all \
|
||||
&& rm -rf /var/cache/dnf
|
||||
|
||||
FROM env AS devel
|
||||
WORKDIR /home/project
|
||||
COPY . .
|
||||
|
||||
FROM devel AS build
|
||||
RUN cmake -S. -Bbuild -DBUILD_JAVA=ON -DSKIP_GPG=ON \
|
||||
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
|
||||
RUN cmake --build build --target all -v
|
||||
RUN cmake --build build --target install
|
||||
|
||||
FROM build AS test
|
||||
RUN CTEST_OUTPUT_ON_FAILURE=1 cmake --build build --target test
|
||||
|
||||
FROM env AS install_env
|
||||
COPY --from=build /usr/local /usr/local/
|
||||
|
||||
FROM install_env AS install_devel
|
||||
WORKDIR /home/sample
|
||||
COPY cmake/samples/java .
|
||||
|
||||
FROM install_devel AS install_build
|
||||
RUN mvn compile
|
||||
|
||||
FROM install_build AS install_test
|
||||
RUN mvn test
|
||||
34
cmake/docker/rockylinux/python.Dockerfile
Normal file
34
cmake/docker/rockylinux/python.Dockerfile
Normal file
@@ -0,0 +1,34 @@
|
||||
FROM ortools/cmake:rockylinux_swig AS env
|
||||
ENV PATH=/root/.local/bin:$PATH
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install python3-devel python3-pip python3-numpy \
|
||||
&& dnf clean all \
|
||||
&& rm -rf /var/cache/dnf
|
||||
RUN python3 -m pip install \
|
||||
absl-py mypy mypy-protobuf pandas
|
||||
|
||||
FROM env AS devel
|
||||
WORKDIR /home/project
|
||||
COPY . .
|
||||
|
||||
FROM devel AS build
|
||||
RUN cmake -S. -Bbuild -DBUILD_PYTHON=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
|
||||
RUN cmake --build build --target all -v
|
||||
RUN cmake --build build --target install
|
||||
|
||||
FROM build AS test
|
||||
RUN CTEST_OUTPUT_ON_FAILURE=1 cmake --build build --target test
|
||||
|
||||
FROM env AS install_env
|
||||
WORKDIR /home/sample
|
||||
COPY --from=build /home/project/build/python/dist/*.whl .
|
||||
RUN python3 -m pip install *.whl
|
||||
|
||||
FROM install_env AS install_devel
|
||||
COPY cmake/samples/python .
|
||||
|
||||
FROM install_devel AS install_build
|
||||
RUN python3 -m compileall .
|
||||
|
||||
FROM install_build AS install_test
|
||||
RUN python3 sample.py
|
||||
Reference in New Issue
Block a user