ci: fix separation of docker build and test phases
This commit is contained in:
+9
-19
@@ -3,12 +3,9 @@ FROM ubuntu:24.04 AS base
|
|||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y\
|
RUN apt-get update && apt-get install -y \
|
||||||
build-essential \
|
build-essential git cmake \
|
||||||
git \
|
tcl tcl-dev tk tk-dev \
|
||||||
cmake \
|
|
||||||
tcl tcl-dev \
|
|
||||||
tk tk-dev \
|
|
||||||
libfreeimage-dev \
|
libfreeimage-dev \
|
||||||
libxmu-dev libxi-dev \
|
libxmu-dev libxi-dev \
|
||||||
libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev \
|
libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev \
|
||||||
@@ -33,23 +30,18 @@ RUN make install
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY src/occt/ ./src
|
COPY src/occt/ ./src
|
||||||
COPY test/occt/ ./test
|
RUN cmake -S src -B build -DCMAKE_PREFIX_PATH=/usr/local
|
||||||
|
RUN cmake --build build
|
||||||
RUN cmake -S src -B build -DCMAKE_PREFIX_PATH=/usr/local && cmake --build build
|
|
||||||
|
|
||||||
COPY test/occt/ ./test
|
COPY test/occt/ ./test
|
||||||
|
|
||||||
# Unit test runner
|
# Unit test runner stage
|
||||||
FROM ubuntu:24.04 AS unit-testing
|
FROM ubuntu:24.04 AS unit-testing
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
build-essential \
|
build-essential cmake git catch2 xvfb \
|
||||||
cmake \
|
|
||||||
git \
|
|
||||||
catch2 \
|
|
||||||
xvfb \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY --from=base /usr/local /usr/local
|
COPY --from=base /usr/local /usr/local
|
||||||
@@ -59,7 +51,5 @@ COPY --from=base /app/test /app/test
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN cmake -S test -B build/tests -DCMAKE_PREFIX_PATH=/usr/local
|
RUN cmake -S test -B build/unit-tests -DCMAKE_PREFIX_PATH=/usr/local
|
||||||
RUN cmake --build build/tests
|
RUN cmake --build build/unit-tests
|
||||||
|
|
||||||
CMD ["ctest", "--test-dir", "build/tests", "-V"]
|
|
||||||
|
|||||||
+6
-16
@@ -6,28 +6,18 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||||||
PROJECT_PATH="$(cd "$SCRIPT_DIR/../../" && pwd)"
|
PROJECT_PATH="$(cd "$SCRIPT_DIR/../../" && pwd)"
|
||||||
DOCKERFILE_PATH="$SCRIPT_DIR/../occt.Dockerfile"
|
DOCKERFILE_PATH="$SCRIPT_DIR/../occt.Dockerfile"
|
||||||
|
|
||||||
# Check for --unit-testing argument
|
|
||||||
RUN_UNIT_TESTS=false
|
RUN_UNIT_TESTS=false
|
||||||
if [[ "${1-}" == "--unit-testing" ]]; then
|
if [[ "${1-}" == "--unit-testing" ]]; then
|
||||||
RUN_UNIT_TESTS=true
|
RUN_UNIT_TESTS=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Building image..."
|
echo "Building base image..."
|
||||||
if ! docker build -f "$DOCKERFILE_PATH" -t "$IMAGE_NAME" "$PROJECT_PATH"; then
|
docker build --target base -f "$DOCKERFILE_PATH" -t "$IMAGE_NAME" "$PROJECT_PATH"
|
||||||
echo "Image build failed." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Listing /usr/local/bin..."
|
|
||||||
if ! docker run --rm "$IMAGE_NAME" ls /usr/local/bin; then
|
|
||||||
echo "Listing /usr/local/bin failed." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$RUN_UNIT_TESTS" = true ]; then
|
if [ "$RUN_UNIT_TESTS" = true ]; then
|
||||||
|
echo "Building unit-testing stage..."
|
||||||
|
docker build --target unit-testing -f "$DOCKERFILE_PATH" -t "$IMAGE_NAME" "$PROJECT_PATH"
|
||||||
|
|
||||||
echo "Running unit tests..."
|
echo "Running unit tests..."
|
||||||
if ! docker run --rm "$IMAGE_NAME" ctest --test-dir /app/build/unit-tests -V; then
|
docker run --rm "$IMAGE_NAME" ctest --test-dir /app/build/unit-tests -V
|
||||||
echo "Unit tests failed." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.14)
|
cmake_minimum_required(VERSION 3.14)
|
||||||
project(arc-core-test)
|
project(arc-core-occt-tests)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 23)
|
set(CMAKE_CXX_STANDARD 23)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
@@ -7,21 +7,20 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|||||||
find_package(Catch2 3 REQUIRED)
|
find_package(Catch2 3 REQUIRED)
|
||||||
|
|
||||||
add_executable(tests
|
add_executable(tests
|
||||||
/app/test/point-test.cpp
|
point-test.cpp
|
||||||
/app/src/point.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(tests PRIVATE
|
target_include_directories(tests PRIVATE
|
||||||
/app/src/include
|
../src/include
|
||||||
/usr/local/include/opencascade
|
/usr/local/include/opencascade
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Link the library from the build folder
|
||||||
target_link_libraries(tests PRIVATE
|
target_link_libraries(tests PRIVATE
|
||||||
|
../build/libocct.so
|
||||||
Catch2::Catch2WithMain
|
Catch2::Catch2WithMain
|
||||||
/usr/local/lib/libocct.so
|
|
||||||
)
|
)
|
||||||
|
|
||||||
include(CTest)
|
include(CTest)
|
||||||
include(Catch)
|
include(Catch)
|
||||||
|
|
||||||
catch_discover_tests(tests)
|
catch_discover_tests(tests)
|
||||||
|
|||||||
Reference in New Issue
Block a user