]>
Commit | Line | Data |
---|---|---|
4a33ec57 | 1 | language: cpp |
c7c878ad AS |
2 | |
3 | # These linux-specific parameters could be moved into matrix.include items, but that's lots of repetition | |
4 | sudo: required | |
9c1a7c3c AS |
5 | dist: bionic |
6 | arch: amd64 | |
30cf4135 AS |
7 | services: |
8 | - docker | |
c7c878ad | 9 | |
e11eb08f | 10 | matrix: |
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 | 83 | before_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 |
94 | install: |
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 | 120 | script: |
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 | 135 | after_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 |
146 | notifications: |
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=" |