X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/7bc0fc96119b6b3345e5d26533361504d44eae27..cb70a2fde33e9c2455ea1cfb37ee430b00058b82:/.github/workflows/ci-tests.yml diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index c0db57b2..3d473751 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -6,76 +6,179 @@ jobs: tests: runs-on: ubuntu-20.04 + strategy: + matrix: + postgresql: [9.5, 13] + include: + - postgresql: 9.5 + postgis: 2.5 + - postgresql: 13 + postgis: 3 + steps: - uses: actions/checkout@v2 with: submodules: true + path: Nominatim - - uses: ./.github/actions/build-nominatim + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + tools: phpunit, phpcs, composer - - name: Install test prerequsites + - name: Get Date + id: get-date run: | - sudo apt-get install -y -qq php-codesniffer python3-tidylib - sudo pip3 install behave nose + echo "::set-output name=date::$(/bin/date -u "+%Y%W")" + shell: bash + + - uses: actions/cache@v2 + with: + path: | + country_grid.sql.gz + key: nominatim-country-data-${{ steps.get-date.outputs.date }} + + - uses: ./Nominatim/.github/actions/setup-postgresql + with: + postgresql-version: ${{ matrix.postgresql }} + postgis-version: ${{ matrix.postgis }} + - uses: ./Nominatim/.github/actions/build-nominatim + + - name: Install test prerequsites + run: sudo apt-get install -y -qq php-codesniffer pylint python3-pytest python3-behave python3-pytest-cov php-codecoverage php-xdebug - name: PHP linting run: phpcs --report-width=120 . + working-directory: Nominatim - - name: Setup database - run: | - sudo systemctl start postgresql - sudo -u postgres createuser -S www-data - sudo -u postgres createuser -s runner - shell: bash + - name: Python linting + run: pylint --extension-pkg-whitelist=osmium nominatim + working-directory: Nominatim - name: PHP unit tests - run: phpunit ./ - working-directory: test/php + run: phpunit --coverage-clover ../../coverage-php.xml ./ + working-directory: Nominatim/test/php + + - name: Python unit tests + run: py.test-3 --cov=nominatim --cov-report=xml test/python + working-directory: Nominatim - name: BDD tests - run: behave -DREMOVE_TEMPLATE=1 --format=progress3 db osm2pgsql - working-directory: test/bdd + run: | + behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3 -DPHPCOV=./cov + composer require phpunit/phpcov:7.0.2 + vendor/bin/phpcov merge --clover ../../coverage-bdd.xml ./cov + working-directory: Nominatim/test/bdd + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v1 + with: + files: ./Nominatim/coverage*.xml + directory: ./ + name: codecov-umbrella + fail_ci_if_error: true + path_to_write_report: ./coverage/codecov_report.txt + verbose: true import: - runs-on: ubuntu-20.04 + strategy: + matrix: + ubuntu: [18, 20] + include: + - ubuntu: 18 + postgresql: 9.5 + postgis: 2.5 + - ubuntu: 20 + postgresql: 13 + postgis: 3 + + runs-on: ubuntu-${{ matrix.ubuntu }}.04 steps: - uses: actions/checkout@v2 with: submodules: true + path: Nominatim + + - name: Get Date + id: get-date + run: | + echo "::set-output name=date::$(/bin/date -u "+%Y%W")" + shell: bash - - uses: ./.github/actions/build-nominatim + - uses: actions/cache@v2 + with: + path: | + country_grid.sql.gz + key: nominatim-country-data-${{ steps.get-date.outputs.date }} + + - uses: actions/cache@v2 + with: + path: | + monaco-latest.osm.pbf + key: nominatim-test-data-${{ steps.get-date.outputs.date }} - - name: Download test extract - run: wget --no-verbose https://download.geofabrik.de/europe/monaco-latest.osm.pbf + - uses: actions/setup-python@v2 + with: + python-version: 3.5 + if: matrix.ubuntu == 18 - - name: Setup database + - uses: ./Nominatim/.github/actions/setup-postgresql + with: + postgresql-version: ${{ matrix.postgresql }} + postgis-version: ${{ matrix.postgis }} + - uses: ./Nominatim/.github/actions/build-nominatim + + - name: Install extra dependencies for Ubuntu 18 run: | - sudo systemctl start postgresql - sudo -u postgres createuser -S www-data - sudo -u postgres createuser -s runner + sudo apt-get install libicu-dev + pip3 install python-dotenv psycopg2==2.7.7 jinja2==2.8 psutil==5.4.2 pyicu osmium + shell: bash + if: matrix.ubuntu == 18 + + - name: Clean installation + run: rm -rf Nominatim build shell: bash - - name: Create configuartion + - name: Prepare import environment run: | - echo ' settings/local.php - echo " @define('CONST_Pyosmium_Binary', '/usr/lib/python3-pyosmium/pyosmium-get-changes');" >> settings/local.php - working-directory: build + if [ ! -f monaco-latest.osm.pbf ]; then + wget --no-verbose https://download.geofabrik.de/europe/monaco-latest.osm.pbf + fi + mkdir data-env + cd data-env + shell: bash - name: Import - run: php ./utils/setup.php --osm-file ../monaco-latest.osm.pbf --osm2pgsql-cache 500 --all - working-directory: build + run: nominatim import --osm-file ../monaco-latest.osm.pbf + shell: bash + working-directory: data-env - name: Import special phrases - run: php ./utils/specialphrases.php --wiki-import | psql -d nominatim - working-directory: build + run: nominatim special-phrases --import-from-wiki + working-directory: data-env + + - name: Check full import + run: nominatim admin --check-database + working-directory: data-env - - name: Check import - run: php ./utils/check_import_finished.php - working-directory: build + - name: Warm up database + run: nominatim admin --warm + working-directory: data-env - name: Run update run: | - php ./utils/update.php --init-updates - php ./utils/update.php --import-osmosis - working-directory: build + nominatim replication --init + nominatim replication --once + working-directory: data-env + + - name: Run reverse-only import + run : nominatim import --osm-file ../monaco-latest.osm.pbf --reverse-only --no-updates + working-directory: data-env + env: + NOMINATIM_DATABASE_DSN: pgsql:dbname=reverse + + - name: Check reverse import + run: nominatim admin --check-database + working-directory: data-env