# we utilize the images generated by the build-images project, to # speed up CI runs. We also use ccache and store config.cache # to speed up compilation. stages: - test-from-git - test-from-tarball - deploy cache: key: "$CI_JOB_NAME" paths: - cache/ before_script: # CCache Config - mkdir -p cache - export CCACHE_BASEDIR=${PWD} - export CCACHE_DIR=${PWD}/cache - echo $CCACHE_DIR - export CC="ccache gcc" after_script: # somehow after_script loses environment - export CCACHE_BASEDIR=${PWD} - export CCACHE_DIR=${PWD}/cache - if type -p ccache >/dev/null; then ccache -s; fi variables: BUILD_IMAGES_PROJECT: gnuwget/build-images CI_BASE_PATH: $CI_REGISTRY/$BUILD_IMAGES_PROJECT/wget DEBIAN_OLDSTABLE_BUILD: buildenv-debian-oldstable DEBIAN_TESTING_BUILD: buildenv-debian-testing DEBIAN_STABLE_BUILD: buildenv-debian-stable CENTOS_OLDLTS_BUILD: buildenv-centos7 FEDORA_BUILD: buildenv-fedora MINGW_BUILD: buildenv-mingw ARCH_BUILD: buildenv-arch GET_SOURCES_ATTEMPTS: "3" GIT_DEPTH: "5" CONFIGURE_BASE_FLAGS: --enable-assert --cache-file cache/config.cache CFLAGS_DEFAULT: -O0 -g -ggdb3 # Create the tarball in a separate build directory (VPATH). Build-Tarball: stage: test-from-git image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD script: - export CFLAGS=$CFLAGS_DEFAULT - ./bootstrap - autoreconf -fi - mkdir vpath && cd vpath - ../configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache --without-ssl --enable-ipv6 --without-zlib --without-libiconv-prefix --disable-iri --disable-ntlm --disable-pcre --without-libpsl --without-libuuid --without-libintl-prefix - make -j$(nproc) - make -j$(nproc) syntax-check - make -j$(nproc) dist - mv wget-*.gz .. tags: - shared - linux except: - coverity-scan@gnuwget/wget artifacts: expire_in: 2 weeks when: on_failure paths: - ./*.log - vpath/*.log - vpath/fuzz/*.log - vpath/tests/*.log - vpath/testenv/*.log artifacts: expire_in: 2 weeks when: on_success paths: - wget-*.gz Valgrind: stage: test-from-tarball image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache - make check-valgrind tags: - shared - linux except: - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - wget-*/*.log - wget-*/fuzz/*.log - wget-*/tests/*.log - wget-*/testenv/*.log Minimal: stage: test-from-tarball image: $CI_BASE_PATH/debian:testing-minimal variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache --disable-nls --without-ssl --enable-ipv6 --without-zlib --without-libiconv-prefix --disable-iri --disable-ntlm --disable-pcre --without-libpsl --without-libuuid --without-libintl-prefix - make -j$(nproc) check-valgrind tags: - shared - linux except: - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - wget-*/./*.log - wget-*/fuzz/*.log - wget-*/tests/*.log - wget-*/testenv/*.log Debian-OldStable: stage: test-from-tarball image: $CI_BASE_PATH/debian:oldstable variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache - make - make -j$(nproc) check tags: - shared - linux except: - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - wget-*/./*.log - wget-*/fuzz/*.log - wget-*/tests/*.log - wget-*/testenv/*.log Debian-Stable: stage: test-from-tarball image: $CI_BASE_PATH/debian:stable variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache - make -j$(nproc) check tags: - shared - linux except: - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - wget-*/./*.log - wget-*/fuzz/*.log - wget-*/tests/*.log - wget-*/testenv/*.log CentOS-OldLTS: stage: test-from-tarball image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$CENTOS_OLDLTS_BUILD variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache - make -j$(nproc) - make -j$(nproc) check tags: - shared - linux except: - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - wget-*/./*.log - wget-*/fuzz/*.log - wget-*/tests/*.log - wget-*/testenv/*.log # The test suite is currently broken, so a temporary allowance allow_failure: true TLS/OpenSSL: stage: test-from-tarball image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - echo "127.0.0.1 wgettestingserver" >>/etc/hosts - cat /etc/hosts - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache --with-ssl=openssl - make -j$(nproc) - make -j$(nproc) check-valgrind tags: - shared - linux except: - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - ./*.log - fuzz/*.log - tests/*.log - testenv/*.log TLS/GnuTLS: stage: test-from-tarball image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - echo "127.0.0.1 wgettestingserver" >>/etc/hosts - cat /etc/hosts - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache --with-ssl=gnutls - make -j$(nproc) - make -j$(nproc) check-valgrind tags: - shared - linux except: - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - ./*.log - fuzz/*.log - tests/*.log - testenv/*.log Sanitizers: stage: test-from-tarball image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ # - export CFLAGS="$CFLAGS_DEFAULT -Werror" - export CFLAGS="$CFLAGS_DEFAULT" - export CC="ccache clang" - export UBSAN_OPTIONS=print_stacktrace=1 - export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-8/bin/llvm-symbolizer # - export LSAN_OPTIONS=suppressions="$PWD/tests/clang-asan-suppressions" - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache --enable-fsanitize-asan --enable-fsanitize-ubsan - make -j$(nproc) check tags: - shared - linux except: - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - ./*.log - fuzz/*.log - tests/*.log - testenv/*.log Scan-Build: stage: test-from-tarball image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - scan-build ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache - make -C lib -j$(nproc) - make -C src css_.o - scan-build -v -enable-checker nullability --keep-empty --status-bugs -o ../scan-build make -j$(nproc) tags: - shared - linux except: - tags - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - scan-build/ CoverageReports: stage: test-from-tarball image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache - make -j$(nproc) check-coverage - mv lcov ../test-coverage - make -C doc html - make -j$(nproc) fuzz-coverage - mv lcov ../fuzz-coverage - make dist tags: - shared - linux dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: when: on_success paths: - test-coverage/ - fuzz-coverage/ only: - master MinGW64: stage: test-from-tarball image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$MINGW_BUILD variables: GIT_STRATEGY: none script: - export CFLAGS=$CFLAGS_DEFAULT - tar xvf wget-*.gz - cd wget-*/ - mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc - echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register - 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 --cache-file ../cache/config.cache --build=x86_64-pc-linux-gnu --host=$PREFIX --enable-shared - make -j$(nproc) - cp -p src/wget.exe src/wget - make check -j$(nproc) LOG_COMPILER=wine tags: - shared - linux except: - tags - coverity-scan@gnuwget/wget dependencies: - Build-Tarball needs: ["Build-Tarball"] artifacts: expire_in: 2 weeks when: on_failure paths: - wget-*/./config.h - wget-*/./*.log - wget-*/fuzz/*.log - wget-*/tests/*.log - wget-*/testenv/*.log # The MinGW64 build breaks quite often, mostly due to dependencies. allow_failure: true # Build from git should work on Arch. ArchLinux: stage: test-from-git image: $CI_BASE_PATH/archlinux script: - export CFLAGS="$CFLAGS_DEFAULT" - ./bootstrap - autoreconf -fi - touch .manywarnings - ./configure $CONFIGURE_BASE_FLAGS - make -j$(nproc) - make check -j$(nproc) tags: - shared - linux except: - coverity-scan@gnuwget/wget needs: [] artifacts: expire_in: 2 weeks when: on_failure paths: - ./*.log - fuzz/*.log - tests/*.log - testenv/*.log # Build from git should work on Fedora. Fedora: stage: test-from-git image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD script: - export CFLAGS="$CFLAGS_DEFAULT" - ./bootstrap - autoreconf -fi - touch .manywarnings - ./configure $CONFIGURE_BASE_FLAGS - make -j$(nproc) check tags: - shared - linux except: - coverity-scan@gnuwget/wget needs: [] artifacts: expire_in: 2 weeks when: on_failure paths: - ./*.log - fuzz/*.log - tests/*.log - testenv/*.log pages: stage: deploy script: - mkdir -p public - rm -rf public/reference public/coverage public/fuzz-coverage - mv wget-*.gz public/wget-latest.tar.gz - mv test-coverage public/coverage - mv fuzz-coverage public/fuzz-coverage dependencies: - CoverageReports - Build-Tarball artifacts: when: on_success paths: - public only: - master