diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f711bdf52568d8e1097f925ae342f60c2e421d0b..151ddf93fdf712a76e7429850bf97d75e9619c5b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,12 +14,9 @@ stages: #========== Stage build ========== -.build: &build_template +.build: &build stage: build - before_script: - - apk add --no-cache bash build-base cmake python3 libexecinfo-dev cppunit-dev libxml2-dev tclap-dev readline-dev qt5-qtbase-dev graphviz-dev jsoncpp-dev ${EXTRA_PKGS} script: - - export CXX=${CXX} - CMake/generate.py -wm - mkdir release - cd release @@ -28,18 +25,51 @@ stages: artifacts: paths: - release/ - expire_in: 1 day + expire_in: 1 hour + +.build:push: &build-push + <<: *build + image: alpine:3.8 + before_script: + - apk add --no-cache bash build-base cmake python3 libexecinfo-dev cppunit-dev libxml2-dev tclap-dev readline-dev qt5-qtbase-dev graphviz-dev jsoncpp-dev ${EXTRA_PKGS} + - export CXX=${CXX} + +.build:compatibility: &build-compatibility + <<: *build + only: + variables: + - $SCHEDULED_COMPATIBILITY -build:gcc: - <<: *build_template +build:alpine:gcc: + <<: *build-push variables: CXX: g++ -build:clang: - <<: *build_template +build:alpine:clang: + <<: *build-push variables: - CXX: clang++ EXTRA_PKGS: clang + CXX: clang++ + +build:debian:stable: + <<: *build-compatibility + image: amd64/debian:stable-slim + before_script: + - apt-get update + - apt-get install -y build-essential cmake make python3 libcppunit-dev libxml2-dev libtclap-dev libreadline-dev qtbase5-dev graphviz-dev libjsoncpp-dev + +build:debian:testing: + <<: *build-compatibility + image: amd64/debian:testing-slim + before_script: + - apt-get update + - apt-get install -y build-essential cmake make python3 libcppunit-dev libxml2-dev libtclap-dev libreadline-dev qtbase5-dev graphviz-dev libjsoncpp-dev + +build:arch: + <<: *build-compatibility + image: archlinux/base:latest + before_script: + - pacman -Syu --noconfirm base-devel cmake make python cppunit libxml2 tclap readline qt5-base graphviz jsoncpp build:doc: stage: build @@ -57,10 +87,8 @@ build:doc: #========== Stage test ========== -.test: &test_template +.test: &test stage: test - before_script: - - apk add --no-cache bash bc coreutils python3 cmake make libexecinfo cppunit libxml2 tclap readline qt5-qtbase qt5-qtbase-x11 graphviz jsoncpp script: - cd release - make test @@ -71,15 +99,53 @@ build:doc: - cd ../.. - for test in $(ls tests.*.sh); do ./${test} release/bin $(grep -c processor /proc/cpuinfo) || exit 1; touch release/bin/log_tests.txt; cat release/bin/log_tests.txt; done -test:gcc: - <<: *test_template +.test:push: &test-push + <<: *test + image: alpine:3.8 + before_script: + - apk add --no-cache bash bc coreutils python3 cmake make libexecinfo cppunit libxml2 tclap readline qt5-qtbase qt5-qtbase-x11 graphviz jsoncpp + +.test:compatibility: &test-compatibility + <<: *test + only: + variables: + - $SCHEDULED_COMPATIBILITY + +test:alpine:gcc: + <<: *test-push dependencies: - - build:gcc + - build:alpine:gcc -test:clang: - <<: *test_template +test:alpine:clang: + <<: *test-push + dependencies: + - build:alpine:clang + +test:debian:stable: + <<: *test-compatibility + image: amd64/debian:stable-slim + before_script: + - apt-get update + - apt-get install -y build-essential bash bc coreutils cmake make python3 libcppunit-1.13-0v5 libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 + dependencies: + - build:debian:stable + +test:debian:testing: + <<: *test-compatibility + image: amd64/debian:testing-slim + before_script: + - apt-get update + - apt-get install -y build-essential bash bc coreutils cmake make python3 libcppunit-1.14 libxml2 libreadline7 libqt5widgets5 libqt5xml5 graphviz libjsoncpp1 + dependencies: + - build:debian:testing + +test:arch: + <<: *test-compatibility + image: archlinux/base:latest + before_script: + - pacman -Syu --noconfirm base-devel bash bc coreutils cmake make python cppunit libxml2 tclap readline qt5-base graphviz jsoncpp dependencies: - - build:clang + - build:arch #========== Stage release =========