name: Build on: push: paths-ignore: - '**.md' pull_request: branches: - master paths-ignore: - '!**.md' release: types: - released jobs: flake8_py3: runs-on: ubuntu-latest steps: - name: Setup Python uses: actions/setup-python@v1 with: python-version: 3.7 architecture: x64 - name: Checkout pygeoapi uses: actions/checkout@master - name: Install flake8 run: pip install flake8 - name: Run flake8 uses: suo/flake8-github-action@releases/v1 with: checkName: 'flake8_py3' # NOTE: this needs to be the same as the job name env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} main: needs: [flake8_py3] runs-on: ubuntu-20.04 strategy: matrix: include: - python-version: 3.7 env: PYGEOAPI_CONFIG: "$(pwd)/pygeoapi-config.yml" services: # Oracle service (label used to access the service container) oracle: # Docker Hub image (feel free to change the tag "latest" to any other available one) image: gvenzl/oracle-xe:latest # Provide passwords and other environment variables to container env: ORACLE_RANDOM_PASSWORD: true APP_USER: geo_test APP_USER_PASSWORD: geo_test # Forward Oracle port ports: - 1521:1521 # Provide healthcheck script options for startup options: >- --health-cmd healthcheck.sh --health-interval 10s --health-timeout 5s --health-retries 10 steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 name: Setup Python ${{ matrix.python-version }} with: python-version: ${{ matrix.python-version }} - name: Configure sysctl limits run: | sudo swapoff -a sudo sysctl -w vm.swappiness=1 sudo sysctl -w fs.file-max=262144 sudo sysctl -w vm.max_map_count=262144 - name: Install and run PostgreSQL/PostGIS 📦 uses: huaxk/postgis-action@v1 with: postgresql password: ${{ secrets.DatabasePassword || 'postgres' }} postgresql db: 'test' - name: Install and run Elasticsearch 📦 uses: getong/elasticsearch-action@v1.2 with: elasticsearch version: '8.3.1' host port: 9200 container port: 9200 host node port: 9300 node port: 9300 discovery type: 'single-node' - name: Install and run MongoDB uses: supercharge/mongodb-github-action@1.5.0 with: mongodb-version: 4.4 - name: Install and run SensorThingsAPI uses: cgs-earth/sensorthings-action@v0.0.2 - name: Install sqlite and gpkg dependencies uses: awalsh128/cache-apt-pkgs-action@latest with: packages: libsqlite3-mod-spatialite version: 4.3.0a-6build1 - name: Install GDAL with Python bindings uses: awalsh128/cache-apt-pkgs-action@latest with: packages: gdal-bin libgdal-dev version: 3.0.4 - name: Install requirements 📦 run: | pip3 install -r requirements.txt pip3 install -r requirements-starlette.txt pip3 install -r requirements-dev.txt pip3 install -r requirements-provider.txt pip3 install -r docs/requirements.txt python3 setup.py install pip3 install --upgrade numpy elasticsearch pip3 install --upgrade numpy "sqlalchemy<2" pip3 install --upgrade flake8 pip3 install --global-option=build_ext --global-option="-I/usr/include/gdal" GDAL==`gdal-config --version` #pip3 install --upgrade rasterio==1.1.8 - name: setup test data ⚙️ run: | python3 tests/load_es_data.py tests/data/ne_110m_populated_places_simple.geojson geonameid python3 tests/load_es_data.py tests/cite/ogcapi-features/canada-hydat-daily-mean-02HC003.geojson IDENTIFIER python3 tests/load_mongo_data.py tests/data/ne_110m_populated_places_simple.geojson gunzip < tests/data/hotosm_bdi_waterways.sql.gz | psql postgresql://postgres:${{ secrets.DatabasePassword || 'postgres' }}@localhost:5432/test psql postgresql://postgres:${{ secrets.DatabasePassword || 'postgres' }}@localhost:5432/test -f tests/data/dummy_data.sql python3 tests/load_oracle_data.py - name: run unit tests ⚙️ env: POSTGRESQL_PASSWORD: ${{ secrets.DatabasePassword || 'postgres' }} run: | pytest tests/test_api.py pytest tests/test_api_ogr_provider.py pytest tests/test_config.py pytest tests/test_csv__formatter.py pytest tests/test_csv__provider.py pytest tests/test_elasticsearch__provider.py pytest tests/test_esri_provider.py pytest tests/test_filesystem_provider.py pytest tests/test_geojson_provider.py pytest tests/test_mongo_provider.py pytest tests/test_ogr_csv_provider.py pytest tests/test_ogr_esrijson_provider.py pytest tests/test_ogr_gpkg_provider.py pytest tests/test_ogr_shapefile_provider.py pytest tests/test_ogr_sqlite_provider.py pytest tests/test_ogr_wfs_provider.py pytest tests/test_openapi.py pytest tests/test_oracle_provider.py pytest tests/test_postgresql_provider.py pytest tests/test_rasterio_provider.py pytest tests/test_sensorthings_provider.py pytest tests/test_socrata_provider.py pytest tests/test_sqlite_geopackage_provider.py pytest tests/test_tinydb_catalogue_provider.py pytest tests/test_tinydb_manager_for_parallel_requests.py pytest tests/test_util.py pytest tests/test_xarray_netcdf_provider.py pytest tests/test_xarray_zarr_provider.py - name: build docs 🏗️ run: cd docs && make html - name: failed tests 🚩 if: ${{ failure() }} run: | pip3 list -v