]> git.openstreetmap.org Git - nominatim.git/blob - .github/workflows/vagrant-scripts.yml
4778f71f7365277780ba3d8f01b2b453d4af604c
[nominatim.git] / .github / workflows / vagrant-scripts.yml
1 name: Install and Import
2
3 on: [ push, pull_request ]
4
5 jobs:
6     create-archive:
7         runs-on: ubuntu-latest
8
9         steps:
10             - uses: actions/checkout@v2
11               with:
12                 submodules: true
13
14             - uses: actions/cache@v2
15               with:
16                   path: |
17                      data/country_osm_grid.sql.gz
18                   key: nominatim-country-data-1
19
20             - name: Package tarball
21               run: |
22                   if [ ! -f data/country_osm_grid.sql.gz ]; then
23                       wget --no-verbose -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
24                   fi
25                   cd ..
26                   tar czf nominatim-src.tar.bz2 Nominatim
27                   mv nominatim-src.tar.bz2 Nominatim
28
29             - name: 'Upload Artifact'
30               uses: actions/upload-artifact@v2
31               with:
32                   name: full-source
33                   path: nominatim-src.tar.bz2
34                   retention-days: 1
35
36     install:
37         runs-on: ubuntu-latest
38         needs: create-archive
39
40         strategy:
41             matrix:
42                 name: [Ubuntu-18, Ubuntu-20, Centos-8]
43                 include:
44                     - name: Ubuntu-18
45                       flavour: ubuntu
46                       image: "ubuntu:18.04"
47                       ubuntu: 18
48                       install_mode: install-nginx
49                     - name: Ubuntu-20
50                       flavour: ubuntu
51                       image: "ubuntu:20.04"
52                       ubuntu: 20
53                       install_mode: install-apache
54                     - name: Centos-8
55                       flavour: centos
56                       image: "centos:8"
57
58         container:
59             image: ${{ matrix.image }}
60             env:
61                 LANG: en_US.UTF-8
62
63         defaults:
64             run:
65                 shell: sudo -Hu nominatim bash --noprofile --norc -eo pipefail {0}
66
67         steps:
68             - name: Prepare container (Ubuntu)
69               run: |
70                   export APT_LISTCHANGES_FRONTEND=none
71                   export DEBIAN_FRONTEND=noninteractive
72                   apt-get update -qq
73                   apt-get install -y git sudo wget
74                   ln -snf /usr/share/zoneinfo/$CONTAINER_TIMEZONE /etc/localtime && echo $CONTAINER_TIMEZONE > /etc/timezone
75               shell: bash
76               if: matrix.flavour == 'ubuntu'
77
78             - name: Prepare container (CentOS)
79               run: |
80                   dnf update -y
81                   dnf install -y sudo
82               shell: bash
83               if: matrix.flavour == 'centos'
84
85             - name: Setup import user
86               run: |
87                   useradd -m nominatim
88                   echo 'nominatim   ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/nominiatim
89                   echo "/home/nominatim/Nominatim/vagrant/Install-on-${OS}.sh no $INSTALL_MODE" > /home/nominatim/vagrant.sh
90               shell: bash
91               env:
92                 OS: ${{ matrix.name }}
93                 INSTALL_MODE: ${{ matrix.install_mode }}
94
95             - uses: actions/download-artifact@v2
96               with:
97                   name: full-source
98                   path: /home/nominatim
99
100             - name: Install Nominatim
101               run: |
102                 export USERNAME=nominatim
103                 export USERHOME=/home/nominatim
104                 export NOSYSTEMD=yes
105                 export HAVE_SELINUX=no
106                 tar xf nominatim-src.tar.bz2
107                 ls -al /home/nominatim/Nominatim/data
108                 . vagrant.sh
109               working-directory: /home/nominatim
110
111             - name: Prepare import environment
112               run: |
113                   mv Nominatim/test/testdb/apidb-test-data.pbf test.pbf
114                   rm -rf Nominatim
115                   mkdir data-env-reverse
116               working-directory: /home/nominatim
117
118             - name: Prepare import environment (CentOS)
119               run: |
120                   sudo ln -s /usr/local/bin/nominatim /usr/bin/nominatim
121                   echo NOMINATIM_DATABASE_WEBUSER="apache" > nominatim-project/.env
122                   cp nominatim-project/.env data-env-reverse/.env
123               working-directory: /home/nominatim
124               if: matrix.flavour == 'centos'
125
126             - name: Import
127               run: nominatim import --osm-file ../test.pbf
128               working-directory: /home/nominatim/nominatim-project
129
130             - name: Import special phrases
131               run: nominatim special-phrases --import-from-wiki
132               working-directory: /home/nominatim/nominatim-project
133
134             - name: Check full import
135               run: nominatim admin --check-database
136               working-directory: /home/nominatim/nominatim-project
137
138             - name: Warm up database
139               run: nominatim admin --warm
140               working-directory: /home/nominatim/nominatim-project
141
142             - name: Prepare update (Ubuntu)
143               run: apt-get install -y python3-pip
144               shell: bash
145               if: matrix.flavour == 'ubuntu'
146
147             - name: Run update
148               run: |
149                   pip3 install --user osmium
150                   nominatim replication --init
151                   NOMINATIM_REPLICATION_MAX_DIFF=1 nominatim replication --once
152               working-directory: /home/nominatim/nominatim-project
153
154             - name: Run reverse-only import
155               run : |
156                   echo 'NOMINATIM_DATABASE_DSN="pgsql:dbname=reverse"' >> .env
157                   nominatim import --osm-file ../test.pbf --reverse-only --no-updates
158               working-directory: /home/nominatim/data-env-reverse
159
160             - name: Check reverse import
161               run: nominatim admin --check-database
162               working-directory: /home/nominatim/data-env-reverse