]> git.openstreetmap.org Git - nominatim.git/blob - .github/workflows/vagrant-scripts.yml
4a8c1cc5380aa5465c15781903fe98c57e697cec
[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     ubuntu:
37         if: false
38         runs-on: ubuntu-latest
39         needs: create-archive
40
41         strategy:
42             matrix:
43                 ubuntu: [18, 20]
44                 include:
45                     - ubuntu: 18
46                       install_mode:
47                     - ubuntu: 20
48                       install_mode: install-apache
49
50         container:
51             image: ubuntu:${{ matrix.ubuntu }}.04
52
53         defaults:
54             run:
55                 shell: sudo -Hu nominatim bash --noprofile --norc -eo pipefail {0}
56
57         steps:
58             - name: Prepare container
59               run: |
60                   export APT_LISTCHANGES_FRONTEND=none
61                   export DEBIAN_FRONTEND=noninteractive
62                   apt-get update -qq
63                   apt-get install -y git sudo wget
64                   ln -snf /usr/share/zoneinfo/$CONTAINER_TIMEZONE /etc/localtime && echo $CONTAINER_TIMEZONE > /etc/timezone
65               shell: bash
66
67             - name: Setup import user
68               run: |
69                   useradd -m nominatim -G sudo
70                   echo '%sudo   ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/nopasswd
71                   echo "/home/nominatim/Nominatim/vagrant/Install-on-Ubuntu-$UBUNTU.sh no $INSTALL_MODE" > /home/nominatim/vagrant.sh
72               shell: bash
73               env:
74                 UBUNTU: ${{ matrix.ubuntu }}
75                 INSTALL_MODE: ${{ matrix.install_mode }}
76
77             - uses: actions/download-artifact@v2
78               with:
79                   name: full-source
80                   path: /home/nominatim
81
82             - name: Get Date
83               id: get-date
84               run: |
85                   echo "::set-output name=date::$(/bin/date -u "+%Y%W")"
86               shell: bash
87
88             - name: Install Nominatim
89               run: |
90                 export USERNAME=nominatim
91                 export USERHOME=/home/nominatim
92                 export NOSYSTEMD=yes
93                 tar xf nominatim-src.tar.bz2
94                 . vagrant.sh
95               working-directory: /home/nominatim
96
97
98             - uses: actions/cache@v2
99               with:
100                   path: |
101                      monaco-latest.osm.pbf
102                   key: nominatim-test-data-${{ steps.get-date.outputs.date }}
103
104             - name: Prepare import environment
105               run: |
106                   if [ ! -f monaco-latest.osm.pbf ]; then
107                       wget --no-verbose https://download.geofabrik.de/europe/monaco-latest.osm.pbf
108                   fi
109                   mkdir data-env data-env-reverse
110                   chown nominatim. data-env data-env-reverse
111               shell: bash
112
113             - name: Import
114               run: nominatim import --osm-file ../monaco-latest.osm.pbf
115               working-directory: data-env
116
117             - name: Import special phrases
118               run: nominatim special-phrases --import-from-wiki
119               working-directory: data-env
120
121             - name: Check full import
122               run: nominatim admin --check-database
123               working-directory: data-env
124
125             - name: Warm up database
126               run: nominatim admin --warm
127               working-directory: data-env
128
129             - name: Run update
130               run: |
131                   sudo apt-get install -y python3-pip
132                   pip3 install --user osmium
133                   nominatim replication --init
134                   NOMINATIM_REPLICATION_MAX_DIFF=1 nominatim replication --once
135               working-directory: data-env
136
137             - name: Run reverse-only import
138               run : |
139                   echo 'NOMINATIM_DATABASE_DSN="pgsql:dbname=reverse"' > .env
140                   nominatim import --osm-file ../monaco-latest.osm.pbf --reverse-only --no-updates
141               working-directory: data-env-reverse
142               env:
143                   NOMINATIM_DATABASE_DSN: pgsql:dbname=reverse
144
145             - name: Check reverse import
146               run: nominatim admin --check-database
147               working-directory: data-env-reverse
148
149
150     centos:
151         runs-on: ubuntu-latest
152         needs: create-archive
153
154         strategy:
155             matrix:
156                 centos: [8]
157
158         container:
159             image: centos:${{ matrix.centos }}
160             env:
161                 LANG: en_US.UTF-8
162
163         defaults:
164             run:
165                 shell: sudo -Hu nominatim bash --noprofile --norc -eo pipefail {0}
166
167         steps:
168             - name: Prepare container
169               run: |
170                   dnf update -y
171                   dnf install -y sudo
172               shell: bash
173
174             - name: Setup import user
175               run: |
176                   useradd -m nominatim
177                   echo 'nominatim   ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/nominiatim
178                   echo "/home/nominatim/Nominatim/vagrant/Install-on-Centos-$CENTOS.sh no" > /home/nominatim/vagrant.sh
179               shell: bash
180               env:
181                 CENTOS: ${{ matrix.centos }}
182
183             - uses: actions/download-artifact@v2
184               with:
185                   name: full-source
186                   path: /home/nominatim
187
188             - name: Get Date
189               id: get-date
190               run: |
191                   echo "::set-output name=date::$(/bin/date -u "+%Y%W")"
192               shell: bash
193
194             - name: Install Nominatim
195               run: |
196                 export USERNAME=nominatim
197                 export USERHOME=/home/nominatim
198                 export NOSYSTEMD=yes
199                 export HAVE_SELINUX=no
200                 tar xf nominatim-src.tar.bz2
201                 ls -al /home/nominatim/Nominatim/data
202                 . vagrant.sh
203               working-directory: /home/nominatim
204
205             - name: Prepare import environment
206               run: |
207                   mv /home/nominatim/Nominatim/test/testdb/apidb-test-data.pbf test.pbf
208                   rm -rf /home/nominatim/Nominatim
209                   mkdir data-env data-env-reverse
210                   chown nominatim. data-env data-env-reverse
211               shell: bash
212
213             - name: Prepare import environment (CentOS)
214               run: |
215                   sudo ln -s /usr/local/bin/nominatim /usr/bin/nominatim
216                   echo NOMINATIM_DATABASE_WEBUSER="apache" > data-env/.env
217                   cp data-env/.env data-env-reverse/.env
218
219             - name: Import
220               run: nominatim import --osm-file ../test.pbf
221               working-directory: data-env
222
223             - name: Import special phrases
224               run: nominatim special-phrases --import-from-wiki
225               working-directory: data-env
226
227             - name: Check full import
228               run: nominatim admin --check-database
229               working-directory: data-env
230
231             - name: Warm up database
232               run: nominatim admin --warm
233               working-directory: data-env
234
235             - name: Run update
236               run: |
237                   pip3 install --user osmium
238                   nominatim replication --init
239                   NOMINATIM_REPLICATION_MAX_DIFF=1 nominatim replication --once
240               working-directory: data-env
241
242             - name: Run reverse-only import
243               run : |
244                   echo 'NOMINATIM_DATABASE_DSN="pgsql:dbname=reverse"' >> .env
245                   nominatim import --osm-file ../test.pbf --reverse-only --no-updates
246               working-directory: data-env-reverse
247               env:
248                   NOMINATIM_DATABASE_DSN: pgsql:dbname=reverse
249
250             - name: Check reverse import
251               run: nominatim admin --check-database
252               working-directory: data-env-reverse