blob: be75cb6bb10867109e1e44b7389b9a9aeb785d0c [file] [log] [blame]
Radek Krejci562a8002018-09-18 17:09:54 +02001language: c
Radek Krejci48c987e2019-04-04 11:39:45 +02002sudo: required
Radek Krejci00634fe2019-04-23 10:01:37 +02003dist: xenial
Radek Krejci034838b2019-04-05 10:13:59 +02004branches:
5 only:
6 - libyang2
Radek Krejci12d5ec12019-04-18 15:45:40 +02007cache:
8 directories:
9 - $HOME/cache
Radek Krejci562a8002018-09-18 17:09:54 +020010
Radek Krejci48c987e2019-04-04 11:39:45 +020011stages:
12 - name: Test
13 if: type != cron
Radek Krejci48c987e2019-04-04 11:39:45 +020014 - name: Coverity
15 if: type = cron
Radek Krejci5b4b1552019-04-04 13:15:13 +020016
Radek Krejcib2258822020-07-14 08:39:30 +020017addons:
18 homebrew:
19 packages:
20 - cmocka
Radek Krejci6e32ffc2020-11-25 13:35:20 +010021 - shunit2
22 - expect
Radek Krejcib2258822020-07-14 08:39:30 +020023 update: true
24
Radek Krejci48c987e2019-04-04 11:39:45 +020025jobs:
Radek Krejci562a8002018-09-18 17:09:54 +020026 include:
Radek Krejci48c987e2019-04-04 11:39:45 +020027 - stage: Coverity
28 name: Coverity night check
29 os: linux
Radek Krejci562a8002018-09-18 17:09:54 +020030 compiler: clang
Radek Krejci4d271eb2019-04-04 11:53:00 +020031 env:
32 # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
33 # via the "travis encrypt" command using the project repo's public key
34 - secure: "jkN1i+W2V5/ULAmpqEOyl6J6hsa9rS8JcBKsjB/Md6sJJprWKepUfQ0UdhrjBYbFJbo1mnjL0sHboTrowBXH59IQquPtw64oF9HzyMcmwr+Dm93hhm/vaI06oXwkxmnQxC0OW7Cttrmo+858lsegZYxrh2p4tgEd6WOtDpJIaQ4="
Radek Krejcid594a162019-04-04 13:39:05 +020035 addons:
36 coverity_scan:
37 project:
38 name: "CESNET/libyang"
39 notification_email: rkrejci@cesnet.cz
Radek Iša9dc7ea12020-11-27 08:45:47 +010040 build_command_prepend: "mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. && make clean"
Radek Krejcid594a162019-04-04 13:39:05 +020041 build_command: "make"
Radek Krejci034838b2019-04-05 10:13:59 +020042 branch_pattern: libyang2
Radek Krejci4d271eb2019-04-04 11:53:00 +020043 before_install:
Radek Krejci12d5ec12019-04-18 15:45:40 +020044 # check if something changed from the last coverity build
Radek Krejci53dbb7e2019-04-23 10:26:09 +020045 - echo "Last coverity build on revision" `cat $HOME/cache/coveritybuild 2>/dev/null`
46 - echo "Current revision" `git rev-parse HEAD`
Radek Krejci00634fe2019-04-23 10:01:37 +020047 - if [ "`git rev-parse HEAD`" = "`cat $HOME/cache/coveritybuild`" ]; then echo "Codebase did not change from previous build."; travis_terminate 0; fi
Radek Krejci53dbb7e2019-04-23 10:26:09 +020048 - if [ ! -d $HOME/cache ]; then echo "Preparing revision cache."; mkdir -p $HOME/cache; fi
Radek Krejci12d5ec12019-04-18 15:45:40 +020049 - git rev-parse HEAD > $HOME/cache/coveritybuild
Radek Krejci53dbb7e2019-04-23 10:26:09 +020050 - cat $HOME/cache/coveritybuild
Radek Krejci4d271eb2019-04-04 11:53:00 +020051 - sudo apt-get update -qq
Radek Krejci042c5ec2019-06-03 08:32:29 +020052 - wget https://ftp.pcre.org/pub/pcre/pcre2-10.30.tar.gz
53 - tar -xzf pcre2-10.30.tar.gz
54 - cd pcre2-10.30 && ./configure && make -j2 && sudo -i -- sh -c 'cd /home/travis/build/CESNET/libyang/pcre2-10.30/ && make install' && cd ..
Radek Krejcia03e6a82019-04-23 16:07:14 +020055 # get everything for coverity
56 - echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt
57 - wget https://entrust.com/root-certificates/entrust_l1k.cer -O - | sudo tee -a /etc/ssl/certs/ca-certificates.crt
Radek Krejcica9eccc2019-04-23 16:27:31 +020058 - export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
Radek Krejci4d271eb2019-04-04 11:53:00 +020059 script:
60 # do nothing, everything here is done in coverity addon
61 - true
Radek Krejci48c987e2019-04-04 11:39:45 +020062 - stage: Test
63 name: Linux with CLang
64 os: linux
65 compiler: clang
Radek Krejci4d271eb2019-04-04 11:53:00 +020066 before_install:
Radek Krejcie868acc2020-11-13 16:42:58 +010067 - sudo apt-get update -qq && sudo apt-get install -y valgrind shunit2 expect
Radek Krejci4d271eb2019-04-04 11:53:00 +020068 - wget https://cmocka.org/files/1.1/cmocka-1.1.2.tar.xz
69 - tar -xf cmocka-1.1.2.tar.xz
Radek Krejci6d2a61a2019-05-16 10:23:34 +020070 - cd cmocka-1.1.2 && mkdir build && cd build && cmake .. && make -j2 && sudo make install && cd ../..
Radek Krejciad53ef12019-05-31 16:42:37 +020071 - wget https://ftp.pcre.org/pub/pcre/pcre2-10.30.tar.gz
72 - tar -xzf pcre2-10.30.tar.gz
Radek Krejci9a22d292019-05-31 18:17:03 +020073 - cd pcre2-10.30 && ./configure && make -j2 && sudo -i -- sh -c 'cd /home/travis/build/CESNET/libyang/pcre2-10.30/ && make install' && cd ..
Radek Krejci4d271eb2019-04-04 11:53:00 +020074 script:
Radek Iša9dc7ea12020-11-27 08:45:47 +010075 - mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. && make -j2 && ctest --output-on-failure && cd -
Radek Krejci48c987e2019-04-04 11:39:45 +020076 - stage: Test
77 name: Linux with GCC
78 os: linux
79 compiled: gcc
Radek Krejci4d271eb2019-04-04 11:53:00 +020080 before_install:
Radek Krejcie868acc2020-11-13 16:42:58 +010081 - sudo apt-get update -qq && sudo apt-get install -y valgrind shunit2 expect
Radek Krejci4d271eb2019-04-04 11:53:00 +020082 - wget https://cmocka.org/files/1.1/cmocka-1.1.2.tar.xz
83 - tar -xf cmocka-1.1.2.tar.xz
Radek Krejci6d2a61a2019-05-16 10:23:34 +020084 - cd cmocka-1.1.2 && mkdir build && cd build && cmake .. && make -j2 && sudo make install && cd ../..
Radek Krejciad53ef12019-05-31 16:42:37 +020085 - wget https://ftp.pcre.org/pub/pcre/pcre2-10.30.tar.gz
86 - tar -xzf pcre2-10.30.tar.gz
Radek Krejci05cf1462019-05-31 16:58:09 +020087 - cd pcre2-10.30 && ./configure && make -j2 && sudo make install && cd ..
Radek Išace5096a2020-11-25 17:17:44 +010088 - pip install --user codecov
Radek Krejci4d271eb2019-04-04 11:53:00 +020089 script:
Radek Išace5096a2020-11-25 17:17:44 +010090 - mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=ON ../ && make -j2 && ctest --output-on-failure && cd -
Radek Krejci4d271eb2019-04-04 11:53:00 +020091 after_success:
Radek Krejci875f5232020-06-02 16:32:31 +020092 - bash <(curl -s https://codecov.io/bash)
Radek Krejci48c987e2019-04-04 11:39:45 +020093 - stage: Test
Juraj Vijtiukf9fc4d22020-11-04 22:06:37 +010094 name: Linux with CLang ASAN and UBSAN
95 os: linux
96 compiler: clang
97 before_install:
Radek Krejcie868acc2020-11-13 16:42:58 +010098 - sudo apt-get update -qq && sudo apt-get install -y valgrind shunit2 expect
Juraj Vijtiukf9fc4d22020-11-04 22:06:37 +010099 - wget https://cmocka.org/files/1.1/cmocka-1.1.2.tar.xz
100 - tar -xf cmocka-1.1.2.tar.xz
101 - cd cmocka-1.1.2 && mkdir build && cd build && cmake .. && make -j2 && sudo make install && cd ../..
102 - wget https://ftp.pcre.org/pub/pcre/pcre2-10.30.tar.gz
103 - tar -xzf pcre2-10.30.tar.gz
104 - cd pcre2-10.30 && ./configure && make -j2 && sudo -i -- sh -c 'cd /home/travis/build/CESNET/libyang/pcre2-10.30/ && make install' && cd ..
105 script:
Radek Iša9dc7ea12020-11-27 08:45:47 +0100106 - mkdir build && cd build && cmake -DCMAKE_C_FLAGS="-fsanitize=address,undefined" -DENABLE_BUILD_TESTS=ON -DENABLE_VALGRIND_TESTS=OFF .. && make -j2 && ctest --output-on-failure && cd -
Juraj Vijtiukf9fc4d22020-11-04 22:06:37 +0100107 - stage: Test
Radek Krejcib2258822020-07-14 08:39:30 +0200108 name: ABI check
109 os: linux
110 compiled: gcc
111 before_install:
112 - sudo apt-get update -qq && sudo apt-get install -y abi-dumper abi-compliance-checker
113 - sudo snap install core universal-ctags
114 - wget https://ftp.pcre.org/pub/pcre/pcre2-10.30.tar.gz
115 - tar -xzf pcre2-10.30.tar.gz
116 - cd pcre2-10.30 && ./configure && make -j2 && sudo make install && cd ..
117 script:
118 - mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=ABICheck .. && LC_ALL=C.UTF-8 PATH=/snap/bin:$PATH make abi-check && cd -
119 - stage: Test
Radek Krejci48c987e2019-04-04 11:39:45 +0200120 name: OS X with GCC
121 os: osx
Radek Krejci562a8002018-09-18 17:09:54 +0200122 compiler: gcc
Radek Krejci48c987e2019-04-04 11:39:45 +0200123 allow_failures:
124 - os: osx
Radek Krejci4d271eb2019-04-04 11:53:00 +0200125 script:
Radek Iša9dc7ea12020-11-27 08:45:47 +0100126 - mkdir build && cd build && cmake -DENABLE_BUILD_TESTS=ON -DENABLE_VALGRIND_TESTS=OFF .. && make -j2 && ctest --output-on-failure && cd -
Radek Išace5096a2020-11-25 17:17:44 +0100127