adapt to release 4.3.4 #1254
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI Tests | |
on: [ push, pull_request ] | |
jobs: | |
create-archive: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
data/country_osm_grid.sql.gz | |
key: nominatim-country-data-1 | |
- name: Package tarball | |
run: | | |
if [ ! -f data/country_osm_grid.sql.gz ]; then | |
wget --no-verbose -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz | |
fi | |
cd .. | |
tar czf nominatim-src.tar.bz2 Nominatim | |
mv nominatim-src.tar.bz2 Nominatim | |
- name: 'Upload Artifact' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: full-source | |
path: nominatim-src.tar.bz2 | |
retention-days: 1 | |
tests: | |
needs: create-archive | |
strategy: | |
matrix: | |
ubuntu: [18, 20, 22] | |
include: | |
- ubuntu: 18 | |
postgresql: 9.6 | |
postgis: 2.5 | |
pytest: pytest | |
php: 7.2 | |
- ubuntu: 20 | |
postgresql: 13 | |
postgis: 3 | |
pytest: py.test-3 | |
php: 7.4 | |
- ubuntu: 22 | |
postgresql: 15 | |
postgis: 3 | |
pytest: py.test-3 | |
php: 8.1 | |
runs-on: ubuntu-${{ matrix.ubuntu }}.04 | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: full-source | |
- name: Unpack Nominatim | |
run: tar xf nominatim-src.tar.bz2 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
tools: phpunit, phpcs, composer | |
ini-values: opcache.jit=disable | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.6 | |
if: matrix.ubuntu == 18 | |
- uses: ./Nominatim/.github/actions/setup-postgresql | |
with: | |
postgresql-version: ${{ matrix.postgresql }} | |
postgis-version: ${{ matrix.postgis }} | |
- uses: ./Nominatim/.github/actions/build-nominatim | |
with: | |
ubuntu: ${{ matrix.ubuntu }} | |
- name: Install test prerequsites | |
run: sudo apt-get install -y -qq python3-pytest python3-behave | |
if: matrix.ubuntu == 20 | |
- name: Install test prerequsites | |
run: pip3 install pylint pytest behave==1.2.6 | |
if: ${{ (matrix.ubuntu == 18) || (matrix.ubuntu == 22) }} | |
- name: Install test prerequsites | |
run: sudo apt-get install -y -qq python3-pytest | |
if: matrix.ubuntu == 22 | |
- name: Install latest pylint/mypy | |
run: pip3 install -U pylint mypy types-PyYAML types-jinja2 types-psycopg2 types-psutil types-requests typing-extensions | |
- name: PHP linting | |
run: phpcs --report-width=120 . | |
working-directory: Nominatim | |
- name: Python linting | |
run: pylint nominatim | |
working-directory: Nominatim | |
- name: Python static typechecking | |
run: mypy --strict nominatim | |
working-directory: Nominatim | |
- name: PHP unit tests | |
run: phpunit ./ | |
working-directory: Nominatim/test/php | |
if: ${{ (matrix.ubuntu == 20) || (matrix.ubuntu == 22) }} | |
- name: Python unit tests | |
run: $PYTEST test/python | |
working-directory: Nominatim | |
env: | |
PYTEST: ${{ matrix.pytest }} | |
- name: BDD tests | |
run: | | |
behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build --format=progress3 | |
working-directory: Nominatim/test/bdd | |
legacy-test: | |
needs: create-archive | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: full-source | |
- name: Unpack Nominatim | |
run: tar xf nominatim-src.tar.bz2 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 7.4 | |
- uses: ./Nominatim/.github/actions/setup-postgresql | |
with: | |
postgresql-version: 13 | |
postgis-version: 3 | |
- name: Install Postgresql server dev | |
run: sudo apt-get install postgresql-server-dev-13 | |
- uses: ./Nominatim/.github/actions/build-nominatim | |
with: | |
ubuntu: 20 | |
cmake-args: -DBUILD_MODULE=on | |
- name: Install test prerequsites | |
run: sudo apt-get install -y -qq python3-behave | |
- name: BDD tests (legacy tokenizer) | |
run: | | |
behave -DREMOVE_TEMPLATE=1 -DBUILDDIR=$GITHUB_WORKSPACE/build -DTOKENIZER=legacy --format=progress3 | |
working-directory: Nominatim/test/bdd | |
install: | |
runs-on: ubuntu-latest | |
needs: create-archive | |
strategy: | |
matrix: | |
name: [Ubuntu-18, Ubuntu-20, Ubuntu-22] | |
include: | |
- name: Ubuntu-18 | |
flavour: ubuntu | |
image: "ubuntu:18.04" | |
ubuntu: 18 | |
install_mode: install-nginx | |
- name: Ubuntu-20 | |
flavour: ubuntu | |
image: "ubuntu:20.04" | |
ubuntu: 20 | |
install_mode: install-apache | |
- name: Ubuntu-22 | |
flavour: ubuntu | |
image: "ubuntu:22.04" | |
ubuntu: 22 | |
install_mode: install-apache | |
container: | |
image: ${{ matrix.image }} | |
env: | |
LANG: en_US.UTF-8 | |
defaults: | |
run: | |
shell: sudo -Hu nominatim bash --noprofile --norc -eo pipefail {0} | |
steps: | |
- name: Prepare container (Ubuntu) | |
run: | | |
export APT_LISTCHANGES_FRONTEND=none | |
export DEBIAN_FRONTEND=noninteractive | |
apt-get update -qq | |
apt-get install -y git sudo wget | |
ln -snf /usr/share/zoneinfo/$CONTAINER_TIMEZONE /etc/localtime && echo $CONTAINER_TIMEZONE > /etc/timezone | |
shell: bash | |
if: matrix.flavour == 'ubuntu' | |
- name: Prepare container (CentOS) | |
run: | | |
dnf update -y | |
dnf install -y sudo glibc-langpack-en | |
shell: bash | |
if: matrix.flavour == 'centos' | |
- name: Setup import user | |
run: | | |
useradd -m nominatim | |
echo 'nominatim ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/nominiatim | |
echo "/home/nominatim/Nominatim/vagrant/Install-on-${OS}.sh no $INSTALL_MODE" > /home/nominatim/vagrant.sh | |
shell: bash | |
env: | |
OS: ${{ matrix.name }} | |
INSTALL_MODE: ${{ matrix.install_mode }} | |
- uses: actions/download-artifact@v3 | |
with: | |
name: full-source | |
path: /home/nominatim | |
- name: Install Nominatim | |
run: | | |
export USERNAME=nominatim | |
export USERHOME=/home/nominatim | |
export NOSYSTEMD=yes | |
export HAVE_SELINUX=no | |
tar xf nominatim-src.tar.bz2 | |
. vagrant.sh | |
working-directory: /home/nominatim | |
- name: Prepare import environment | |
run: | | |
mv Nominatim/test/testdb/apidb-test-data.pbf test.pbf | |
rm -rf Nominatim | |
mkdir data-env-reverse | |
working-directory: /home/nominatim | |
- name: Prepare import environment (CentOS) | |
run: | | |
sudo ln -s /usr/local/bin/nominatim /usr/bin/nominatim | |
echo NOMINATIM_DATABASE_WEBUSER="apache" > nominatim-project/.env | |
cp nominatim-project/.env data-env-reverse/.env | |
working-directory: /home/nominatim | |
if: matrix.flavour == 'centos' | |
- name: Print version | |
run: nominatim --version | |
working-directory: /home/nominatim/nominatim-project | |
- name: Collect host OS information | |
run: nominatim admin --collect-os-info | |
working-directory: /home/nominatim/nominatim-project | |
- name: Import | |
run: nominatim import --osm-file ../test.pbf | |
working-directory: /home/nominatim/nominatim-project | |
- name: Import special phrases | |
run: nominatim special-phrases --import-from-wiki | |
working-directory: /home/nominatim/nominatim-project | |
- name: Check full import | |
run: nominatim admin --check-database | |
working-directory: /home/nominatim/nominatim-project | |
- name: Warm up database | |
run: nominatim admin --warm | |
working-directory: /home/nominatim/nominatim-project | |
- name: Prepare update (Ubuntu) | |
run: apt-get install -y python3-pip | |
shell: bash | |
if: matrix.flavour == 'ubuntu' | |
- name: Run update | |
run: | | |
pip3 install --user osmium | |
nominatim replication --init | |
NOMINATIM_REPLICATION_MAX_DIFF=1 nominatim replication --once | |
working-directory: /home/nominatim/nominatim-project | |
- name: Clean up database | |
run: nominatim refresh --postcodes --word-tokens | |
working-directory: /home/nominatim/nominatim-project | |
- name: Run reverse-only import | |
run : | | |
echo 'NOMINATIM_DATABASE_DSN="pgsql:dbname=reverse"' >> .env | |
nominatim import --osm-file ../test.pbf --reverse-only --no-updates | |
working-directory: /home/nominatim/data-env-reverse | |
- name: Check reverse-only import | |
run: nominatim admin --check-database | |
working-directory: /home/nominatim/data-env-reverse | |
- name: Clean up database (reverse-only import) | |
run: nominatim refresh --postcodes --word-tokens | |
working-directory: /home/nominatim/nominatim-project |