+---
variables:
BUILD_IMAGES_PROJECT: cmocka/gitlab-build-images
FEDORA_BUILD: buildenv-fedora
CENTOS7_BUILD: buildenv-centos7
TUMBLEWEED_BUILD: buildenv-tumbleweed
MINGW_BUILD: buildenv-mingw
- DEBIAN_CROSS_BUILD: buildenv-debian-cross
+ UBUNTU_BUILD: buildenv-ubuntu
+
+stages:
+ - build
+ - test
+ - analysis
centos7/x86_64:
+ stage: test
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$CENTOS7_BUILD
script:
- - mkdir -p obj && cd obj && cmake3
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DPICKY_DEVELOPER=ON
- -DUNIT_TESTING=ON .. &&
- make -j$(nproc) && ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake3
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
- obj/
fedora/x86_64:
+ stage: test
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
script:
- - mkdir -p obj && cd obj && cmake
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DPICKY_DEVELOPER=ON
- -DUNIT_TESTING=ON .. &&
- make -j$(nproc) && ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
- obj/
fedora/address-sanitizer:
+ stage: build
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
script:
- - mkdir -p obj && cd obj && cmake
- -DCMAKE_BUILD_TYPE=AddressSanitizer
- -DPICKY_DEVELOPER=ON
- -DUNIT_TESTING=ON .. &&
- make -j$(nproc) && ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_BUILD_TYPE=AddressSanitizer
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
- obj/
fedora/undefined-sanitizer:
+ stage: analysis
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
script:
- - mkdir -p obj && cd obj && cmake
- -DCMAKE_BUILD_TYPE=UndefinedSanitizer
- -DUNIT_TESTING=ON ..
- && make -j$(nproc) && ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_BUILD_TYPE=UndefinedSanitizer
+ -DUNIT_TESTING=ON ..
+ && make -j$(nproc) && ctest --output-on-failure
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
+ artifacts:
+ expire_in: 1 week
+ when: on_failure
+ paths:
+ - obj/
+
+# realpath() doesn't work with libtsan and returns EINVAL
+#
+# fedora/thread-sanitizer:
+tumbleweed/thread-sanitizer:
+ stage: analysis
+ image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
+ script:
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_BUILD_TYPE=ThreadSanitizer
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
+ tags:
+ - shared
+ except:
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
- obj/
fedora/csbuild:
+ stage: analysis
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
script:
- - |
- if [[ -z "$CI_COMMIT_BEFORE_SHA" ]]; then
- export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~20")
- fi
+ - |
+ if [[ -z "$CI_COMMIT_BEFORE_SHA" ]]; then
+ export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~20")
+ fi
- # Check if the commit exists in this branch
- # This is not the case for a force push
- git branch --contains $CI_COMMIT_BEFORE_SHA 2>/dev/null || export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~20")
+ # Check if the commit exists in this branch
+ # This is not the case for a force push
+ git branch --contains $CI_COMMIT_BEFORE_SHA 2>/dev/null ||
+ export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~20")
- export CI_COMMIT_RANGE="$CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA"
+ export CI_COMMIT_RANGE="$CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA"
- - csbuild
- --build-dir=obj-csbuild
- --prep-cmd="cmake -DCMAKE_BUILD_TYPE=Debug -DPICKY_DEVELOPER=ON -DUNIT_TESTING=ON @SRCDIR@"
- --build-cmd "make clean && make -j$(nproc)"
- --git-commit-range $CI_COMMIT_RANGE
- --color
- --print-current --print-fixed
+ - csbuild
+ --build-dir=obj-csbuild
+ --prep-cmd="cmake -DCMAKE_BUILD_TYPE=Debug -DPICKY_DEVELOPER=ON -DUNIT_TESTING=ON @SRCDIR@"
+ --build-cmd "make clean && make -j$(nproc)"
+ --git-commit-range $CI_COMMIT_RANGE
+ --color
+ --print-current --print-fixed
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
- obj-csbuild/
freebsd/x86_64:
+ stage: test
image:
script:
- - mkdir -p obj && cd obj && cmake
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DPICKY_DEVELOPER=ON
- -DUNIT_TESTING=ON .. &&
- make && ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make && ctest --output-on-failure
tags:
- - freebsd
+ - freebsd
except:
- - tags
+ - tags
only:
- - branches@cwrap/socket_wrapper
- - branches@cryptomilk/socket_wrapper
- - branches@metze/socket_wrapper
+ - branches@cwrap/socket_wrapper
+ - branches@cryptomilk/socket_wrapper
+ - branches@metze/socket_wrapper
artifacts:
expire_in: 1 week
when: on_failure
paths:
- obj/
-.Debian.cross.template: &Debian_cross_template
+tumbleweed/x86_64/gcc:
stage: test
- image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_CROSS_BUILD
+ image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
script:
- - build=$(dpkg-architecture -qDEB_HOST_GNU_TYPE)
- - host="${CI_JOB_NAME#*.cross.}"
- - mkdir -p obj && cd obj && cmake
- -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-Debian-mips.cmake
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DUNIT_TESTING=ON .. && make -j$(nproc) &&
- ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
paths:
- obj/
-Debian.cross.mips-linux-gnu:
- <<: *Debian_cross_template
-
-tumbleweed/x86_64/gcc:
+tumbleweed/x86_64/gcc7:
+ stage: test
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
script:
- - mkdir -p obj && cd obj && cmake
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DPICKY_DEVELOPER=ON
- -DUNIT_TESTING=ON .. &&
- make -j$(nproc) && ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
paths:
- obj/
-tumbleweed/x86_64/gcc7:
+tumbleweed/x86_64/clang:
+ stage: test
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
script:
- - mkdir -p obj && cd obj && cmake
- -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DPICKY_DEVELOPER=ON
- -DUNIT_TESTING=ON .. &&
- make -j$(nproc) && ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
paths:
- obj/
-tumbleweed/x86_64/clang:
+tumbleweed/x86/gcc:
+ stage: test
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
script:
- - mkdir -p obj && cd obj && cmake
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
- -DPICKY_DEVELOPER=ON
- -DUNIT_TESTING=ON .. &&
- make -j$(nproc) && ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-cross-m32.cmake
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
- obj/
tumbleweed/static-analysis:
+ stage: analysis
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
script:
- - export CCC_CC=clang
- - export CCC_CXX=clang++
- - mkdir -p obj && cd obj && scan-build cmake
- -DCMAKE_BUILD_TYPE=Debug
- -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
- -DPICKY_DEVELOPER=ON
- -DUNIT_TESTING=ON .. &&
- scan-build --status-bugs -o scan make -j$(nproc)
+ - export CCC_CC=clang
+ - export CCC_CXX=clang++
+ - mkdir -p obj && cd obj && scan-build cmake
+ -DCMAKE_BUILD_TYPE=Debug
+ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ scan-build --status-bugs -o scan make -j$(nproc)
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure
- obj/scan
tumbleweed/helgrind:
+ stage: analysis
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
script:
- - mkdir -p obj && cd obj && cmake
- -DCMAKE_BUILD_TYPE=Debug
- -DPICKY_DEVELOPER=ON
- -DUNIT_TESTING=ON
- -DHELGRIND_TESTING=ON .. &&
- make -j$(nproc) && ctest --output-on-failure
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_BUILD_TYPE=Debug
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON
+ -DHELGRIND_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
+ tags:
+ - shared
+ except:
+ - tags
+ artifacts:
+ expire_in: 1 week
+ when: on_failure
+ paths:
+ - obj/
+ only:
+ variables:
+ - $VALGRIND_SUPPORTS_FORKED_MUTEXES == "yes"
+
+ubuntu/x86_64:
+ stage: test
+ image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$UBUNTU_BUILD
+ script:
+ - mkdir -p obj && cd obj && cmake
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
+ -DPICKY_DEVELOPER=ON
+ -DUNIT_TESTING=ON .. &&
+ make -j$(nproc) && ctest --output-on-failure
tags:
- - shared
+ - shared
except:
- - tags
+ - tags
artifacts:
expire_in: 1 week
when: on_failure