aboutsummaryrefslogtreecommitdiffhomepage
path: root/assets/ci-config.yml
diff options
context:
space:
mode:
Diffstat (limited to 'assets/ci-config.yml')
-rw-r--r--assets/ci-config.yml157
1 files changed, 157 insertions, 0 deletions
diff --git a/assets/ci-config.yml b/assets/ci-config.yml
new file mode 100644
index 0000000..9fbe236
--- /dev/null
+++ b/assets/ci-config.yml
@@ -0,0 +1,157 @@
+language: c
+group: edge
+os: linux
+dist: bionic
+
+before_script:
+ - export -f travis_fold
+ - export OS="$TRAVIS_OS_NAME"
+
+script:
+ - "bash .ci.sh"
+
+addons:
+ apt:
+ packages: &core_build
+ # This is all the bits we need to enable all options
+ - libasound2-dev
+ - libevdev-dev
+ - libola-dev
+ - libjack-jackd2-dev
+ - liblua5.3-dev
+ - python3-dev
+ - libssl-dev
+ - lintian
+ packages: &core_build_gpp_latest
+ - *core_build
+ - gcc-8
+ - g++-8
+ packages: &core_build_clang_latest
+ - *core_build
+ - clang-6.0
+ packages: &core_build_windows
+ - *core_build
+ - mingw-w64
+ packages: &linters
+ - python3
+ - python3-pip
+ - lintian
+ - codespell
+ - shellcheck
+ - cloc
+
+jobs:
+ fast_finish: true
+ include:
+ - os: linux
+ dist: bionic
+ compiler: clang
+ env: TASK='compile'
+ addons:
+ apt:
+ packages:
+ - *core_build_clang_latest
+ - os: linux
+ dist: bionic
+ compiler: gcc
+ env: TASK='compile'
+ addons:
+ apt:
+ packages:
+ - *core_build_gpp_latest
+ - os: linux
+ dist: bionic
+ compiler: mingw32-gcc
+ env:
+ - TASK='windows'
+ - CC='x86_64-w64-mingw32-gcc'
+ addons:
+ apt:
+ packages:
+ - *core_build_windows
+ - os: linux
+ dist: bionic
+ compiler: clang
+ env: TASK='sanitize'
+ addons:
+ apt:
+ packages:
+ - *core_build_clang_latest
+ - os: osx
+ osx_image: xcode10.2
+ compiler: clang
+ env:
+ - TASK='compile'
+ - os: osx
+ osx_image: xcode10.2
+ compiler: clang
+ env:
+ - TASK='sanitize'
+ - os: linux
+ dist: bionic
+ env: TASK='codesmell'
+ addons:
+ apt:
+ packages:
+ - *linters
+ - os: linux
+ dist: bionic
+ env: TASK='spellcheck'
+ addons:
+ apt:
+ packages:
+ - *linters
+ allow_failures:
+ - os: linux
+ dist: bionic
+ env: TASK='codesmell'
+ - os: linux
+ dist: bionic
+ env: TASK='spellcheck'
+
+env:
+ global:
+ # No colours in terminal (to reduce log file size)
+ - TERM=dumb
+ # Parallel make build
+ - MAKEFLAGS="-j 4"
+
+cache:
+ apt: true
+
+before_install:
+# Travis clones with --branch, which omits tags. Since we use them for the version string at build time, fetch them
+ - git pull --tags
+ - printf "This is %s on %s\n" "$(git describe)" "$TRAVIS_OS_NAME"
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
+# 'brew install' sometimes returns non-zero for some arcane reason. Executing 'true' resets the exit code and allows Travis to continue building...
+# Travis seems to have Python 2.7 installed by default, which for some reason prevents pkg-config from reading python3.pc
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install ola lua openssl jack python3; brew link --overwrite python; true; fi
+# OpenSSL is not a proper install due to some Apple bull, so provide additional locations via the environment...
+# Additionally, newer versions of this "recipe" seem to use the name 'openssl@1.1' instead of plain 'openssl' and there seems to be
+# no way to programmatically get the link and include paths. Genius! Hardcoding the new version for the time being...
+ - export CFLAGS="$CFLAGS -I/usr/local/opt/openssl@1.1/include"
+ - export LDFLAGS="$LDFLAGS -L/usr/local/opt/openssl@1.1/lib"
+#Use the latest clang if we're compiling with clang
+ - if [ "$TRAVIS_OS_NAME" == "linux" -a "$CC" = "clang" ]; then export CC="clang-6.0"; export CXX="clang-6.0"; fi
+# Download libraries to link with for Windows
+ - if [ "$TASK" == "windows" ]; then wget "https://downloads.sourceforge.net/project/luabinaries/5.3.5/Windows%20Libraries/Dynamic/lua-5.3.5_Win64_dllw6_lib.zip" -O lua53.zip; unzip lua53.zip lua53.dll; fi
+
+notifications:
+ irc:
+ channels:
+ - "irc.hackint.org#midimonster"
+ on_success: change # default: always
+ on_failure: always # default: always
+ nick: mm_ci
+ use_notice: true
+
+deploy:
+ provider: releases
+ file_glob: true
+ token: $GITHUB_TOKEN
+ file: ./deployment/*
+ skip_cleanup: true
+ draft: true
+ on:
+ tags: true