mirror of
https://github.com/mirror/wget.git
synced 2024-12-26 21:00:26 +08:00
0fea7bc076
* contrib/commit-check: Add new script * .gitlab-ci.yml: Add new test in the CI pipeline
508 lines
14 KiB
YAML
508 lines
14 KiB
YAML
# 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
|
|
|
|
CommitCheck:
|
|
stage: test-from-git
|
|
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_TESTING_BUILD
|
|
script:
|
|
- ./contrib/commit-check
|
|
allow_failure: true
|
|
cache:
|
|
paths:
|
|
policy: push
|
|
|
|
|
|
# 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:
|
|
- wget-*/./*.log
|
|
- wget-*/fuzz/*.log
|
|
- wget-*/tests/*.log
|
|
- wget-*/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:
|
|
- wget-*/./*.log
|
|
- wget-*/fuzz/*.log
|
|
- wget-*/tests/*.log
|
|
- wget-*/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/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:
|
|
- wget-*/./*.log
|
|
- wget-*/fuzz/*.log
|
|
- wget-*/tests/*.log
|
|
- wget-*/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/
|
|
# scan-build reports two false positives that we can't suppress
|
|
allow_failure: true
|
|
|
|
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
|