sylvestre/codechecker:.travis.yml@7e02207
language:
- python
node_js: 10
services:
- postgresql
jobs:
include:
- os: linux
name: "Analyzer, web (sqlite, psycopg2, pg8000) and tools test cases."
sudo: required
dist: bionic
python: "3.6"
env: CC_MODULE=analyzer
- os: linux
name: "Server/client test cases (sqlite)"
sudo: required
dist: bionic
python: "3.6"
env: DATABASE=sqlite
- os: linux
name: "Server/client test cases (psycopg2)"
sudo: required
dist: bionic
python: "3.6"
env: DATABASE=psql_psycopg2
- os: linux
name: "Server/client test cases (pg8000)"
sudo: required
dist: bionic
python: "3.6"
env: DATABASE=psql_pg8000
- os: linux
name: "GUI test cases."
sudo: required
dist: bionic
python: "3.6"
services:
- xvfb
env:
global:
- MOZ_HEADLESS=1
before_script:
- "export DISPLAY=:99.0"
- "export PATH=$TRAVIS_BUILD_DIR/build/CodeChecker/bin:$PATH"
script: >
make pip_dev_deps &&
make clean_travis package &&
npm run --prefix web/server/vue-cli test
- os: osx
osx_image: xcode10
name: "Analyzer test cases"
sudo: false
language: generic
env: CC_MODULE=analyzer
- os: osx
osx_image: xcode10
name: "Server/client test cases (sqlite)"
sudo: false
language: generic
env: DATABASE=sqlite
- os: osx
osx_image: xcode10
name: "Server/client test cases (psycopg2)"
sudo: false
language: generic
env:
- DATABASE=psql_psycopg2
- POSTGRESQL_VERSION=9.6
- os: osx
osx_image: xcode10
name: "Analyzer, web (sqlite, psycopg2, pg8000) and tools test cases."
sudo: false
language: generic
env:
- DATABASE=psql_pg8000
- POSTGRESQL_VERSION=9.6
before_install:
# Download macOS specific extra dependencies.
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then git clone https://github.com/llvm-mirror/clang.git ~/llvm --branch master --single-branch --depth 1; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update-reset; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install doxygen; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install llvm@9; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export PATH=/usr/local/opt/llvm@9/bin:$PATH; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export PYTHONPATH=~/llvm/tools/scan-build-py/; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export PATH=~/llvm/tools/scan-build-py/bin:$PATH; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then chmod a+x ~/llvm/tools/scan-build-py/bin/intercept-build; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then which clang; which clang-tidy; fi
# Set the proper Clang versions early in the PATH.
- export PATH=$HOME:$PATH
# PostgreSQL is not started automatically on macOS.
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then rm -rf /usr/local/var/postgres; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then initdb /usr/local/var/postgres; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew services start postgres; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then while ! pg_isready; do sleep 1; done; createuser -s postgres; fi
install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pip3 install --ignore-installed nose --user; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export PATH=/Users/travis/Library/Python/3.7/bin:$PATH; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pip3 install virtualenv; fi
# Remove clang symlinks from the travis base install.
# The update-alternatives changes will not change the used clang version without this.
# /usr/local is searched for clang binaries before the /usr/bin direcory.
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo rm -rf /usr/local/clang-*; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-9 9999; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 9999; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-9 9999; fi
# Check if the right clang and clang-tidy is used
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then update-alternatives --display clang; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then update-alternatives --display clang++; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then update-alternatives --display clang-tidy; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then which clang++; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then which clang; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then which clang-tidy; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then clang++ --version; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then clang --version; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then clang-tidy --version; fi
# Run brew cleanup at before_cache stage otherwise, the cache will grow
# indefinitely as new package versions are released.
before_cache:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew cleanup; fi
- rm -f $HOME/.cache/pip/log/debug.log
# Cache downloaded bottles (binary packages) to speed up our build process.
# See: https://stackoverflow.com/questions/39930171/cache-brew-builds-with-travis-ci
cache:
directories:
- $HOME/Library/Caches/Homebrew
- $HOME/.cache/pip
addons:
firefox: "69.0.1"
chrome: stable
apt:
sources:
- sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
- sourceline: 'deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
packages:
- g++-6
- doxygen
- gcc-multilib
- libc6-dev-i386
- libpq-dev
- thrift-compiler
- clang-9
- clang-tidy-9
postgresql: "9.6"
# We will create dist directory to skip installing npm packages and bundling
# the UI. UI specific job will use different script section in a separate job.
script:
- >
make pip_dev_deps &&
make pycodestyle &&
make pylint &&
make clean_travis &&
mkdir -p web/server/vue-cli/dist/dummy &&
make package &&
make -C tools/plist_to_html test &&
make -C tools/report-converter package test &&
make -C tools/codechecker_report_hash test &&
if [[ "$CC_MODULE" = "analyzer" ]]; then
BUILD_DIR=$TRAVIS_BUILD_DIR/build make -C analyzer \
test_unit \
test_functional \
test_tu_collector \
test_merge_clang_extdef_mappings \
test_statistics_collector &&
if [[ "$TRAVIS_OS_NAME" = "linux" ]]; then
make -C analyzer test_build_logger
fi
elif [[ ! -z "$DATABASE" ]]; then
make -C web test_matrix_${DATABASE}
else
make test
fi
Build Config
{
"language": "python",
"os": [
"linux"
],
"dist": "xenial",
"node_js": [
"10"
],
"services": [
"postgresql"
],
"jobs": {
"include": [
{
"os": "linux",
"name": "Analyzer, web (sqlite, psycopg2, pg8000) and tools test cases.",
"sudo": true,
"dist": "bionic",
"python": "3.6",
"env": [
{
"CC_MODULE": "analyzer"
}
]
},
{
"os": "linux",
"name": "Server/client test cases (sqlite)",
"sudo": true,
"dist": "bionic",
"python": "3.6",
"env": [
{
"DATABASE": "sqlite"
}
]
},
{
"os": "linux",
"name": "Server/client test cases (psycopg2)",
"sudo": true,
"dist": "bionic",
"python": "3.6",
"env": [
{
"DATABASE": "psql_psycopg2"
}
]
},
{
"os": "linux",
"name": "Server/client test cases (pg8000)",
"sudo": true,
"dist": "bionic",
"python": "3.6",
"env": [
{
"DATABASE": "psql_pg8000"
}
]
},
{
"os": "linux",
"name": "GUI test cases.",
"sudo": true,
"dist": "bionic",
"python": "3.6",
"services": [
"xvfb"
],
"env": [
{
"global": "MOZ_HEADLESS=1"
}
],
"before_script": [
"export DISPLAY=:99.0",
"export PATH=$TRAVIS_BUILD_DIR/build/CodeChecker/bin:$PATH"
],
"script": [
"make pip_dev_deps && make clean_travis package && npm run --prefix web/server/vue-cli test\n"
]
},
{
"os": "osx",
"osx_image": "xcode10",
"name": "Analyzer test cases",
"sudo": false,
"language": "generic",
"env": [
{
"CC_MODULE": "analyzer"
}
]
},
{
"os": "osx",
"osx_image": "xcode10",
"name": "Server/client test cases (sqlite)",
"sudo": false,
"language": "generic",
"env": [
{
"DATABASE": "sqlite"
}
]
},
{
"os": "osx",
"osx_image": "xcode10",
"name": "Server/client test cases (psycopg2)",
"sudo": false,
"language": "generic",
"env": [
{
"DATABASE": "psql_psycopg2"
},
{
"POSTGRESQL_VERSION": "9.6"
}
]
},
{
"os": "osx",
"osx_image": "xcode10",
"name": "Analyzer, web (sqlite, psycopg2, pg8000) and tools test cases.",
"sudo": false,
"language": "generic",
"env": [
{
"DATABASE": "psql_pg8000"
},
{
"POSTGRESQL_VERSION": "9.6"
}
]
}
]
},
"before_install": [
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then git clone https://github.com/llvm-mirror/clang.git ~/llvm --branch master --single-branch --depth 1; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then brew update-reset; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then brew install doxygen; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then brew install llvm@9; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then export PATH=/usr/local/opt/llvm@9/bin:$PATH; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then export PYTHONPATH=~/llvm/tools/scan-build-py/; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then export PATH=~/llvm/tools/scan-build-py/bin:$PATH; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then chmod a+x ~/llvm/tools/scan-build-py/bin/intercept-build; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then which clang; which clang-tidy; fi",
"export PATH=$HOME:$PATH",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then rm -rf /usr/local/var/postgres; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then initdb /usr/local/var/postgres; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then brew services start postgres; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then while ! pg_isready; do sleep 1; done; createuser -s postgres; fi"
],
"install": [
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then pip3 install --ignore-installed nose --user; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then export PATH=/Users/travis/Library/Python/3.7/bin:$PATH; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then pip3 install virtualenv; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then sudo rm -rf /usr/local/clang-*; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-9 9999; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 9999; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-9 9999; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then update-alternatives --display clang; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then update-alternatives --display clang++; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then update-alternatives --display clang-tidy; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then which clang++; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then which clang; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then which clang-tidy; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then clang++ --version; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then clang --version; fi",
"if [[ \"$TRAVIS_OS_NAME\" == \"linux\" ]]; then clang-tidy --version; fi"
],
"before_cache": [
"if [[ \"$TRAVIS_OS_NAME\" == \"osx\" ]]; then brew cleanup; fi",
"rm -f $HOME/.cache/pip/log/debug.log"
],
"cache": {
"directories": [
"$HOME/Library/Caches/Homebrew",
"$HOME/.cache/pip"
]
},
"addons": {
"firefox": "69.0.1",
"chrome": "stable",
"apt": {
"sources": [
{
"sourceline": "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main",
"key_url": "https://apt.llvm.org/llvm-snapshot.gpg.key"
},
{
"sourceline": "deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main",
"key_url": "https://apt.llvm.org/llvm-snapshot.gpg.key"
}
],
"packages": [
"g++-6",
"doxygen",
"gcc-multilib",
"libc6-dev-i386",
"libpq-dev",
"thrift-compiler",
"clang-9",
"clang-tidy-9"
]
},
"postgresql": "9.6"
},
"script": [
"make pip_dev_deps && make pycodestyle && make pylint && make clean_travis && mkdir -p web/server/vue-cli/dist/dummy && make package && make -C tools/plist_to_html test && make -C tools/report-converter package test && make -C tools/codechecker_report_hash test && if [[ \"$CC_MODULE\" = \"analyzer\" ]]; then\n BUILD_DIR=$TRAVIS_BUILD_DIR/build make -C analyzer \\\n test_unit \\\n test_functional \\\n test_tu_collector \\\n test_merge_clang_extdef_mappings \\\n test_statistics_collector &&\n if [[ \"$TRAVIS_OS_NAME\" = \"linux\" ]]; then\n make -C analyzer test_build_logger\n fi\nelif [[ ! -z \"$DATABASE\" ]]; then\n make -C web test_matrix_${DATABASE}\nelse\n make test\nfi"
]
}