diff -Nru eoxserver-1.0rc16/.bumpversion.cfg eoxserver-1.0rc17/.bumpversion.cfg --- eoxserver-1.0rc16/.bumpversion.cfg 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/.bumpversion.cfg 2020-12-16 16:52:25.000000000 +0000 @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.0.0-rc16 +current_version = 1.0.0-rc17 commit = True tag = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+)(?P\d+))? diff -Nru eoxserver-1.0rc16/debian/changelog eoxserver-1.0rc17/debian/changelog --- eoxserver-1.0rc16/debian/changelog 2020-12-12 11:00:00.000000000 +0000 +++ eoxserver-1.0rc17/debian/changelog 2020-12-17 10:10:50.000000000 +0000 @@ -1,3 +1,9 @@ +eoxserver (1.0rc17-0~focal0) focal; urgency=low + + * New upstream version. + + -- Angelos Tzotsos Thu, 17 Dec 2020 13:00:00 +0200 + eoxserver (1.0rc16-0~focal0) focal; urgency=low * New upstream version. diff -Nru eoxserver-1.0rc16/eoxserver/backends/management/commands/storageauth.py eoxserver-1.0rc17/eoxserver/backends/management/commands/storageauth.py --- eoxserver-1.0rc16/eoxserver/backends/management/commands/storageauth.py 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/eoxserver/backends/management/commands/storageauth.py 2020-12-16 16:52:25.000000000 +0000 @@ -13,8 +13,8 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in all -# copies of this Software or works derived from this Software. +# The above copyright notice and this permission notice shall be included in +# all copies of this Software or works derived from this Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, @@ -31,9 +31,7 @@ from django.db import transaction from eoxserver.backends import models as backends -from eoxserver.backends.storage_auths import ( get_handler_for_model, - get_handler_by_test, get_handler_class_by_name -) +from eoxserver.backends.storage_auths import get_handler_for_model from eoxserver.resources.coverages.management.commands import ( CommandOutputMixIn, SubParserMixIn ) @@ -60,7 +58,10 @@ ) create_parser.add_argument( '--type', '-t', dest='type_name', default=None, - help='The storage auth type. Optional. Default is auto-detect the type.' + help=( + 'The storage auth type. Optional. Default is auto-detect the ' + 'type.' + ) ) create_parser.add_argument( '--parameter', '-p', dest='parameters', default=None, nargs='+', @@ -112,7 +113,7 @@ storage_auth.save() if check: - handler = get_handler_for_model(storage_auth) + _ = get_handler_for_model(storage_auth) # TODO perform check self.print_msg( diff -Nru eoxserver-1.0rc16/eoxserver/backends/management/commands/storage.py eoxserver-1.0rc17/eoxserver/backends/management/commands/storage.py --- eoxserver-1.0rc16/eoxserver/backends/management/commands/storage.py 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/eoxserver/backends/management/commands/storage.py 2020-12-16 16:52:25.000000000 +0000 @@ -13,8 +13,8 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in all -# copies of this Software or works derived from this Software. +# The above copyright notice and this permission notice shall be included in +# all copies of this Software or works derived from this Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, @@ -102,9 +102,8 @@ elif subcommand == "env": self.handle_env(name, *args, **kwargs) - - def handle_create(self, name, url, type_name, parent_name, storage_auth_name, - **kwargs): + def handle_create(self, name, url, type_name, parent_name, + storage_auth_name, **kwargs): """ Handle the creation of a new storage. """ url = url[0] @@ -129,10 +128,14 @@ try: parent = backends.Storage.objects.get(name=parent_name) except backends.Storage.DoesNotExist: - raise CommandError('No such storage with name %r' % parent_name) + raise CommandError( + 'No such storage with name %r' % parent_name + ) if storage_auth_name: - storage_auth = backends.StorageAuth.objects.get(name=storage_auth_name) + storage_auth = backends.StorageAuth.objects.get( + name=storage_auth_name + ) else: storage_auth = None @@ -163,7 +166,9 @@ ) def handle_list(self, name, paths=None, pattern=None, **kwargs): - storage, path = resolve_storage_and_path([name] + paths or [], save=False) + storage, path = resolve_storage_and_path( + [name] + paths or [], save=False + ) files = vsi_list_storage(storage, path, pattern) for filename in files: print(filename) diff -Nru eoxserver-1.0rc16/eoxserver/contrib/mapserver.py eoxserver-1.0rc17/eoxserver/contrib/mapserver.py --- eoxserver-1.0rc16/eoxserver/contrib/mapserver.py 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/eoxserver/contrib/mapserver.py 2020-12-16 16:52:25.000000000 +0000 @@ -1,9 +1,9 @@ -#------------------------------------------------------------------------------- +# ------------------------------------------------------------------------------ # # Project: EOxServer # Authors: Fabian Schindler # -#------------------------------------------------------------------------------- +# ------------------------------------------------------------------------------ # Copyright (C) 2013 EOX IT Services GmbH # # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -13,8 +13,8 @@ # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # -# The above copyright notice and this permission notice shall be included in all -# copies of this Software or works derived from this Software. +# The above copyright notice and this permission notice shall be included in +# all copies of this Software or works derived from this Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, @@ -23,12 +23,15 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -#------------------------------------------------------------------------------- +# ------------------------------------------------------------------------------ import contextlib import time import logging -from cgi import escape +try: + from cgi import escape +except ImportError: + from html import escape import tempfile import os @@ -281,7 +284,8 @@ for key, value in env.items(): if fail_on_override or return_old: old_value = map_obj.getConfigOption(str(key)) - if fail_on_override and old_value is not None and old_value != value: + if fail_on_override and old_value is not None \ + and old_value != value: raise Exception( 'Would override previous value of %s: %s with %s' % (key, old_value, value) @@ -299,4 +303,3 @@ yield if reset_old: set_env(old_env, False, False) - diff -Nru eoxserver-1.0rc16/eoxserver/contrib/vsi.py eoxserver-1.0rc17/eoxserver/contrib/vsi.py --- eoxserver-1.0rc16/eoxserver/contrib/vsi.py 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/eoxserver/contrib/vsi.py 2020-12-16 16:52:25.000000000 +0000 @@ -31,7 +31,6 @@ import os -import sys from uuid import uuid4 from functools import wraps diff -Nru eoxserver-1.0rc16/eoxserver/__init__.py eoxserver-1.0rc17/eoxserver/__init__.py --- eoxserver-1.0rc16/eoxserver/__init__.py 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/eoxserver/__init__.py 2020-12-16 16:52:25.000000000 +0000 @@ -28,7 +28,7 @@ # ------------------------------------------------------------------------------ -__version__ = '1.0.0-rc16' +__version__ = '1.0.0-rc17' def get_version(): diff -Nru eoxserver-1.0rc16/eoxserver/processing/gdal/reftools.py eoxserver-1.0rc17/eoxserver/processing/gdal/reftools.py --- eoxserver-1.0rc16/eoxserver/processing/gdal/reftools.py 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/eoxserver/processing/gdal/reftools.py 2020-12-16 16:52:25.000000000 +0000 @@ -599,7 +599,7 @@ return Rect(minx, miny, size_x, size_y) -def create_rectified_vrt(path_or_ds, vrt_path, srid=None, +def create_rectified_vrt(path_or_ds, vrt_path, srid_or_wkt=None, resample=0, memory_limit=0.0, max_error=APPROX_ERR_TOL, method=METHOD_GCP, order=0, size=None, resolution=None): @@ -627,11 +627,13 @@ ds = _open_ds(path_or_ds) ptr = C.c_void_p(int(ds.this)) - if srid: + if isinstance(srid_or_wkt, int): srs = osr.SpatialReference() - srs.ImportFromEPSG(srid) + srs.ImportFromEPSG(srid_or_wkt) wkt = srs.ExportToWkt() srs = None + elif isinstance(srid_or_wkt, str): + wkt = srid_or_wkt else: wkt = ds.GetGCPProjection() @@ -707,7 +709,7 @@ # GDALSetProjection(vrt_ds, wkt) if isinstance(vrt_path, str): vrt_path = b(vrt_path) - + GDALSetDescription(vrt_ds, vrt_path) GDALClose(vrt_ds) # GDALDestroyWarpOptions(options) diff -Nru eoxserver-1.0rc16/eoxserver/render/browse/generate.py eoxserver-1.0rc17/eoxserver/render/browse/generate.py --- eoxserver-1.0rc16/eoxserver/render/browse/generate.py 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/eoxserver/render/browse/generate.py 2020-12-16 16:52:25.000000000 +0000 @@ -107,7 +107,7 @@ _ast.Div, _ast.Add, _ast.Sub, - _ast.Num, + _ast.Num if hasattr(_ast, 'Num') else _ast.Constant, _ast.BitAnd, _ast.BitOr, @@ -435,5 +435,8 @@ logger.info("%s, %s, %s" % (expr.func.id, np.min(res), np.max(res))) return res - elif isinstance(expr, _ast.Num): + elif hasattr(_ast, 'Num') and isinstance(expr, _ast.Num): return expr.n + + elif hasattr(_ast, 'Constant') and isinstance(expr, _ast.Constant): + return expr.value diff -Nru eoxserver-1.0rc16/eoxserver/render/mapserver/factories.py eoxserver-1.0rc17/eoxserver/render/mapserver/factories.py --- eoxserver-1.0rc16/eoxserver/render/mapserver/factories.py 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/eoxserver/render/mapserver/factories.py 2020-12-16 16:52:25.000000000 +0000 @@ -59,6 +59,9 @@ ) from eoxserver.processing.gdal import reftools +import logging +logger = logging.getLogger(__name__) + class BaseMapServerLayerFactory(object): handled_layer_types = [] @@ -139,13 +142,13 @@ resx = (e.maxx - e.minx) / map_obj.width resy = (e.maxy - e.miny) / map_obj.height - srid = osr.SpatialReference(map_obj.getProjection()).srid + wkt = osr.SpatialReference(map_obj.getProjection()).wkt # TODO: env? reftools.create_rectified_vrt( field_locations[0][1].path, vrt_path, order=1, max_error=10, - resolution=(resx, -resy), srid=srid + resolution=(resx, -resy), srid_or_wkt=wkt ) data = vrt_path @@ -846,7 +849,6 @@ style.color = ms.colorObj(*colors[-1][1]) cls.insertStyle(style) layer.insertClass(cls) - layer.classgroup = name def _get_range(field, range_=None): diff -Nru eoxserver-1.0rc16/.github/workflows/ci.yml eoxserver-1.0rc17/.github/workflows/ci.yml --- eoxserver-1.0rc16/.github/workflows/ci.yml 1970-01-01 00:00:00.000000000 +0000 +++ eoxserver-1.0rc17/.github/workflows/ci.yml 2020-12-16 16:52:25.000000000 +0000 @@ -0,0 +1,174 @@ +name: CI +on: push +jobs: + run: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu + python: py2 + db: postgis + django: "1.11.26" + python_bin: python + pip_bin: pip + # TODO: deactivated as django 1.11 does not seem to work with the GEOS version supplied by Ubuntu 20.04 + # - os: ubuntu + # python: py3 + # db: postgis + # django: "1.11.26" + # python_bin: python3 + # pip_bin: pip3 + - os: ubuntu + python: py3 + db: postgis + django: "2.2.17" + python_bin: python3 + pip_bin: pip3 + - os: ubuntu + python: py3 + db: spatialite + django: "2.2.17" + python_bin: python3 + pip_bin: pip3 + latest: true + steps: + - uses: actions/checkout@v2 + - name: Build the eoxserver docker image + run: | + docker build -t eoxserver --build-arg DJANGO=${{ matrix.django }} -f docker/${{ matrix.os }}/${{ matrix.python }}/Dockerfile . + - name: Run the tests + env: + COMPOSE_INTERACTIVE_NO_CLI: 1 + run: | + cd autotest + echo "DB=${{ matrix.db }}" >> eoxserver.env + docker-compose config + docker-compose up -d + docker-compose ps + docker exec -i autotest_autotest_1 ${{ matrix.pip_bin }} install scipy + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} -m eoxserver.services.ows.wps.test_data_types + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} -m eoxserver.services.ows.wps.test_allowed_values + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test --pythonpath=../eoxserver/ eoxserver.core -v2 + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test --pythonpath=../eoxserver/ eoxserver.backends -v2 + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test --pythonpath=../eoxserver/ eoxserver.services -v2 + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test --pythonpath=../eoxserver/ eoxserver.resources.coverages -v2 + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test autotest_services --tag wcs20 -v2 + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test autotest_services --tag wcs11 -v2 + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test autotest_services --tag wcs10 -v2 + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test autotest_services --tag wms -v2 + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test autotest_services --tag wps -v2 + docker exec -i autotest_autotest_1 ${{ matrix.python_bin }} manage.py test autotest_services --tag opensearch -v2 + cd .. + - name: Upload logs and outputs of failed tests + uses: 'actions/upload-artifact@v2' + with: + name: logs ${{ matrix.python }} ${{ matrix.db }} ${{ matrix.django }} + path: | + autotest/autotest/logs/*.log + autotest/autotest/responses/* + retention-days: 5 + if: failure() + + # get branch/tag name for later stages + - name: Branch name + id: branch_name + run: | + echo ::set-output name=SOURCE_BRANCH:: $([[ $GITHUB_REF == refs/heads/* ]] && echo ${GITHUB_REF#refs/heads/} || echo "") + echo ::set-output name=SOURCE_TAG::$([[ $GITHUB_REF == refs/tags/* ]] && echo ${GITHUB_REF#refs/tags/} || echo "") + + # docker image tagging/publishing + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + if: success() + + # conditionally tag docker images and push them to dockerhub + - name: Tag docker latest master image + run: | + docker tag eoxserver eoxa/eoxserver:master + if: success() && steps.branch_name.outputs.SOURCE_BRANCH == 'master' && matrix.latest + - name: Tag docker latest image + run: | + docker tag eoxserver eoxa/eoxserver:latest + if: success() && matrix.latest + - name: Tag docker latest release image + run: | + docker tag eoxserver eoxa/eoxserver:${{ steps.branch_name.outputs.SOURCE_TAG }} + if: success() && steps.branch_name.outputs.SOURCE_TAG && matrix.latest + - name: Tag docker release image with OS and Python/Django versions + run: | + docker tag eoxserver eoxa/eoxserver:${{ steps.branch_name.outputs.SOURCE_TAG }}-${{ matrix.os }}-${{ matrix.python }}-django${{ matrix.django }} + if: success() && startsWith(steps.branch_name.outputs.SOURCE_TAG, 'release-') + - name: Push docker images + run: | + # TODO: --all-tags does not seem to work with the version on github-actions + # docker push --all-tags eoxa/eoxserver + # only push when there is something to push + [ ! -z "$(docker image ls eoxa/eoxserver -q)" ] && docker push eoxa/eoxserver || true + if: success() + + # build a Python package and publish it on pypi + - name: Build Python package + id: build_python_release + run: | + python -m pip install --upgrade pip + pip install setuptools wheel + python setup.py sdist bdist_wheel + echo ::set-output name=WHEEL_FILE::$(ls dist/*.whl) + echo ::set-output name=SRC_DIST_FILE::$(ls dist/*.tar.gz) + - name: Push package to pypi + uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} + if: success() && matrix.latest && startsWith(steps.branch_name.outputs.SOURCE_TAG, 'release-') + + # draft a github release and add files + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ steps.branch_name.outputs.SOURCE_TAG }} + draft: true + if: success() && matrix.latest && startsWith(steps.branch_name.outputs.SOURCE_TAG, 'release-') + - name: Upload Release Asset Wheel + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ${{ steps.build_python_release.outputs.WHEEL_FILE }} + asset_name: ${{ steps.build_python_release.outputs.WHEEL_FILE }} + asset_content_type: application/x-wheel+zip + if: success() && matrix.latest && startsWith(steps.branch_name.outputs.SOURCE_TAG, 'release-') + - name: Upload Release Asset Source Dist + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: ${{ steps.build_python_release.outputs.SRC_DIST_FILE }} + asset_name: ${{ steps.build_python_release.outputs.SRC_DIST_FILE }} + asset_content_type: application/tar+gzip + if: success() && matrix.latest && startsWith(steps.branch_name.outputs.SOURCE_TAG, 'release-') + + note: + runs-on: ubuntu-20.04 + needs: run + steps: + # send Slack notifications to the eox organization + - name: action-slack + uses: 8398a7/action-slack@v3.8.0 + with: + status: ${{ needs.run.result }} + fields: repo,message,commit,author,action,eventName,ref,workflow,job,took + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: always() diff -Nru eoxserver-1.0rc16/.travis.yml eoxserver-1.0rc17/.travis.yml --- eoxserver-1.0rc16/.travis.yml 2020-12-03 08:22:01.000000000 +0000 +++ eoxserver-1.0rc17/.travis.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -language: python - -env: -# - OS=centos PY=py2 DB=postgis DJANGO="1.11.26" PYTHON=python -# - OS=centos PY=py2 DB=spatialite DJANGO="1.11.26 PYTHON=python" -- OS=ubuntu PY=py2 DB=postgis DJANGO="1.11.26" PYTHON=python PIP=pip -# - OS=ubuntu PY=py2 DB=spatialite DJANGO="1.11.26" PYTHON=python PIP=pip -- OS=ubuntu PY=py3 DB=postgis DJANGO="1.11.26" PYTHON=python3 PIP=pip3 -# - OS=ubuntu PY=py3 DB=spatialite DJANGO="1.11.26" PYTHON=python3 PIP=pip3 -- OS=ubuntu PY=py3 DB=postgis DJANGO="2.2.9" PYTHON=python3 PIP=pip3 -- OS=ubuntu PY=py3 DB=spatialite DJANGO="2.2.9" PYTHON=python3 PIP=pip3 LATEST=TRUE - -services: -- docker - -before_install: -- sudo apt-get update -- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-ce -- docker-compose --version -- sudo rm /usr/local/bin/docker-compose -- curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > docker-compose -- chmod +x docker-compose -- sudo mv docker-compose /usr/local/bin -- docker build -t eoxserver --build-arg DJANGO=$DJANGO -f docker/$OS/$PY/Dockerfile . -- if [[ "$LATEST" == "TRUE" ]] ; then docker tag eoxserver eoxa/eoxserver:latest; fi -- if [[ "$LATEST" == "TRUE" && ! -z "$TRAVIS_TAG" ]] ; then docker tag eoxserver eoxa/eoxserver:$TRAVIS_TAG; fi -- if [[ "$LATEST" == "TRUE" && "$TRAVIS_BRANCH" == "master" ]] ; then docker tag eoxserver eoxa/eoxserver:master; fi -- if [[ ! -z "$TRAVIS_TAG" ]] ; then docker tag eoxserver eoxa/eoxserver:$TRAVIS_TAG-$OS-$PY-django$DJANGO; fi - -script: -- cd autotest -- echo "DB=${DB}" >> eoxserver.env -- docker-compose config -- docker-compose up -d -- docker-compose ps -- docker-compose exec autotest $PIP install scipy -- docker-compose exec autotest $PYTHON -m eoxserver.services.ows.wps.test_data_types -- docker-compose exec autotest $PYTHON -m eoxserver.services.ows.wps.test_allowed_values -- docker-compose exec autotest $PYTHON manage.py test --pythonpath=../eoxserver/ eoxserver.core -v2 -- docker-compose exec autotest $PYTHON manage.py test --pythonpath=../eoxserver/ eoxserver.backends -v2 -- docker-compose exec autotest $PYTHON manage.py test --pythonpath=../eoxserver/ eoxserver.services -v2 -- docker-compose exec autotest $PYTHON manage.py test --pythonpath=../eoxserver/ eoxserver.resources.coverages -v2 -- docker-compose exec autotest $PYTHON manage.py test autotest_services --tag wcs20 -v2 -- docker-compose exec autotest $PYTHON manage.py test autotest_services --tag wcs11 -v2 -- docker-compose exec autotest $PYTHON manage.py test autotest_services --tag wcs10 -v2 -- docker-compose exec autotest $PYTHON manage.py test autotest_services --tag wms -v2 -- docker-compose exec autotest $PYTHON manage.py test autotest_services --tag wps -v2 -- docker-compose exec autotest $PYTHON manage.py test autotest_services --tag opensearch -v2 -- cd .. - -after_failure: -- diff autotest/autotest/expected autotest/autotest/responses - -notifications: - slack: - secure: GPclHjLrLU2BsOS0OOHHm5vQp/GWk2sjCrHpqOVutakGbYMMRao45MHqajim+SypZcva8npIKGAHKTwny3vkvbHUJ7vpjtvRFEISLpvKKQxnq7FXJSc6hkvj+JTAaB+UpOZYyQXtchcLMizD2mST862r8gEKMo7UkbS1VOSjEm0= - -before_deploy: -- python setup.py sdist bdist_wheel - -deploy: -- provider: releases - api_key: - secure: RvD9qeo90sOI+/hQs0V1wMvxfJBBXz4rUXvjcxP65m90koXN+ALV2YRLmlZElca72BsIFfzNcw6nvOr6TGNEMEgWxoJ+e62N4vCz5leQ0guPV76gS4mrxWWRwmXLmEdfp/EPrs84JSU9gAsSSHYrvJJjzfg6VZMQOLNa+vE8dPk= - file_glob: true - file: ./dist/* - skip_cleanup: true - draft: true - on: - repo: EOxServer/eoxserver - tags: true - -- provider: pypi - user: __token__ - password: $PYPI_TOKEN - on: - repo: EOxServer/eoxserver - tags: true - skip_existing: true - distributions: "sdist bdist_wheel" - -- provider: script - script: echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin && docker push eoxa/eoxserver - on: - tags: true - -- provider: script - script: echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin && docker push eoxa/eoxserver:master - on: - branch: master - condition: $LATEST = "TRUE"