From afd3d7842b3f298a630dca793b6f4b7772f29307 Mon Sep 17 00:00:00 2001 From: Kyle Robbertze Date: Wed, 13 May 2020 17:10:14 +0200 Subject: [PATCH] Rewrite Travis script to be modular Fixes: #1039 --- .travis.yml | 169 ++++++++++++---------------- python_apps/airtime-celery/setup.py | 5 +- travis/install.sh | 25 ++++ travis/php.sh | 9 -- travis/python.sh | 16 --- travis/test.sh | 19 ++++ 6 files changed, 121 insertions(+), 122 deletions(-) create mode 100755 travis/install.sh delete mode 100755 travis/php.sh delete mode 100755 travis/python.sh create mode 100755 travis/test.sh diff --git a/.travis.yml b/.travis.yml index c3eb5766f..d05bf1451 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,109 +1,86 @@ dist: xenial -version: ~> 1.0 -language: php -php: -# the latest and greatest, has some issues that are excluded below in matrix.allow_failures -- 7.3 -- 7.2 -- 7.1 -# the 7.0 build demonstrates that everything is basically ok for 7.0, users might want to wait for 7.1 to run it -- 7.0 -# folks who prefer running on 5.x should be using 5.6 in most cases, 5.4 is no in the matrix since noone should use it -- 5.6 + services: -- postgresql -- rabbitmq + - postgresql + env: global: - - ENVIRONMENT=testing - - LIBRETIME_LOG_DIR=/tmp/log/libretime - jobs: - - PYTHON=false - - PYTHON=true -jobs: - allow_failures: - # there are currently some testing issues with DateTime precision on 7.1 - - env: PYTHON=false - php: 7.1 - # there are some issues with phpunit as well as some deep in zf1 on 7.2 - - env: PYTHON=false - php: 7.2 - # there are some issues with phpunit as well as some deep in zf1 on 7.3 - - env: PYTHON=false - php: 7.3 - exclude: - # we need to explicitly exclude python for every version of php other than 7.3 to make way to just run python tests in one seperate instance - - env: PYTHON=true - php: 7.2 - - env: PYTHON=true - php: 7.1 - - env: PYTHON=true - php: 7.0 - - env: PYTHON=true - php: 5.6 - - env: PYTHON=true - php: 5.4 + - ENVIRONMENT=testing + - LIBRETIME_LOG_DIR=/tmp/log/libretime + addons: apt: packages: - - silan - - libgirepository1.0-dev - - gir1.2-gstreamer-1.0 - - gstreamer1.0-plugins-base - - gstreamer1.0-plugins-good - - gstreamer1.0-plugins-bad - - gstreamer1.0-plugins-ugly - - libcairo2-dev - - liquidsoap - - liquidsoap-plugin-mad - - liquidsoap-plugin-taglib - - liquidsoap-plugin-flac - - liquidsoap-plugin-ogg - - liquidsoap-plugin-lame - - liquidsoap-plugin-faad - - liquidsoap-plugin-vorbis - - liquidsoap-plugin-opus - - python3 - - python3-nose - - python3-gst-1.0 - - python3-magic - - dos2unix -install: -- > - if [[ "$PYTHON" == false ]]; then - composer install - fi -- > - if [[ "$PYTHON" == true ]]; then - pyenv local 3.7 - pip3 install -U pip wheel - pip3 install --user rgain3 - pushd python_apps/airtime_analyzer - python3 setup.py install --dry-run --no-init-script - popd - fi + - gstreamer1.0-plugins-base + - gstreamer1.0-plugins-good + - gstreamer1.0-plugins-bad + - gstreamer1.0-plugins-ugly + - libgirepository1.0-dev + - liquidsoap + - liquidsoap-plugin-faad + - liquidsoap-plugin-lame + - liquidsoap-plugin-mad + - liquidsoap-plugin-vorbis + - python3-gst-1.0 + - silan + +jobs: + include: + - language: php + php: 7.3 + stage: test + - language: php + php: 7.2 + stage: test + - language: php + php: 7.1 + stage: test + - language: php + php: 7.0 + stage: test + - language: php + php: 5.6 + stage: test + - language: python + python: 3.8 + stage: test + - language: python + python: 3.7 + stage: test + - language: python + python: 3.5 + stage: test + - stage: deploy + addons: + apt: + packages: + dos2unix + script: + ./travis/release.sh + deploy: + - provider: releases + token: $GITHUB_TOKEN + file: build/libretime-*.tar.gz + edge: true + on: + tags: true + allow_failures: + # https://github.com/LibreTime/libretime/issues/779 + - language: php + php: 7.3 + - language: php + php: 7.2 + - language: php + php: 7.1 + # https://github.com/LibreTime/libretime/issues/1041 + - language: python + python: 3.5 + +install: ./travis/install.sh before_script: -# prepare the database as per docs/testing.md - psql -c 'CREATE DATABASE libretime;' -U postgres - psql -c "CREATE USER libretime WITH PASSWORD 'libretime';" -U postgres - psql -c 'GRANT CONNECT ON DATABASE libretime TO libretime;' -U postgres - psql -c 'ALTER USER libretime CREATEDB;' -U postgres - mkdir -p /tmp/log/libretime -script: -- ./travis/php.sh -- ./travis/python.sh -deploy: -- provider: script - skip_cleanup: true - script: ./travis/release.sh - on: - tags: true - condition: $PYTHON = true -- provider: releases - skip_cleanup: true - api_key: $GITHUB_TOKEN - file_glob: true - file: build/libretime-*.tar.gz - on: - tags: true - condition: $PYTHON = true +script: ./travis/test.sh diff --git a/python_apps/airtime-celery/setup.py b/python_apps/airtime-celery/setup.py index 79d382da7..052626d0e 100644 --- a/python_apps/airtime-celery/setup.py +++ b/python_apps/airtime-celery/setup.py @@ -1,3 +1,4 @@ +from pathlib import Path from setuptools import setup from subprocess import call import os @@ -28,7 +29,9 @@ else: def postinst(): - if not no_init: + initd = Path("/etc/init.d/airtime-celery") + conf = Path("/etc/default/airtime-celery") + if not no_init and initd.is_file() and conf.is_file(): # Make /etc/init.d file executable and set proper # permissions for the defaults config file os.chmod("/etc/init.d/airtime-celery", 0o755) diff --git a/travis/install.sh b/travis/install.sh new file mode 100755 index 000000000..47e36a6ce --- /dev/null +++ b/travis/install.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -xe + +if [[ -n "$TRAVIS_PHP_VERSION" ]]; then + composer install +fi +if [[ -n "$TRAVIS_PYTHON_VERSION" ]]; then + pyenv local $TRAVIS_PYTHON_VERSION + pushd python_apps/airtime_analyzer + pip3 install -e . + popd + + pushd python_apps/airtime-celery + pip3 install -e . + popd + + pushd python_apps/api_clients + pip3 install -e . + popd + + pushd python_apps/pypo + pip3 install -e . + popd +fi diff --git a/travis/php.sh b/travis/php.sh deleted file mode 100755 index 9c8c91b13..000000000 --- a/travis/php.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -xe - -[[ "$PYTHON" == true ]] && exit 0 - -pushd airtime_mvc/tests -../../vendor/bin/phpunit -popd diff --git a/travis/python.sh b/travis/python.sh deleted file mode 100755 index 524b44ce9..000000000 --- a/travis/python.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -set -xe - -[[ "$PYTHON" == false ]] && exit 0 - -pyenv local 3.7 -pushd python_apps/airtime_analyzer -pip3 install -e . -nosetests -popd - -pushd python_apps/api_clients -pip3 install -e . -nosetests -popd diff --git a/travis/test.sh b/travis/test.sh new file mode 100755 index 000000000..81aad4a26 --- /dev/null +++ b/travis/test.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -xe + +if [[ -n "$TRAVIS_PHP_VERSION" ]]; then + pushd airtime_mvc/tests + ../../vendor/bin/phpunit + popd +fi +if [[ -n "$TRAVIS_PYTHON_VERSION" ]]; then + pyenv local $TRAVIS_PYTHON_VERSION + pushd python_apps/airtime_analyzer + nosetests + popd + + pushd python_apps/api_clients + nosetests + popd +fi