From 57ac97e6d86baa7131178649a8ee2883b1070542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20R=C3=BChsen?= Date: Fri, 3 May 2019 11:47:49 +0200 Subject: [PATCH] * .gitlab-ci.yml: Add CI runners from Wget2 --- .gitlab-ci.yml | 307 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 237 insertions(+), 70 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a0f968e4..b02ab4c9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,10 @@ # to speed up compilation. We include a version number in cache # name to allow expiration of old caches. +stages: + - stage1-testing + - stage2-tarball + cache: key: "$CI_JOB_NAME-ver5" paths: @@ -20,12 +24,13 @@ after_script: # somehow after_script loses environment - export CCACHE_BASEDIR=${PWD} - export CCACHE_DIR=${PWD}/cache - - ccache -s + - if which ccache >/dev/null; then ccache -s; fi variables: BUILD_IMAGES_PROJECT: gnuwget/build-images DEBIAN_BUILD: buildenv-debian-stretch - FEDORA_BUILD: buildenv-f27 + DEBIAN_TESTING_BUILD: buildenv-debian-testing + FEDORA_BUILD: buildenv-fedora CENTOS7_BUILD: buildenv-centos7 MINGW_BUILD: buildenv-mingw ALPINE_BUILD: buildenv-alpine @@ -34,19 +39,21 @@ variables: GET_SOURCES_ATTEMPTS: "3" GIT_DEPTH: "5" CONFIGURE_BASE_FLAGS: --enable-assert --cache-file cache/config.cache - CFLAGS_DEFAULT: -O0 -g -ggdb3 -Wall -Wextra + CFLAGS_DEFAULT: -O0 -g -ggdb3 VPATH/Debian: + stage: stage1-testing image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD script: - cp -a /usr/local/gnulib . - export CFLAGS=$CFLAGS_DEFAULT - - ./bootstrap --skip-po + - ./bootstrap --skip-po && touch .manywarnings - mkdir vpath && cd vpath - ../configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache - make -j$(nproc) - make -j$(nproc) distcheck + - mv wget-*.gz .. tags: - shared - docker @@ -58,6 +65,11 @@ VPATH/Debian: - fuzz/*.log - tests/*.log - testenv/*.log + artifacts: + expire_in: 2 weeks + when: on_success + paths: + - wget-*.gz # In this build we combine # * syntax-check @@ -66,29 +78,7 @@ VPATH/Debian: # * build/asan-check # * build w/Werror and ubsan-check OpenSSL/Debian: - image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD - script: - - echo "127.0.0.1 wgettestingserver" >>/etc/hosts - - cat /etc/hosts - - alias make="make -j$(nproc)" - - ./bootstrap --skip-po - - ./configure $CONFIGURE_BASE_FLAGS --with-ssl=gnutls - - make syntax-check - - make check - - make distcheck - - make check-valgrind - tags: - - shared - artifacts: - expire_in: 2 weeks - when: on_failure - paths: - - ./*.log - - fuzz/*.log - - tests/*.log - - testenv/*.log - -GnuTLS/Debian: + stage: stage1-testing image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD script: - echo "127.0.0.1 wgettestingserver" >>/etc/hosts @@ -111,7 +101,32 @@ GnuTLS/Debian: - tests/*.log - testenv/*.log +GnuTLS/Debian: + stage: stage1-testing + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD + script: + - echo "127.0.0.1 wgettestingserver" >>/etc/hosts + - cat /etc/hosts + - alias make="make -j$(nproc)" + - ./bootstrap --skip-po + - ./configure $CONFIGURE_BASE_FLAGS --with-ssl=gnutls + - make syntax-check + - make check + - make distcheck + - make check-valgrind + tags: + - shared + artifacts: + expire_in: 2 weeks + when: on_failure + paths: + - ./*.log + - fuzz/*.log + - tests/*.log + - testenv/*.log + Minimal/Debian: + stage: stage1-testing image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD script: - cp -a /usr/local/gnulib . @@ -136,37 +151,122 @@ Minimal/Debian: - tests/*.log - testenv/*.log +# In this build we combine +# * clang +# * ASan, UBSan +# * check, syntax-check +Sanitizers/Debian: + stage: stage1-testing + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD + script: + - cp -a /usr/local/gnulib . +# - export CFLAGS="$CFLAGS_DEFAULT -Werror" + - export CFLAGS="$CFLAGS_DEFAULT" + - ./bootstrap --skip-po && touch .manywarnings + - export CC="ccache clang" + - export UBSAN_OPTIONS=print_stacktrace=1 + - export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-7/bin/llvm-symbolizer +# - export LSAN_OPTIONS=suppressions="$PWD/tests/clang-asan-suppressions" + - ./configure $CONFIGURE_BASE_FLAGS --enable-fsanitize-asan --enable-fsanitize-ubsan + - make -j$(nproc) check + tags: + - shared + artifacts: + expire_in: 2 weeks + when: on_failure + paths: + - ./*.log + - fuzz/*.log + - tests/*.log + - testenv/*.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/ +Scan-Build/Debian: + stage: stage1-testing + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD + script: + - cp -a /usr/local/gnulib . + - export CFLAGS=$CFLAGS_DEFAULT + - ./bootstrap --skip-po + - scan-build ./configure $CONFIGURE_BASE_FLAGS + - make -C lib -j$(nproc) + - scan-build -v -enable-checker nullability --status-bugs -o scan-build make -j$(nproc) + tags: + - shared + except: + - tags + artifacts: + expire_in: 2 weeks + when: on_failure + paths: + - scan-build/* -#clang-analyzer/Fedora: -# image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD +Valgrind/Debian: + stage: stage1-testing + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD + script: + - cp -a /usr/local/gnulib . + - export CFLAGS=$CFLAGS_DEFAULT + - ./bootstrap --skip-po + - ./configure $CONFIGURE_BASE_FLAGS --enable-valgrind-tests + - make -j$(nproc) + - make check -j$(nproc) + tags: + - shared + except: + - tags + artifacts: + expire_in: 2 weeks + when: on_failure + paths: + - ./*.log + - fuzz/*.log + - tests/*.log + - testenv/*.log + +Simple/Fedora: + stage: stage1-testing + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD + script: + - cp -a /usr/local/gnulib . +# - export CFLAGS="$CFLAGS_DEFAULT -Werror" + - export CFLAGS="$CFLAGS_DEFAULT" + - ./bootstrap --skip-po && touch .manywarnings + - ./configure $CONFIGURE_BASE_FLAGS + - make -j$(nproc) check + tags: + - shared + except: + - tags + artifacts: + expire_in: 2 weeks + when: on_failure + paths: + - ./*.log + - fuzz/*.log + - tests/*.log + - testenv/*.log + +#Alpine: +# stage: stage1-testing +# image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$ALPINE_BUILD # script: -# - ./bootstrap -# - scan-build ./configure --disable-doc --enable-gcc-warnings -# - make -j$(nproc) -C gl -# - scan-build --status-bugs -o scan-build-lib make -j$(nproc) -C lib +# - cp -a /usr/local/gnulib . +# - export CFLAGS="$CFLAGS_DEFAULT" +# - ./bootstrap --skip-po +# - ./configure $CONFIGURE_BASE_FLAGS +# - make -j$(nproc) check # tags: -# - shared +# - shared # except: -# - tags +# - tags # artifacts: # expire_in: 2 weeks # when: on_failure # paths: -# - scan-build-lib/* +# - ./*.log +# - fuzz/*.log +# - tests/*.log +# - testenv/*.log #pages: # image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_BUILD @@ -192,24 +292,91 @@ Minimal/Debian: # only: # - master -#MinGW64: -# image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD -# before_script: -# - mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc && -# echo ':DOSWin:M::MZ::/usr/bin/wine64:' > /proc/sys/fs/binfmt_misc/register -# script: -# - ./bootstrap -# - mingw64-configure --disable-valgrind-tests --disable-doc -# - mingw64-make -j$(nproc) -# - mingw64-make -j$(nproc) check -# tags: -# - shared -# - docker -# except: -# - tags -# artifacts: -# expire_in: 2 weeks -# when: on_failure -# paths: -# - ./*.log -# - tests/*.log +MinGW64: + stage: stage1-testing + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$MINGW_BUILD + script: +# - apt-get install libhttp-daemon-perl libio-socket-ssl-perl python3 + - ./bootstrap --skip-po +# - cp pthread_sigmask.c.mingw lib/pthread_sigmask.c + - export CC="ccache $PREFIX-gcc" + - 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" + - LIBS="-ldl -lpsapi" ./configure $CONFIGURE_BASE_FLAGS --build=x86_64-pc-linux-gnu --host=$PREFIX --enable-shared + - make -j$(nproc) + - make clean + - LIBS="-ldl -lpsapi" ./configure $CONFIGURE_BASE_FLAGS --build=x86_64-pc-linux-gnu --host=$PREFIX --enable-shared --disable-threads + - make -j$(nproc) + - make check -j$(nproc) LOG_COMPILER=wine + tags: + - shared + - docker + except: + - tags + allow_failure: true + artifacts: + expire_in: 2 weeks + when: on_failure + paths: + - ./config.h + - ./*.log + - fuzz/*.log + - tests/*.log + - testenv/*.log + +Build/Arch: + stage: stage1-testing + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$ARCH_BUILD + script: + - export CFLAGS="$CFLAGS_DEFAULT" + - ./bootstrap --skip-po && touch .manywarnings + - ./configure $CONFIGURE_BASE_FLAGS + - make -j$(nproc) + - make check -j$(nproc) + tags: + - shared + - docker + artifacts: + expire_in: 2 weeks + when: on_failure + paths: + - ./*.log + - fuzz/*.log + - tests/*.log + - testenv/*.log + + +# Test building from tarball in a non-dev environment +Tarball: + stage: stage2-tarball + image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$BASIC_BUILD + variables: + GIT_STRATEGY: none + script: + # remove all files from git repo + - mv wget-*.gz /tmp + - rm -rf * .git* .travis* + - mv /tmp/wget-*.gz . + # unpack and build from tarball + - tar xvf wget-*.gz + - cd wget-* + - unset CC + - ./configure $CONFIGURE_BASE_FLAGS + - make -j$(nproc) + - make -j$(nproc) check + # check if essential files are accidentally cleaned + - make clean + - make -j$(nproc) + tags: + - shared + dependencies: + - VPATH/Debian + artifacts: + expire_in: 2 weeks + when: on_failure + paths: + - wget-*/*.log + - wget-*/fuzz/*.log + - wget-*/tests/*.log + - wget-*/testenv/*.log