From 0c6d8e61cdb92fdb3e493f4c27620f73204b3688 Mon Sep 17 00:00:00 2001 From: Matthias Hochsteger Date: Wed, 22 Jun 2016 13:26:05 +0200 Subject: [PATCH 1/3] add continuous integration using gitlab-ci --- .gitlab-ci.yml | 175 +++++++++++++++++++++++++++++++++++++++++++++ tests/build.sh | 6 ++ tests/docker_15.10 | 4 ++ tests/docker_16.04 | 4 ++ 4 files changed, 189 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100755 tests/build.sh create mode 100644 tests/docker_15.10 create mode 100644 tests/docker_16.04 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..ef64c831 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,175 @@ +stages: + - build + - test + - cleanup + +############################################ +# System templates +############################################ + +# Windows +.template_windows_32: &win32 + tags: + - windows + - x86 + before_script: + - "echo off" + - 'call "%VS140COMNTOOLS%\..\..\VC\bin\vcvars32.bat"' + - set EXT_LIBS=C:\external_libs\x86 + - set CMAKE_GENERATOR=Visual Studio 14 2015 + - set INSTALL_DIR=C:/install32 + - set NETGENDIR=C:\install32\bin + - set PYTHONPATH=C:\install32\lib\site-packages + - set PYTHON_LIB=C:/Python3.5_32/libs/python35.lib + - set PYTHON_CONFIG=-DPYTHON_LIBRARY=C:/Python3.5_32/libs/python35.lib -DPYTHON_INCLUDE_DIR=C:/Python3.5_32/include -DPYTHON_INCLUDE_DIR2=C:/Python3.5_32/include + +.template_windows_64: &win64 + tags: + - windows + - x64 + before_script: + - "echo off" + - 'call "%VS140COMNTOOLS%\..\..\VC\bin\amd64\vcvars64.bat"' + - set EXT_LIBS=C:\external_libs\x64 + - set CMAKE_GENERATOR=Visual Studio 14 2015 Win64 + - set INSTALL_DIR=C:/install64 + - set NETGENDIR=C:\install64\bin + - set PYTHONPATH=C:\install64\lib\site-packages + - set PYTHON_LIB=C:/Python3.5/libs/python35.lib + - set PYTHON_CONFIG=-DPYTHON_LIBRARY=C:/Python3.5/libs/python35.lib + +# Linux +.template_ubuntu: &ubuntu + tags: + - linux + before_script: + - pwd + - ls + - docker info + +.template_ubuntu_1510: &ubuntu_1510 + <<: *ubuntu + variables: + UBUNTU_VERSION: "15.10" + +.template_ubuntu_1604: &ubuntu_1604 + <<: *ubuntu + variables: + UBUNTU_VERSION: "16.04" + +############################################ +# Build stage +############################################ + +# Windows +.template_build_win: &tbuild_netgen_win + stage: build + script: + - if not exist build MKDIR build + - cd build + - DEL CMakeCache.txt + - RD /S /Q CMakeFiles + - >- + cmake ..\ + -DADDITIONAL_PATHS="%EXT_LIBS%\ext_libs;%EXT_LIBS%\occ" + %PYTHON_CONFIG% + -G"%CMAKE_GENERATOR%" + -DINSTALL_DIR="%INSTALL_DIR%" + -DUSE_OCC=ON + -DCMAKE_CXX_FLAGS_RELEASE="/W0" + - cmake --build . --target INSTALL --config Release + +.build_netgen_win32: + <<: *win32 + <<: *tbuild_netgen_win + cache: + paths: + - build/ + - src/ + key: "netgen_win32" + +.build_netgen_win64: + <<: *win64 + <<: *tbuild_netgen_win + cache: + paths: + - build/ + - src/ + key: "netgen_win64" + +# Linux +.template_build_linux: &build_linux + stage: build + script: + - docker build -t netgen:$UBUNTU_VERSION -f tests/docker_$UBUNTU_VERSION . + - rm -f netgen_$UBUNTU_VERSION.id + - docker run --cidfile netgen_$UBUNTU_VERSION.id -e CCACHE_DIR=/ccache -v /mnt/ccache:/ccache netgen:$UBUNTU_VERSION bash /root/src/netgen/tests/build.sh + - docker commit `cat netgen_$UBUNTU_VERSION.id` netgen_installed:$UBUNTU_VERSION + - rm netgen_$UBUNTU_VERSION.id + +build_ubuntu_1510: + <<: *ubuntu_1510 + <<: *build_linux + +build_ubuntu_1604: + <<: *ubuntu_1604 + <<: *build_linux + + +############################################ +# Test stage +############################################ + +# Windows +.template_test_win: &ttest_netgen_win + stage: test + script: + - cd build + - ctest -C Release -V + +# skip since we have no machine with 32 bits +.test_netgen_win32: + <<: *win32 + <<: *ttest_netgen_win + cache: + paths: + - build/ + - src/ + key: "netgen_win32" + +.test_netgen_win64: + <<: *win64 + <<: *ttest_netgen_win + cache: + paths: + - build/ + - src/ + key: "netgen_win64" + +# Linux +.template_test_linux: &test_linux + stage: test + script: + - docker run netgen_installed:$UBUNTU_VERSION bash -c 'cd /root/build/netgen && make test ARGS="-V"' + +test_ubuntu_1510: + <<: *ubuntu_1510 + <<: *test_linux +test_ubuntu_1604: + <<: *ubuntu_1604 + <<: *test_linux + +############################################ +# Cleanup stage +############################################ + +linux_cleanup: + stage: cleanup + tags: + - linux + script: + # remove intermediate and old docker images and containers + - docker rm `docker ps --no-trunc -aq` + - docker images --no-trunc -aqf "dangling=true" | xargs docker rmi -f + when: always + diff --git a/tests/build.sh b/tests/build.sh new file mode 100755 index 00000000..68aea3ad --- /dev/null +++ b/tests/build.sh @@ -0,0 +1,6 @@ +cd +mkdir -p build/netgen +cd build/netgen +cmake ../../src/netgen -DUSE_CCACHE=ON +make -j12 +make install diff --git a/tests/docker_15.10 b/tests/docker_15.10 new file mode 100644 index 00000000..e159dfa8 --- /dev/null +++ b/tests/docker_15.10 @@ -0,0 +1,4 @@ +FROM ubuntu:15.10 +MAINTAINER Matthias Hochsteger +RUN apt-get update && apt-get -y install python3 libpython3-dev libxmu-dev libboost-python-dev tk-dev tcl-dev cmake git g++ libglu1-mesa-dev ccache +ADD . /root/src/netgen diff --git a/tests/docker_16.04 b/tests/docker_16.04 new file mode 100644 index 00000000..2ab970e7 --- /dev/null +++ b/tests/docker_16.04 @@ -0,0 +1,4 @@ +FROM ubuntu:16.04 +MAINTAINER Matthias Hochsteger +RUN apt-get update && apt-get -y install python3 libpython3-dev libxmu-dev libboost-python-dev tk-dev tcl-dev cmake git g++ libglu1-mesa-dev ccache +ADD . /root/src/netgen From 2ecce84d49b9bd776411905e6ae405d87c28d238 Mon Sep 17 00:00:00 2001 From: Matthias Hochsteger Date: Wed, 22 Jun 2016 13:27:26 +0200 Subject: [PATCH 2/3] enable builds and tests for Windows --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ef64c831..515ecf97 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -79,7 +79,7 @@ stages: -DCMAKE_CXX_FLAGS_RELEASE="/W0" - cmake --build . --target INSTALL --config Release -.build_netgen_win32: +build_netgen_win32: <<: *win32 <<: *tbuild_netgen_win cache: @@ -88,7 +88,7 @@ stages: - src/ key: "netgen_win32" -.build_netgen_win64: +build_netgen_win64: <<: *win64 <<: *tbuild_netgen_win cache: @@ -137,7 +137,7 @@ build_ubuntu_1604: - src/ key: "netgen_win32" -.test_netgen_win64: +test_netgen_win64: <<: *win64 <<: *ttest_netgen_win cache: From e040e3b8eb84d297edcdce346826f8ee84d9f3d3 Mon Sep 17 00:00:00 2001 From: Matthias Hochsteger Date: Wed, 29 Jun 2016 10:34:25 +0200 Subject: [PATCH 3/3] gitlab-ci: force cleanup of docker images --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 515ecf97..d066a4eb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -169,7 +169,7 @@ linux_cleanup: - linux script: # remove intermediate and old docker images and containers - - docker rm `docker ps --no-trunc -aq` + - docker rm -f `docker ps --no-trunc -aq` - docker images --no-trunc -aqf "dangling=true" | xargs docker rmi -f when: always