|
5 | 5 | # can't be any leading "-"s - All newlines will be removed, so use ";"s
|
6 | 6 |
|
7 | 7 | os: linux
|
8 |
| -arch: amd64 |
| 8 | +arch: arm64 |
9 | 9 | dist: xenial
|
10 | 10 | language: python
|
11 | 11 | cache: pip
|
12 | 12 |
|
13 | 13 | env:
|
14 | 14 | global:
|
15 |
| - - SETUP_REQUIRES="pip setuptools>=30.3.0 wheel" |
16 |
| - - DEPENDS="numpy scipy matplotlib h5py pillow pydicom indexed_gzip" |
| 15 | + # Note that DEPENDS, OPTIONAL_DEPENDS and EXTRA_PIP_FLAGS are |
| 16 | + # indirect and (when non-empty) refer to variables in tools/ci/env.sh |
| 17 | + - DEPENDS="REQUIREMENTS" |
| 18 | + - OPTIONAL_DEPENDS="DEFAULT_OPT_DEPENDS" |
17 | 19 | - INSTALL_TYPE="setup"
|
18 | 20 | - CHECK_TYPE="test"
|
19 |
| - - NIGHTLY_WHEELS="https://pypi.anaconda.org/scipy-wheels-nightly/simple" |
20 |
| - - PRE_PIP_FLAGS="--pre --extra-index-url $NIGHTLY_WHEELS" |
| 21 | + - EXTRA_PIP_FLAGS="PRE_PIP_FLAGS" |
21 | 22 |
|
22 | 23 | python:
|
| 24 | + - 3.6 |
23 | 25 | - 3.7
|
24 | 26 | - 3.8
|
25 | 27 |
|
26 |
| -jobs: |
27 |
| - include: |
28 |
| - - arch: arm64 |
29 |
| - python: 3.6 |
30 |
| - env: |
31 |
| - - DEPENDS="numpy scipy pillow pydicom" |
32 |
| - - EXTRA_PIP_FLAGS="$PRE_PIP_FLAGS" |
33 |
| - # Basic dependencies only |
34 |
| - - python: 3.6 |
35 |
| - env: |
36 |
| - - DEPENDS="-r requirements.txt" |
37 |
| - # Clean install |
38 |
| - - python: 3.6 |
39 |
| - env: |
40 |
| - - DEPENDS="" |
41 |
| - - CHECK_TYPE=skiptests |
42 |
| - # Absolute minimum dependencies |
43 |
| - - python: 3.6 |
44 |
| - env: |
45 |
| - - SETUP_REQUIRES="setuptools==30.3.0" |
46 |
| - - DEPENDS="-r min-requirements.txt" |
47 |
| - # Absolute minimum dependencies plus oldest MPL |
48 |
| - - python: 3.6 |
49 |
| - env: |
50 |
| - - DEPENDS="-r min-requirements.txt matplotlib==1.5.3" |
51 |
| - # Minimum pydicom dependency |
52 |
| - - python: 3.6 |
53 |
| - env: |
54 |
| - - DEPENDS="-r min-requirements.txt pydicom==0.9.9 pillow==2.6" |
55 |
| - # pydicom master branch |
56 |
| - - python: 3.6 |
57 |
| - env: |
58 |
| - - DEPENDS="numpy git+https://github.com/pydicom/pydicom.git@master" |
59 |
| - # test 3.8 against pre-release builds of everything |
60 |
| - - python: 3.8 |
61 |
| - env: |
62 |
| - - EXTRA_PIP_FLAGS="$PRE_PIP_FLAGS" |
63 |
| - # test 3.9 against pre-release builds of dependencies that support it |
64 |
| - - python: 3.9 |
65 |
| - env: |
66 |
| - - DEPENDS="numpy scipy h5py pillow pydicom" |
67 |
| - - EXTRA_PIP_FLAGS="$PRE_PIP_FLAGS" |
68 |
| - # OSX Python support is basically accidental. Take whatever version we can |
69 |
| - # get and test with full dependencies... |
70 |
| - - os: osx |
71 |
| - language: minimal |
72 |
| - # and pre-releases. No min-requirements.txt because we can't assume a wheel that old. |
73 |
| - - os: osx |
74 |
| - language: minimal |
75 |
| - env: |
76 |
| - - EXTRA_PIP_FLAGS="$PRE_PIP_FLAGS" |
77 |
| - # Test that PyPI installs from source pass |
78 |
| - - python: 3.6 |
79 |
| - env: |
80 |
| - - INSTALL_TYPE=sdist |
81 |
| - # Wheels (binary distributions) |
82 |
| - - python: 3.6 |
83 |
| - env: |
84 |
| - - INSTALL_TYPE=wheel |
85 |
| - # Install from git archive (e.g., https://github.com/nipy/nibabel/archive/master.zip) |
86 |
| - - python: 3.6 |
87 |
| - env: |
88 |
| - - INSTALL_TYPE=archive |
89 |
| - # Run flake8... Might not be needed now we have pep8speaks |
90 |
| - - python: 3.6 |
91 |
| - env: |
92 |
| - - CHECK_TYPE="style" |
93 |
| - # Documentation doctests |
94 |
| - - python: 3.6 |
95 |
| - env: |
96 |
| - - CHECK_TYPE="doc" |
97 |
| - |
98 | 28 | # Set up virtual environment, build package, build from depends
|
99 | 29 | before_install:
|
100 |
| - - travis_retry python3 -m pip install --upgrade pip virtualenv |
101 |
| - - virtualenv --python=python3 venv |
102 |
| - - source venv/bin/activate |
103 |
| - - python3 --version # just to check |
104 |
| - - travis_retry python3 -m pip install -U $SETUP_REQUIRES |
105 |
| - - which python3 |
106 |
| - - which pip |
107 |
| - - | |
108 |
| - if [ "$INSTALL_TYPE" == "sdist" ]; then |
109 |
| - python3 setup.py egg_info # check egg_info while we're here |
110 |
| - python3 setup.py sdist |
111 |
| - export ARCHIVE=$( ls dist/*.tar.gz ) |
112 |
| - elif [ "$INSTALL_TYPE" == "wheel" ]; then |
113 |
| - python3 setup.py bdist_wheel |
114 |
| - export ARCHIVE=$( ls dist/*.whl ) |
115 |
| - elif [ "$INSTALL_TYPE" == "archive" ]; then |
116 |
| - export ARCHIVE="package.tar.gz" |
117 |
| - git archive -o $ARCHIVE HEAD |
118 |
| - fi |
119 |
| - - if [ -n "$DEPENDS" ]; then pip install $EXTRA_PIP_FLAGS $DEPENDS; fi |
| 30 | + - travis_retry tools/ci/create_env.sh |
| 31 | + - source tools/ci/build_archive.sh |
| 32 | + - travis_retry tools/ci/install_dependencies.sh |
120 | 33 |
|
121 | 34 | # command to install dependencies
|
122 | 35 | install:
|
123 |
| - - | |
124 |
| - if [ "$INSTALL_TYPE" == "setup" ]; then |
125 |
| - python3 setup.py install |
126 |
| - else |
127 |
| - pip install $EXTRA_PIP_FLAGS $ARCHIVE |
128 |
| - fi |
129 |
| - # Basic import check |
130 |
| - - python3 -c 'import nibabel; print(nibabel.__version__)' |
| 36 | + - tools/ci/install.sh |
131 | 37 | - if [ "$CHECK_TYPE" == "skiptests" ]; then exit 0; fi
|
132 | 38 |
|
133 |
| -before_script: |
134 |
| - # Point to nibabel data directory |
135 |
| - - export NIBABEL_DATA_DIR="$PWD/nibabel-data" |
136 |
| - # Because nibabel is already installed, will just look up the extra |
137 |
| - - python3 -m pip install $EXTRA_PIP_FLAGS "nibabel[$CHECK_TYPE]" |
138 |
| - |
139 | 39 | # command to run tests, e.g. python setup.py test
|
140 | 40 | script:
|
141 |
| - - | |
142 |
| - if [ "${CHECK_TYPE}" == "style" ]; then |
143 |
| - # Run styles only on core nibabel code. |
144 |
| - flake8 nibabel |
145 |
| - elif [ "${CHECK_TYPE}" == "doc" ]; then |
146 |
| - cd doc |
147 |
| - make html && make doctest |
148 |
| - elif [ "${CHECK_TYPE}" == "test" ]; then |
149 |
| - # Change into an innocuous directory and find tests from installation |
150 |
| - mkdir for_testing |
151 |
| - cd for_testing |
152 |
| - cp ../.coveragerc . |
153 |
| - pytest --doctest-modules --doctest-plus --cov nibabel -v --pyargs nibabel |
154 |
| - else |
155 |
| - false |
156 |
| - fi |
| 41 | + - tools/ci/check.sh |
157 | 42 |
|
158 | 43 | after_script:
|
159 | 44 | - travis_retry python3 -m pip install codecov
|
|
0 commit comments