From 46bdaa4a69f9bb50afbcd43efd57b7f7b4f87b50 Mon Sep 17 00:00:00 2001 From: Mike Taves Date: Tue, 9 Feb 2021 15:09:34 +1300 Subject: [PATCH] CI: move Travis linux builds to Github Actions --- .github/workflows/tests.yml | 193 ++++++++++++++++++++++++++++++++++++ .travis.yml | 139 -------------------------- README.rst | 6 +- tests/__init__.py | 2 +- 4 files changed, 197 insertions(+), 143 deletions(-) create mode 100644 .github/workflows/tests.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 000000000..fb6f58739 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,193 @@ +name: Tests (Linux) + +on: [push, pull_request] + +jobs: + test: + name: Python ${{ matrix.python }} (GEOS ${{ matrix.geos }}, speedups ${{ matrix.speedups }}, numpy ${{ matrix.numpy || 'not installed' }}) + # runs-on: ubuntu-latest + runs-on: ubuntu-16.04 + strategy: + fail-fast: false + matrix: + include: + # 2013-ish + - python: 2.7 + geos: 3.4.3 + numpy: 1.8.2 + speedups: 1 + - python: 2.7 + geos: 3.4.3 + numpy: 1.8.2 + speedups: 0 + - python: 2.7 + geos: 3.4.3 + speedups: 0 + # 2015 + - python: 3.5 + geos: 3.5.2 + numpy: 1.10.4 + speedups: 1 + - python: 3.5 + geos: 3.5.2 + numpy: 1.10.4 + speedups: 0 + - python: 3.5 + geos: 3.5.2 + speedups: 0 + # 2017 + - python: 3.6 + geos: 3.6.4 + numpy: 1.13.3 + speeedups: 1 + - python: 3.6 + geos: 3.6.4 + numpy: 1.13.3 + speeedups: 0 + - python: 3.6 + geos: 3.6.4 + speeedups: 0 + # 2018 + - python: 3.7 + geos: 3.7.3 + numpy: 1.15.4 + speedups: 1 + - python: 3.7 + geos: 3.7.3 + numpy: 1.15.4 + speedups: 0 + - python: 3.7 + geos: 3.7.3 + speedups: 0 + # 2019 + - python: 3.8 + geos: 3.8.1 + numpy: 1.17.5 + speedups: 1 + - python: 3.8 + geos: 3.8.1 + numpy: 1.17.5 + speedups: 0 + - python: 3.8 + geos: 3.8.1 + speedups: 0 + # 2020 + - python: 3.9 + geos: 3.9.0 + numpy: 1.19.5 + speedups: 1 + - python: 3.9 + geos: 3.9.0 + numpy: 1.19.5 + speedups: 0 + - python: 3.9 + geos: 3.9.0 + speedups: 0 + # dev + - python: 3.9 + geos: master + speedups: 1 + + env: + GEOS_VERSION: ${{ matrix.geos }} + GEOS_INSTALL: ${{ github.workspace }}/geosinstall/geos-${{ matrix.geos }} + SPEEDUPS: ${{ matrix.speedups }} + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python ${{ matrix.python }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python }} + + - name: Cache GEOS and pip packages + uses: actions/cache@v2 + with: + key: ${{ runner.os }}-geos-${{ matrix.geos }} + path: | + ~/.cache/pip + ${{ github.workspace }}/geosinstall + + - name: Install GEOS + shell: bash + run: | + ./ci/install_geos.sh + cd ${{ github.workspace }} + + - name: Install python dependencies + shell: bash + run: | + use_pip_lt_21=`python3 -c "import sys; print(sys.version_info[:2] < (3, 6))"` + if [ $use_pip_lt_21 = "True" ]; then + pip="pip < 21.0" + else + pip="pip" + fi + pip install --disable-pip-version-check --upgrade "$pip" + pip install --upgrade wheel + if [ "$GEOS_VERSION" = "master" ]; then + pip install --upgrade --pre Cython numpy; + elif [ "$SPEEDUPS" == "1" ]; then + pip install --install-option="--no-cython-compile" cython; + pip install --upgrade numpy==${{ matrix.numpy }}; + elif [ -n "${{ matrix.numpy }}" ]; then + pip install --upgrade numpy==${{ matrix.numpy }}; + else + pip uninstall --yes numpy; + fi + pip install --upgrade coveralls pytest-cov pytest + pip list + + - name: Set environment variables + shell: bash + run: | + echo "LD_LIBRARY_PATH=$GEOS_INSTALL/lib" >> $GITHUB_ENV + echo $GEOS_INSTALL/bin >> $GITHUB_PATH + + - name: Build and install Shapely + shell: bash + run: | + pip install -v -e . + + - name: Overview of the Python environment (pip list) + shell: bash + run: | + pip list + + - name: Run tests + shell: bash + continue-on-error: ${{ matrix.geos == 'master' }} + run: | + if [ "$SPEEDUPS" == "1" ]; then SPEEDUPS_FLAG=--with-speedups; else SPEEDUPS_FLAG=--without-speedups; fi + python -c "from shapely import geos; print(geos.geos_version_string)" + python -c "from shapely import speedups; print(speedups.enabled)" + python -m pytest --cov shapely --cov-report term-missing "${SPEEDUPS_FLAG}" + + - name: Run doctests + if: ${{ matrix.python == '3.8' && matrix.numpy && matrix.speedups == '1' }} + shell: bash + run: | + python -m pytest shapely --doctest-modules + + - name: Upload coverage + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COVERALLS_SERVICE_NAME: github-actions + COVERALLS_PARALLEL: true + shell: bash + run: | + coveralls || echo "!! intermittent coveralls failure" + + coveralls: + name: Indicate completion to coveralls.io + needs: test + runs-on: ubuntu-latest + container: python:3-slim + steps: + - name: Finished + run: | + pip3 install --upgrade coveralls + coveralls --finish || echo "!! intermittent coveralls failure" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 666ff838d..000000000 --- a/.travis.yml +++ /dev/null @@ -1,139 +0,0 @@ -language: python -dist: xenial - -cache: - directories: - - $HOME/geosinstall - - ~/.cache/pip - -matrix: - include: - - python: "2.7" - env: - GEOS_VERSION="3.4.3" - SPEEDUPS=1 - NUMPY=1 - - python: "2.7" - env: - GEOS_VERSION="3.4.3" - SPEEDUPS=0 - NUMPY=1 - - python: "2.7" - env: - GEOS_VERSION="3.4.3" - SPEEDUPS=0 - NUMPY=0 - - python: "3.5" - env: - GEOS_VERSION="3.5.2" - SPEEDUPS=1 - NUMPY=1 - - python: "3.5" - env: - GEOS_VERSION="3.5.2" - SPEEDUPS=0 - NUMPY=1 - - python: "3.5" - env: - GEOS_VERSION="3.5.2" - SPEEDUPS=0 - NUMPY=0 - - python: "3.6" - env: - GEOS_VERSION="3.6.4" - SPEEDUPS=1 - NUMPY=1 - - python: "3.6" - env: - GEOS_VERSION="3.6.4" - SPEEDUPS=0 - NUMPY=1 - - python: "3.6" - env: - GEOS_VERSION="3.6.4" - SPEEDUPS=0 - NUMPY=0 - - python: "3.7" - env: - GEOS_VERSION="3.7.3" - SPEEDUPS=1 - NUMPY=1 - - python: "3.7" - env: - GEOS_VERSION="3.7.3" - SPEEDUPS=0 - NUMPY=1 - - python: "3.7" - env: - GEOS_VERSION="3.7.3" - SPEEDUPS=0 - NUMPY=0 - - python: "3.8" - env: - GEOS_VERSION="3.8.1" - SPEEDUPS=1 - NUMPY=1 - - python: "3.8" - env: - GEOS_VERSION="3.8.1" - SPEEDUPS=0 - NUMPY=1 - - python: "3.8" - env: - GEOS_VERSION="3.8.1" - SPEEDUPS=0 - NUMPY=0 - - python: "3.9" - env: - GEOS_VERSION="3.8.1" - SPEEDUPS=1 - NUMPY=1 - - python: "3.9" - env: - GEOS_VERSION="3.8.1" - SPEEDUPS=0 - NUMPY=1 - - python: "3.9" - env: - GEOS_VERSION="3.8.1" - SPEEDUPS=0 - NUMPY=0 - - python: "3.9-dev" - env: - GEOS_VERSION="master" - SPEEDUPS=1 - NUMPY=1 - allow_failures: - - python: "3.9-dev" - env: - GEOS_VERSION="master" - SPEEDUPS=1 - NUMPY=1 - -before_install: - - ./ci/travis/install_geos.sh - - pip install --disable-pip-version-check --upgrade pip - - pip install --upgrade wheel - # if building with speedups install cython - - if [ "$SPEEDUPS" == "1" ]; then pip install --install-option="--no-cython-compile" cython; fi - # if testing without numpy explicitly remove it - - if [ "$NUMPY" == "0" ]; then pip uninstall --yes numpy; fi - # convert SPEEDUPS to --with-speedups/--without-speedups - - if [ "$SPEEDUPS" == "1" ]; then SPEEDUPS_FLAG=--with-speedups; else SPEEDUPS_FLAG=--without-speedups; fi - - pip install --upgrade coveralls pytest-cov pytest>=3.8 - -install: - - export GEOS_CONFIG=$HOME/geosinstall/geos-$GEOS_VERSION/bin/geos-config - - pip install -v -e .[all] - -script: - - export LD_LIBRARY_PATH=$HOME/geosinstall/geos-$GEOS_VERSION/lib - - export DYLD_LIBRARY_PATH=$HOME/geosinstall/geos-$GEOS_VERSION/lib - - python -c "from shapely.geos import geos_version; print(geos_version)" - - python -m pytest --cov shapely --cov-report term-missing "${SPEEDUPS_FLAG}" - -after_success: - - coveralls || echo "!! intermittent coveralls failure" - -notifications: - email: false diff --git a/README.rst b/README.rst index cf5355d64..2d4168ebc 100644 --- a/README.rst +++ b/README.rst @@ -2,10 +2,10 @@ Shapely ======= -|travis| |appveyor| |coveralls| +|github-actions| |appveyor| |coveralls| -.. |travis| image:: https://travis-ci.org/Toblerity/Shapely.svg?branch=maint-1.7 - :target: https://travis-ci.org/Toblerity/Shapely +.. |github-actions| image:: https://github.com/Toblerity/Shapely/workflows/Tests%20(Linux)/badge.svg?branch=maint-1.7 + :target: https://github.com/Toblerity/Shapely/actions .. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/Toblerity/Shapely?branch=maint-1.7&svg=true :target: https://ci.appveyor.com/project/frsci/shapely?branch=maint-1.7 diff --git a/tests/__init__.py b/tests/__init__.py index f6e2433e2..f03206a28 100755 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -15,7 +15,7 @@ numpy = False numpy_version = 'not available' -# Show some diagnostic information; handy for Travis CI +# Show some diagnostic information; handy for CI print('Python version: ' + sys.version.replace('\n', ' ')) print('GEOS version: ' + geos_version_string) print('Numpy version: ' + numpy_version)