+name: Install scripts
+
+on: [ push, pull_request ]
+
+jobs:
+ create-archive:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+
+ - name: Get Date
+ id: get-date
+ run: |
+ echo "::set-output name=date::$(/bin/date -u "+%Y%W")"
+ shell: bash
+
+ - uses: actions/cache@v2
+ with:
+ path: |
+ data/country_grid.sql.gz
+ key: nominatim-country-data-${{ steps.get-date.outputs.date }}
+
+ - name: Package tarball
+ run: |
+ if [ ! -f data/country_grid.sql.gz ]; then
+ wget --no-verbose -O data/country_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
+ fi
+ cd ..
+ tar cjf nominatim-src.tar.bz2 Nominatim
+ mv nominatim-src.tar.bz2 Nominatim
+
+ - name: 'Upload Artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: full-source
+ path: nominatim-src.tar.bz2
+ retention-days: 1
+
+
+ ubuntu:
+ runs-on: ubuntu-latest
+ needs: create-archive
+
+ strategy:
+ matrix:
+ ubuntu: [18, 20]
+ include:
+ - ubuntu: 18
+ install_mode:
+ - ubuntu: 20
+ install_mode: install-apache
+
+ container:
+ image: ubuntu:${{ matrix.ubuntu }}.04
+
+ defaults:
+ run:
+ shell: sudo -Hu nominatim bash --noprofile --norc -eo pipefail {0}
+
+ steps:
+ - name: Prepare container
+ 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
+
+ - name: Setup import user
+ run: |
+ useradd -m nominatim -G sudo
+ echo '%sudo ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/nopasswd
+ echo "/home/nominatim/Nominatim/vagrant/Install-on-Ubuntu-$UBUNTU.sh no $INSTALL_MODE" > /home/nominatim/vagrant.sh
+ shell: bash
+ env:
+ UBUNTU: ${{ matrix.ubuntu }}
+ INSTALL_MODE: ${{ matrix.install_mode }}
+
+ - uses: actions/download-artifact@v2
+ with:
+ name: full-source
+ path: /home/nominatim
+
+ - name: Get Date
+ id: get-date
+ run: |
+ echo "::set-output name=date::$(/bin/date -u "+%Y%W")"
+ shell: bash
+
+ - name: Install Nominatim
+ run: |
+ export USERNAME=nominatim
+ export USERHOME=/home/nominatim
+ export NOSYSTEMD=yes
+ tar xf nominatim-src.tar.bz2
+ . vagrant.sh
+ working-directory: /home/nominatim
+
+ - uses: actions/cache@v2
+ with:
+ path: |
+ monaco-latest.osm.pbf
+ key: nominatim-test-data-${{ steps.get-date.outputs.date }}
+
+ - name: Prepare import environment
+ run: |
+ if [ ! -f monaco-latest.osm.pbf ]; then
+ wget --no-verbose https://download.geofabrik.de/europe/monaco-latest.osm.pbf
+ fi
+ mkdir data-env data-env-reverse
+ chown nominatim. data-env data-env-reverse
+ shell: bash
+
+ - name: Import
+ run: nominatim import --osm-file ../monaco-latest.osm.pbf
+ working-directory: data-env
+
+ - name: Import special phrases
+ 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: Warm up database
+ run: nominatim admin --warm
+ working-directory: data-env
+
+ - name: Run update
+ run: |
+ sudo apt-get install -y python3-pip
+ pip3 install --user osmium
+ nominatim replication --init
+ NOMINATIM_REPLICATION_MAX_DIFF=1 nominatim replication --once
+ working-directory: data-env
+
+ - name: Run reverse-only import
+ run : |
+ echo 'NOMINATIM_DATABASE_DSN="pgsql:dbname=reverse"' > .env
+ nominatim import --osm-file ../monaco-latest.osm.pbf --reverse-only --no-updates
+ working-directory: data-env-reverse
+ env:
+ NOMINATIM_DATABASE_DSN: pgsql:dbname=reverse
+
+ - name: Check reverse import
+ run: nominatim admin --check-database
+ working-directory: data-env-reverse