Skip to content

Commit d514c37

Browse files
committed
[travis] Implement build stages
To: - be neatest - modernize travis config - send coverage reports only if we succeed with `Lint` stage (instead of sending it in each successful test)
1 parent af728d9 commit d514c37

File tree

1 file changed

+46
-25
lines changed

1 file changed

+46
-25
lines changed

.travis.yml

Lines changed: 46 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@ dist: xenial # needed for more recent python 3 and python3-venv
44

55
language: generic
66

7+
stages:
8+
- lint
9+
- test
10+
711
services:
812
- docker
913

1014
before_install:
1115
- travis_retry sudo apt update -qq
1216
# to successfully send the coveralls reports we need pyOpenSSL
13-
- travis_retry sudo apt install -qq --no-install-recommends python2.7 python3 python3-venv python3-virtualenv python3-setuptools python3-pip python3-openssl
17+
- travis_retry sudo apt install -qq --no-install-recommends
18+
python2.7 python3 python3-venv python3-virtualenv python3-pip
19+
python3-setuptools python3-openssl
1420
# (venv/virtualenv are both used by tests/test_pythonpackage.py)
1521
- sudo pip install tox>=2.0
1622
- sudo pip3 install coveralls
@@ -22,27 +28,42 @@ env:
2228
global:
2329
- ANDROID_SDK_HOME=/opt/android/android-sdk
2430
- ANDROID_NDK_HOME=/opt/android/android-ndk
25-
matrix:
26-
- COMMAND='. venv/bin/activate && cd testapps/ && python setup_testapp_python3_sqlite_openssl.py apk --sdk-dir $ANDROID_SDK_HOME --ndk-dir $ANDROID_NDK_HOME --requirements libffi,sdl2,pyjnius,kivy,python3,openssl,requests,sqlite3,setuptools'
27-
# overrides requirements to skip `peewee` pure python module, see:
28-
# https://github.com/kivy/python-for-android/issues/1263#issuecomment-390421054
29-
- COMMAND='. venv/bin/activate && cd testapps/ && python setup_testapp_python2_sqlite_openssl.py apk --sdk-dir $ANDROID_SDK_HOME --ndk-dir $ANDROID_NDK_HOME --requirements sdl2,pyjnius,kivy,python2,openssl,requests,sqlite3,setuptools'
30-
- COMMAND='. venv/bin/activate && cd testapps/ && python setup_testapp_python2.py apk --sdk-dir $ANDROID_SDK_HOME --ndk-dir $ANDROID_NDK_HOME --bootstrap sdl2 --requirements python2,numpy'
31-
# builds only the recipes that moved
32-
- COMMAND='. venv/bin/activate && ./ci/rebuild_updated_recipes.py'
33-
34-
before_script:
35-
# we want to fail fast on tox errors without having to `docker build` first
36-
- tox -- tests/ --ignore tests/test_pythonpackage.py
37-
# (we ignore test_pythonpackage.py since these run way too long!! test_pythonpackage_basic.py will still be run.)
38-
39-
script:
40-
# Run a background process to make sure that travis will not kill our tests in
41-
# case that the travis log doesn't produce any output for more than 10 minutes
42-
- while sleep 540; do echo "==== Still running (travis, don't kill me) ===="; done &
43-
- docker build --tag=p4a --file Dockerfile.py3 .
44-
- docker run -e CI -e TRAVIS_JOB_ID="$TRAVIS_JOB_ID" -e TRAVIS_BRANCH="$TRAVIS_BRANCH" p4a /bin/sh -c "$COMMAND"
45-
# kill the background process started before run docker
46-
- kill %1
47-
after_success:
48-
- coveralls
31+
32+
jobs:
33+
include:
34+
- stage: lint
35+
name: "Tox tests and coverage"
36+
script:
37+
# we want to fail fast on tox errors without having to `docker build` first
38+
- tox -- tests/ --ignore tests/test_pythonpackage.py
39+
# (we ignore test_pythonpackage.py since these run way too long!!
40+
# test_pythonpackage_basic.py will still be run.)
41+
after_success:
42+
- coveralls
43+
44+
- &testing
45+
stage: test
46+
before_script:
47+
# build docker image
48+
- docker build --tag=p4a --file Dockerfile.py3 .
49+
# Run a background process to make sure that travis will not kill our tests in
50+
# case that the travis log doesn't produce any output for more than 10 minutes
51+
- while sleep 540; do echo "==== Still running (travis, don't kill me) ===="; done &
52+
script:
53+
- docker run -e CI -e TRAVIS_JOB_ID="$TRAVIS_JOB_ID" -e TRAVIS_BRANCH="$TRAVIS_BRANCH" p4a /bin/sh -c "$COMMAND"
54+
after_script:
55+
# kill the background process started before run docker
56+
- kill %1
57+
name: Python 3 basic
58+
# overrides requirements to skip `peewee` pure python module, see:
59+
# https://github.com/kivy/python-for-android/issues/1263#issuecomment-390421054
60+
env: COMMAND='. venv/bin/activate && cd testapps/ && python setup_testapp_python3_sqlite_openssl.py apk --sdk-dir $ANDROID_SDK_HOME --ndk-dir $ANDROID_NDK_HOME --requirements libffi,sdl2,pyjnius,kivy,python3,openssl,requests,sqlite3,setuptools'
61+
- <<: *testing
62+
name: Python 2 basic
63+
env: COMMAND='. venv/bin/activate && cd testapps/ && python setup_testapp_python2_sqlite_openssl.py apk --sdk-dir $ANDROID_SDK_HOME --ndk-dir $ANDROID_NDK_HOME --requirements sdl2,pyjnius,kivy,python2,openssl,requests,sqlite3,setuptools'
64+
- <<: *testing
65+
name: Python 2 numpy
66+
env: COMMAND='. venv/bin/activate && cd testapps/ && python setup_testapp_python2.py apk --sdk-dir $ANDROID_SDK_HOME --ndk-dir $ANDROID_NDK_HOME --bootstrap sdl2 --requirements python2,numpy'
67+
- <<: *testing
68+
name: Rebuild updated recipes
69+
env: COMMAND='. venv/bin/activate && ./ci/rebuild_updated_recipes.py'

0 commit comments

Comments
 (0)