]> jfr.im git - irc/znc/coverity.git/blame - .travis.yml
Update translations from Crowdin for bg_BG de_DE el_GR es_ES fr_FR id_ID it_IT nl_NL...
[irc/znc/coverity.git] / .travis.yml
CommitLineData
4a33ec57 1language: cpp
c7c878ad
AS
2
3# These linux-specific parameters could be moved into matrix.include items, but that's lots of repetition
4sudo: required
9c1a7c3c
AS
5dist: bionic
6arch: amd64
30cf4135
AS
7services:
8 - docker
c7c878ad 9
e11eb08f 10matrix:
f2c53b64 11 fast_finish: true
30dab0e9
AS
12 include:
13 - os: linux
b8b62a14 14 dist: xenial
30dab0e9 15 compiler: gcc
dd42fcd2 16 env: BUILD_TYPE=normal
30dab0e9
AS
17 - os: linux
18 compiler: clang
dd42fcd2 19 env: BUILD_TYPE=asan
30dab0e9
AS
20 - os: linux
21 compiler: clang
dd42fcd2 22 env: BUILD_TYPE=tsan
9c1a7c3c
AS
23 # TODO: enable
24 # - os: linux
25 # compiler: clang
dd42fcd2 26 # env: BUILD_TYPE=msan
9c1a7c3c
AS
27 # - os: linux
28 # compiler: clang
dd42fcd2 29 # env: BUILD_TYPE=ubsan
9c1a7c3c
AS
30 - os: linux
31 compiler: gcc
dd42fcd2 32 env: BUILD_TYPE=normal
9c1a7c3c 33 arch: arm64
05e3a855 34 - os: osx
44ab4626 35 osx_image: xcode9.3 # macOS 10.13
c7c878ad 36 compiler: clang
dd42fcd2 37 env: BUILD_TYPE=normal
a3e5e4fb
AS
38 - os: linux
39 compiler: gcc
dd42fcd2 40 env: BUILD_TYPE=tarball
7f146afc
AS
41 - stage: deploy
42 os: linux
5b8d176d
AS
43 env:
44 # SECRET_KEY, used to push docs to github and to init coverity scans
45 - secure: "ne14MIcNsUNKjqtgrLHJTHXCUUMKfkV/o4sm2scWYOiIl8s1Hoqnx6mPYIr8qnedIra8fsI7sWVxXLDLd/KMTN9v9WpCwc6Sf45vYtkfrS+rNOr86wOeEbgaxDTsb2UDJhtK0InhhpkipA5jrFzQuMMMEB+JgBQltKV43wmd7Yc="
7f146afc
AS
46 before_install:
47 install:
48 - if [[ "$TRAVIS_REPO_SLUG" == "znc/znc" && "$TRAVIS_PULL_REQUEST" == "false" && "$TRAVIS_BRANCH" == "master" ]]; then ATTEMPT_DEPLOY=yes; else ATTEMPT_DEPLOY=no; fi
5b8d176d
AS
49 - if [[ "$ATTEMPT_DEPLOY" == "yes" ]]; then openssl aes-256-cbc -d -salt -pbkdf2 -in .travis-github.enc -out ~/znc-github-key -k ${SECRET_KEY}; fi
50 - export SECRET_KEY=no
7f146afc 51 - if [[ "$ATTEMPT_DEPLOY" == "yes" ]]; then sudo apt-get update; fi
cb4c254b 52 - if [[ "$ATTEMPT_DEPLOY" == "yes" ]]; then sudo apt-get install -y doxygen graphviz python3-yaml; fi
7f146afc
AS
53 script:
54 - |
55 if [[ "$ATTEMPT_DEPLOY" == "yes" ]]; then
56 mkdir -p ~/.ssh
57 chmod 0600 ~/znc-github-key
58 cp .travis.ssh ~/.ssh/config
59 git config --global user.email "travis-ci@znc.in"
60 git config --global user.name "znc-travis"
61 fi
62 - if [[ "$ATTEMPT_DEPLOY" == "yes" ]]; then ./.travis-generate-docs.sh; fi
63 - if [[ "$ATTEMPT_DEPLOY" == "yes" ]]; then ./.travis-coverity-scan.py; fi
64 after_success:
30cf4135
AS
65 - stage: deploy
66 os: linux
5b8d176d
AS
67 env:
68 # DOCKER_USERNAME
69 - secure: "kiR372QH5Srye2beHVamOVLIPeXnDipWfzvzGJEZzbpH+aXsiD+CkbtulCR+XnKpnUAXQTmEc5ts1KjI9MGlxvP1ztxW8HMDGUMF4iFAjgZO8GyAZlH5I7pMEw7D5pn3W9y1LuCW5C9IsDcWnNTJkm32D7N34lLBCTQVw68ooDk="
70 # DOCKER_PASSWORD
71 - secure: "FMKQarGQJ/MFXnQQWEnlWMM+XItbDPgm5tzCn4k36AsAB1s1SiQ08wmy2Ys/+kRvnPN3Clpl8P2C8CoRTMJ8WCUYZVmf3HsqvsLdrODyusR5/N1y5eOKWxo+t1qN2Jzt6oIi/ofUZdn5mdzt8yif+ufxoez+2ncZDt5HoB/suHE="
30cf4135 72 before_install:
30cf4135 73 install:
88e29540 74 - if [[ "$TRAVIS_REPO_SLUG" == "znc/znc" && "$TRAVIS_PULL_REQUEST" == "false" ]]; then ATTEMPT_DEPLOY=yes; else ATTEMPT_DEPLOY=no; fi
30cf4135 75 - if [[ "$ATTEMPT_DEPLOY" == "yes" ]]; then echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin; fi
5b8d176d 76 - export DOCKER_PASSWORD=no DOCKER_USERNAME=no
30cf4135 77 script:
9d70f94a 78 - echo "$TRAVIS_BRANCH-$(git describe)" > .nightly
c9b9e301 79 - docker build --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` --build-arg VCS_REF=`git rev-parse HEAD` --build-arg VERSION_EXTRA=+docker-git- -t "zncbouncer/znc-git:$TRAVIS_BRANCH" -t "zncbouncer/znc-git:$TRAVIS_BRANCH-$(git describe)" .
30cf4135
AS
80 - if [[ "$ATTEMPT_DEPLOY" == "yes" && "$TRAVIS_BRANCH" == "master" ]]; then docker tag "zncbouncer/znc-git:$TRAVIS_BRANCH" zncbouncer/znc-git:latest; fi
81 - if [[ "$ATTEMPT_DEPLOY" == "yes" ]]; then docker push zncbouncer/znc-git; fi
82 after_success:
4a33ec57 83before_install:
0d14d725 84 - python -c "import fcntl; fcntl.fcntl(1, fcntl.F_SETFL, 0)" # https://github.com/travis-ci/travis-ci/issues/8920
05e3a855 85 - "echo os: [$TRAVIS_OS_NAME] build: [$BUILD_TYPE]"
73899e5d 86 - export CFGFLAGS= MYCXXFLAGS= MYLDFLAGS=
a2d72314 87 - if [[ "$BUILD_TYPE" == "tarball" ]]; then CFGFLAGS+=" --with-gtest=$TRAVIS_BUILD_DIR/third_party/googletest/googletest --with-gmock=$TRAVIS_BUILD_DIR/third_party/googletest/googlemock --disable-swig"; fi
73899e5d
AS
88 - if [[ "$BUILD_TYPE" == "asan" ]]; then MYCXXFLAGS+=" -fsanitize=address -O1 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fPIE" MYLDFLAGS+=" -fsanitize=address -pie"; fi
89 - if [[ "$BUILD_TYPE" == "tsan" ]]; then MYCXXFLAGS+=" -fsanitize=thread -O1 -fPIE" MYLDFLAGS+=" -fsanitize=thread"; fi
9c1a7c3c
AS
90 - if [[ "$BUILD_TYPE" == "msan" ]]; then MYCXXFLAGS+=" -fsanitize=memory -O1 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins" MYLDFLAGS+=" -fsanitize=memory"; fi
91 - if [[ "$BUILD_TYPE" == "ubsan" ]]; then MYCXXFLAGS=" -fsanitize=undefined -O1 -fPIE -fno-sanitize-recover" MYLDFLAGS="-fsanitize=undefined -pie -fno-sanitize-recover"; fi
9c1a7c3c
AS
92 - if [[ "$CC" == "gcc" ]]; then MYCXXFLAGS+=" --coverage" MYLDFLAGS+=" --coverage"; fi
93 - if [[ "$CC" == "clang" ]]; then MYCXXFLAGS+=" -fprofile-instr-generate -fcoverage-mapping" MYLDFLAGS+=" -fprofile-instr-generate"; fi
05e3a855
AS
94install:
95 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then cat /proc/cpuinfo /proc/meminfo; fi
96 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then lsb_release -a; fi
05e3a855 97 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get update; fi
9c1a7c3c 98 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install -y libperl-dev tcl-dev libsasl2-dev libicu-dev swig qtbase5-dev libboost-locale-dev python3-pip cpanminus; fi
dd42fcd2 99 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install -y cmake; fi
1cbe1b87
AS
100 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib); fi
101 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then cpanm --notest Devel::Cover::Report::Clover; fi
102 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export ZNC_MODPERL_COVERAGE=1; fi
05e3a855
AS
103 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sw_vers; fi
104 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sysctl -a | grep cpu; fi
105 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sysctl -a | grep mem; fi
9e3bbdcf
AS
106 # Something broke in Travis brew making it impossible to update python versions (complaining about nil:NilClass), so remove preinstalled brew and install from scratch
107 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then rm -rf /usr/local/Cellar/* /usr/local/opt/* /usr/local/share/aclocal; fi
108 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"; hash -r; fi
05e3a855
AS
109 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew config; fi
110 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew list --versions; fi
111 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
9e3bbdcf 112 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install swig icu4c jq qt5 gettext python cmake openssl pkg-config; fi
aab76567 113 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew outdated python || brew upgrade python; fi
dd42fcd2 114 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew outdated cmake || brew upgrade cmake; fi
05e3a855 115 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew info --json=v1 --installed | jq .; fi
90ae7853 116 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export PKG_CONFIG_PATH="$(brew --prefix qt5)/lib/pkgconfig:$PKG_CONFIG_PATH"; fi
13e96222 117 - pip3 install --user coverage
ef5ace9b 118 - export ZNC_MODPYTHON_COVERAGE=1
1cbe1b87 119 - "echo pkg-config path: [$PKG_CONFIG_PATH]"
4a33ec57 120script:
f984987e 121 - set -v
69294698
AS
122 - if [[ "$BUILD_TYPE" == "tarball" ]]; then ./make-tarball.sh --nightly znc-git-2015-01-16 /tmp/znc-tarball.tar.gz; fi
123 - if [[ "$BUILD_TYPE" == "tarball" ]]; then cd /tmp; tar xvf znc-tarball.tar.gz; fi
124 - if [[ "$BUILD_TYPE" == "tarball" ]]; then cd /tmp/znc-git-2015-01-16; fi
4a33ec57
AS
125 - mkdir build
126 - cd build
dd42fcd2
AS
127 - ../configure.sh --enable-debug --enable-perl --enable-python --enable-tcl --enable-cyrus --enable-charset $CFGFLAGS CXXFLAGS="$CXXFLAGS $MYCXXFLAGS" LDFLAGS="$LDFLAGS $MYLDFLAGS"
128 - cmake --system-information
90ae7853 129 - make VERBOSE=1
dd42fcd2 130 - env LLVM_PROFILE_FILE="$PWD/unittest.profraw" make VERBOSE=1 unittest
ceb1c5ec 131 - sudo make install
1cbe1b87 132 # TODO: use DEVEL_COVER_OPTIONS for https://metacpan.org/pod/Devel::Cover
e8ff1612 133 - env LLVM_PROFILE_FILE="$PWD/inttest.profraw" ZNC_MODPERL_COVERAGE_OPTS="-db,$PWD/cover_db" PYTHONWARNINGS=error make VERBOSE=1 inttest
561a1805 134 - /usr/local/bin/znc --version
ac261706 135after_success:
1cbe1b87 136 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ~/perl5/bin/cover --no-gcov --report=clover; fi
73899e5d 137 - |
9c1a7c3c 138 if [[ "$TRAVIS_OS_NAME" == "osx" && "$CC" == "clang" ]]; then
73899e5d
AS
139 xcrun llvm-profdata merge unittest.profraw -o unittest.profdata
140 xcrun llvm-profdata merge inttest.profraw -o inttest.profdata
141 xcrun llvm-cov show -show-line-counts-or-regions -instr-profile=unittest.profdata test/unittest_bin > unittest-cmake-coverage.txt
73899e5d
AS
142 xcrun llvm-cov show -show-line-counts-or-regions -instr-profile=inttest.profdata /usr/local/bin/znc > inttest-znc-coverage.txt
143 find /usr/local/lib/znc -name '*.so' -or -name '*.bundle' | while read f; do xcrun llvm-cov show -show-line-counts-or-regions -instr-profile=inttest.profdata $f > inttest-$(basename $f)-coverage.txt; done
144 fi
145 - bash <(curl -s https://codecov.io/bash)
4a33ec57
AS
146notifications:
147 irc:
148 channels:
391f89d6 149 # irc.freenode.net #znc-dev (via ZNC-Linker)
bb20971f 150 - secure: "h06+4KSb2hM1BJWQqsrurqIU3F6fK55ATCRO7/t3FK6tbSHduywfbfcJmkPUD08lATCWaKm07afbVQPoU3dc6B+0rLvlvGmOoQlB6OxiROq+fc+gXXBwpnBJ1HKwmBrEActqkyZ8GWTVLeIhhR5xYVVZZv7AZ6jzCgpfyiXPink="
4a33ec57
AS
151 on_success: always
152 on_failure: always
391f89d6
AS
153 skip_join: true
154 nick:
155 secure: "UGh4tbpviOD438ZOi+I3W6eh+R68tbpNIJc0uf5FK6xhHLLo3FRIozkL7CRVA3TxYHuahwerZpBR4TbAyc+gVUn5YRHjdsMIPHPCW/kh8ZkEJKNYXkHerbH0Np6PRLI58l6lmjMQbiWn+lqlgsHdVsyknqxDwoj7JDieE+5X53c="
156 password:
157 secure: "B2F1coXddY1H0/v3OkiPnUlbnSN/wapRay1PUbN8tvm7IDYOjpivhsRk+31/4pauKOoF4AZhzP6F9mhGxkGYBQ23Td5Y6+uZeaDnTYnXjs8fbV0QY1Mx+2EkHDSkLQoYlYr06pK9q55X3uLK1zTz5Ye0Po3KzbeydxOyyG+xBGg="