Files
wget2/.gitlab-ci.yml

184 lines
4.9 KiB
YAML

variables:
BUILD_IMAGES_PROJECT: gnuwget/build-images
DEBIAN_BUILD: buildenv-debian-stretch
FEDORA_BUILD: buildenv-f26
CENTOS7_BUILD: buildenv-centos7
MINGW_BUILD: buildenv-mingw
GET_SOURCES_ATTEMPTS: "3"
CONFIGURE_BASE_FLAGS: --enable-assert
CFLAGS_DEFAULT: -O0 -g -ggdb3
# We organize the CI runners as thus:
# 1. Debian Stretch Build:
# * ASan and UBSan builds
# * make syntax-check
# * make distcheck
#
# 2. Fedora 25 Build
# * LLVM/Clang Build
# * Valgrind Tests
#
# 3. CentOS7 Build
# * Build with musl / newlib
# * Minimal Build (All features disabled)
#
# This way we split most of the different build options across different
# platforms as well. Other builds we would like to have:
#
# 1. Windows
# 2. OSX
# 3. Documentation Generation and Gitlab pages
# 4. Code coverage stats
# In this build we combine
# * syntax-check
# * ASan, UBSan, Msan
# * distcheck
Sanitizers/Debian:
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD
script:
- export CFLAGS=$CFLAGS_DEFAULT
- ./bootstrap && touch .manywarnings
- CC=clang ./configure $CONFIGURE_BASE_FLAGS --enable-fsanitize-asan --enable-fsanitize-ubsan -C
- make -j$(nproc) check
- make -j$(nproc) clean
# memory sanitizer only makes sense when all dependencies are also compiled with it
# - CC=clang ./configure -C --enable-fsanitize-msan
# - make -j$(nproc) check
# - make -j$(nproc) distcheck
tags:
- shared
artifacts:
expire_in: 2 weeks
when: on_failure
paths:
- ./*.log
- fuzz/*.log
- unit-tests/*.log
- tests/*.log
Scan-Build/Debian:
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD
script:
- export CFLAGS=$CFLAGS_DEFAULT
- ./bootstrap && touch .manywarnings
- scan-build ./configure $CONFIGURE_BASE_FLAGS --disable-manywarnings
- make -C lib -j$(nproc)
- scan-build -v -enable-checker security,nullability --status-bugs -o scan-build make -j$(nproc)
- scan-build -v -enable-checker security,nullability --status-bugs -o scan-build make -j$(nproc) check
tags:
- shared
except:
- tags
artifacts:
expire_in: 2 weeks
when: on_failure
paths:
- scan-build/*
flawfinder/Debian:
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD
script:
- export CFLAGS=$CFLAGS_DEFAULT
- ./bootstrap && touch .manywarnings
- ./configure $CONFIGURE_BASE_FLAGS --disable-manywarnings
- make -j$(nproc)
- mkdir flawfinder
- flawfinder -CcQH src/ libwget/ tests/ fuzz/ unit-tests/ > flawfinder/flawfinder.html
- flawfinder -ICcQH src/ libwget/ tests/ fuzz/ unit-tests/ > flawfinder/flawfinder-inputs.html
tags:
- shared
except:
- tags
artifacts:
expire_in: 2 weeks
when: always
paths:
- flawfinder/*
valgrind/Fedora:
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
script:
- export CFLAGS=$CFLAGS_DEFAULT
- ./bootstrap && touch .manywarnings
- ./configure $CONFIGURE_BASE_FLAGS --enable-valgrind-tests
- make -j$(nproc) check
tags:
- shared
except:
- tags
artifacts:
expire_in: 2 weeks
when: on_failure
paths:
- ./*.log
- fuzz/*.log
- unit-tests/*.log
- tests/*.log
#Centos7 build:
# image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$CENTOS7_BUILD
# script:
# - sed -i 's/AM_GNU_GETTEXT_VERSION(0.19.3)/AM_GNU_GETTEXT_VERSION(0.18.2)/g' configure.ac
# - ./bootstrap && ./configure --enable-gcc-warnings --disable-doc && make -j$(nproc) check
# tags:
# - shared
# artifacts:
# expire_in: 2 weeks
# when: on_failure
# paths:
# - tests/*.log
# - compat_reports/
pages:
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD
script:
- ./bootstrap
- export CFLAGS=$CFLAGS_DEFAULT
- ./configure
- make -j$(nproc) check-coverage
- mkdir -p public
# Test suite coverage report
- rm -rf public/coverage
- mv lcov public/coverage
# Online Documentation
- rm -rf public/reference
- mv docs/html public/reference
# Coverage report for all our fuzz corpora
- make -j$(nproc) fuzz-coverage
- rm -rf public/fuzz-coverage
- mv lcov public/fuzz-coverage
tags:
- shared
artifacts:
when: on_success
paths:
- public
only:
- master
#MinGW64:
# image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$MINGW_BUILD
# script:
# - ./bootstrap
# - export GCCLIB=$(dirname $(find /usr/lib/gcc/$PREFIX -name libgcc_s_seh-1.dll|grep posix))
# - export WINEPATH="$WINEPATH;/usr/$PREFIX/bin;/usr/$PREFIX/lib;$PWD/libwget/.libs;$GCCLIB"
# - echo "WINEPATH=$WINEPATH"
# - ./configure --build=x86_64-pc-linux-gnu --host=$PREFIX --enable-shared
# - make -j$(nproc)
# - make check -j1 LOG_COMPILER=wine
# tags:
# - shared
# - docker
# except:
# - tags
# artifacts:
# expire_in: 2 weeks
# when: on_failure
# paths:
# - ./*.log
# - fuzz/*.log
# - unit-tests/*.log
# - tests/*.log