lokinet/.travis.yml
Jeff 5b1941222b
unscrew travis-ci (#1223)
* update travis ci clang-format to clang-format-9 because we use that now
add python3-dev package becuase something inside ci thinks it has python but really does not

* try using python3.6

* try working around hot garbage that is travis-ci

* add deadsnakes repo for python3.8

* prevent nullptr deference when running in unit tests

* move python3.8 to main dependancy matrix and add python3.8 to homebrew deps

* add deadsnake apt repo

* add deadsnakes and python3.8 back to previous matrix

* dev package for python

* toggle hive build in ci

* dont add pybind11 if not bulding hive

* revert setting pyenv shim for travis ci

* make native builds on by default except for windows ci

* only apply native build being off for windows release target becuase that broke macos
2020-04-18 16:58:41 -03:00

233 lines
6.1 KiB
YAML

language: cpp
dist: bionic
osx_image: xcode11.3
cache: ccache
matrix:
fast_finish: true
include:
- name: "lint check"
os: linux
compiler: gcc
env: MAKE_TARGET=format-verify PATH="/usr/lib/llvm-9/bin:$PATH"
addons:
apt:
sources:
- llvm-toolchain-bionic-9
packages:
- clang-format-9
- name: "make debug (linux/gcc)"
os: linux
compiler: gcc
env: BUILD_TYPE=Debug IS_NOTIFICATION=1
addons: &core_apt_addons
apt:
sources:
- deadsnakes
packages:
- build-essential
- cmake
- curl
- git
- libcap-dev
- libcurl4-openssl-dev
- libuv1-dev
- ninja-build
- libsodium-dev
- libsystemd-dev
- python3.8
- name: "make release (linux/gcc)"
os: linux
compiler: gcc
env: BUILD_TYPE=Release
addons: *core_apt_addons
- name: "make release (old linux/gcc)"
os: linux
dist: xenial
compiler: gcc
env: BUILD_TYPE=Release
addons: *core_apt_addons
- name: "make debug (linux/clang)"
os: linux
compiler: clang
env: BUILD_TYPE=Debug
addons: *core_apt_addons
- name: "make release (linux/clang)"
os: linux
compiler: clang
env: BUILD_TYPE=Release
addons: *core_apt_addons
- name: "make debug (macOS/clang)"
os: osx
env: BUILD_TYPE=Debug PATH="/usr/local/opt/ccache/libexec:$PATH"
- name: "make release (macOS/clang)"
os: osx
env: BUILD_TYPE=Release PATH="/usr/local/opt/ccache/libexec:$PATH"
- name: "make release (linux/gcc/arm64)"
arch: arm64
compiler: gcc
env: BUILD_TYPE=Release
addons: *core_apt_addons
- name: "make release (linux/gcc/s390x)"
arch: s390x
compiler: gcc
env: BUILD_TYPE=Release
addons: *core_apt_addons
- name: "make release (linux/gcc/ppc64le)"
arch: ppc64le
compiler: gcc
env: BUILD_TYPE=Release
addons: *core_apt_addons
# - name: "make iOS"
# os: osx
# env: MAKE_TARGET=ios PATH="/usr/local/opt/ccache/libexec:$PATH"
# - name: "make windows (macOS)"
# os: osx
# env: MAKE_TARGET=windows PATH="/usr/local/opt/ccache/libexec:$PATH"
# - name: "make windows-release (macOS)"
# os: osx
# env: MAKE_TARGET=windows-release PATH="/usr/local/opt/ccache/libexec:$PATH"
# - name: "make release (macOS beta/clang)"
# os: osx
# env: BUILD_TYPE=Release PATH="/usr/local/opt/ccache/libexec:$PATH"
# - name: "address sanitizer"
# os: osx
# env: BUILD_TYPE=Debug XSAN=address PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++
# - name: "thread sanitizer"
# os: osx
# env: BUILD_TYPE=Debug XSAN=thread PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++
# - name: "undefined sanitizer"
# os: osx
# env: BUILD_TYPE=Debug XSAN=undefined PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++
# - name: "memory sanitizer"
# os: linux
# compiler: clang
# env: BUILD_TYPE=Debug XSAN=memory
# addons: *core_apt_addons
# - name: "router docker image"
# os: linux
# dist: xenial
# env: DOCKER_FILE=docker/router.Dockerfile
# services: docker
- name: "make windows docker image"
os: linux
dist: xenial
env: DOCKER_FILE=docker/alpine-windows.Dockerfile
services: docker
- name: "gcc trunk"
os: linux
dist: xenial
env: DOCKER_FILE=docker/gcc-trunk.Dockerfile
services: docker
- name: "native windows debug"
os: windows
env: BUILD_TYPE=Debug
- name: "native windows release"
os: windows
env: BUILD_TYPE=Release
- name: "windows installer"
os: linux
env: MAKE_TARGET=windows STATIC_LINK=ON DOWNLOAD_SODIUM=ON NATIVE=OFF
allow_failures:
- name: "windows installer"
os: linux
env: MAKE_TARGET=windows STATIC_LINK=ON DOWNLOAD_SODIUM=ON NATIVE=OFF
- name: "make windows docker image"
os: linux
dist: xenial
env: DOCKER_FILE=docker/alpine-windows.Dockerfile
services: docker
- name: "native windows debug"
os: windows
env: BUILD_TYPE=Debug
- name: "native windows release"
os: windows
env: BUILD_TYPE=Release
# - name: "native windows debug"
# os: windows
# env: BUILD_TYPE=Debug
# - name: "native windows release"
# os: windows
# env: BUILD_TYPE=Release
allow_failures:
- name: "make windows docker image"
- name: "native windows debug"
- name: "native windows release"
- name: "router docker image"
- name: "gcc trunk"
- arch: ppc64le
env:
global:
- NINJA=ninja
- STATIC_LINK=OFF
addons:
apt:
sources:
- deadsnakes
packages:
- binutils-gold
- build-essential
- clang-format
- cmake
- curl
- docker-ce
- nsis
- g++-mingw-w64
- g++-mingw-w64-x86-64
- gcc-mingw-w64-base
- git
- libcap-dev
- libcurl4-openssl-dev
- libuv1-dev
- mingw-w64 mingw-w64-common
- ninja-build
- libsodium-dev
- python3.8-dev
homebrew:
update: true
packages:
- ccache
- cmake
- curl
- libuv
- make
- ninja
- libsodium
- python@3.8
before_install:
- if [ "$TRAVIS_OS_NAME" == "windows" ]; then
choco install curl make ninja;
choco upgrade cmake.install;
export CC="/c/Program Files/LLVM/bin/clang-cl";
export CXX="/c/Program Files/LLVM/bin/clang-cl";
fi
script:
- if [ "$TRAVIS_OS_NAME" == "windows" ]; then
cmd.exe /C '"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" amd64 && make test';
elif [[ ! -z $DOCKER_FILE ]]; then
docker build -f $DOCKER_FILE .;
else
make DOWNLOAD_SODIUM=ON ${MAKE_TARGET:-test};
fi
after_script:
- echo $TRAVIS_COMMIT_RANGE
- echo $TRAVIS_COMMIT_LOG
notifications:
webhooks:
urls: $WEBHOOK_URL
irc:
on_success: change
on_failure: change
channels:
- "chat.freenode.net#llarp"
nick: lokinet-ci
template:
- "%{result} | %{repository}#%{build_number} (%{commit} : %{author}) | Build details : %{build_url}"