diff --git a/.github/actions/build-nominatim/action.yml b/.github/actions/build-nominatim/action.yml index 44c19a22..9bb66df3 100644 --- a/.github/actions/build-nominatim/action.yml +++ b/.github/actions/build-nominatim/action.yml @@ -4,22 +4,25 @@ runs: using: "composite" steps: - - name: Install prerequisits - run: sudo apt-get install -y -qq libboost-system-dev libboost-filesystem-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libproj-dev postgresql-13-postgis-3 postgresql-13-postgis-3-scripts postgresql-server-dev-13 python3-psycopg2 python3-pyosmium - shell: bash + - name: Install prerequisits + run: sudo apt-get install -y -qq libboost-system-dev libboost-filesystem-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libproj-dev python3-psycopg2 python3-pyosmium + shell: bash - - name: Configure - run: mkdir build && cd build && cmake .. - shell: bash + - name: Configure + run: mkdir build && cd build && cmake .. + shell: bash - - name: Build - run: | - make -j2 all - ./utils/setup.php --setup-website - shell: bash - working-directory: build + - name: Build + run: | + make -j2 all + ./utils/setup.php --setup-website + shell: bash + working-directory: build - - name: Download dependencies - run: wget -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz - shell: bash + - name: Download dependencies + 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 + shell: bash diff --git a/.github/actions/setup-postgresql/action.yml b/.github/actions/setup-postgresql/action.yml new file mode 100644 index 00000000..a5716be5 --- /dev/null +++ b/.github/actions/setup-postgresql/action.yml @@ -0,0 +1,24 @@ +name: 'Setup Postgresql and Postgis' + +runs: + using: "composite" + + steps: + - name: Install postgis + run: sudo apt-get install -y -qq postgresql-13-postgis-3 postgresql-13-postgis-3-scripts postgresql-server-dev-13 + shell: bash + + - name: Adapt postgresql configuration + run: | + echo 'fsync = off' | sudo tee /etc/postgresql/13/main/conf.d/local.conf + echo 'synchronous_commit = off' | sudo tee -a /etc/postgresql/13/main/conf.d/local.conf + echo 'full_page_writes = off' | sudo tee -a /etc/postgresql/13/main/conf.d/local.conf + echo 'shared_buffers = 1GB' | sudo tee -a /etc/postgresql/13/main/conf.d/local.conf + shell: bash + + - name: Setup database + run: | + sudo systemctl start postgresql + sudo -u postgres createuser -S www-data + sudo -u postgres createuser -s runner + shell: bash diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index c0db57b2..79830673 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -11,6 +11,20 @@ jobs: 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_osm_grid.sql.gz + monaco-latest.osm.pbf + key: nominatim-data-${{ steps.get-date.outputs.date }} + + - uses: ./.github/actions/setup-postgresql - uses: ./.github/actions/build-nominatim - name: Install test prerequsites @@ -21,13 +35,6 @@ jobs: - name: PHP linting run: phpcs --report-width=120 . - - name: Setup database - run: | - sudo systemctl start postgresql - sudo -u postgres createuser -S www-data - sudo -u postgres createuser -s runner - shell: bash - - name: PHP unit tests run: phpunit ./ working-directory: test/php @@ -44,24 +51,35 @@ jobs: with: submodules: true - - uses: ./.github/actions/build-nominatim - - - name: Download test extract - run: wget --no-verbose https://download.geofabrik.de/europe/monaco-latest.osm.pbf - - - name: Setup database + - name: Get Date + id: get-date run: | - sudo systemctl start postgresql - sudo -u postgres createuser -S www-data - sudo -u postgres createuser -s runner + echo "::set-output name=date::$(/bin/date -u "+%Y%W")" shell: bash - - name: Create configuartion + - uses: actions/cache@v2 + with: + path: | + data/country_osm_grid.sql.gz + monaco-latest.osm.pbf + key: nominatim-data-${{ steps.get-date.outputs.date }} + + - uses: ./.github/actions/setup-postgresql + - uses: ./.github/actions/build-nominatim + + - name: Create configuration run: | echo ' settings/local.php echo " @define('CONST_Pyosmium_Binary', '/usr/lib/python3-pyosmium/pyosmium-get-changes');" >> settings/local.php working-directory: build + - name: Download import data + run: | + if [ ! -f monaco-latest.osm.pbf ]; then + wget --no-verbose https://download.geofabrik.de/europe/monaco-latest.osm.pbf + fi + shell: bash + - name: Import run: php ./utils/setup.php --osm-file ../monaco-latest.osm.pbf --osm2pgsql-cache 500 --all working-directory: build